Sylvain Mahé Le site Web Retour à l'accueil Principes Partager mes idées et mes projets librement et gratuitement. Thématiques Mécatronique du système embarqué, artisanat pluridisciplinaire, bricolage commun, esthétique logicielle et matérielle, minimalisme fonctionnel, conceptualisation alternative, rédaction technique et littéraire, partage pédagogique documenté. Contact ✆ Téléphone : 06.45.49.96.98
✉ E-mail : contact@sylvainmahe.site
✎ Site Web : sylvainmahe.site
Écriture de la page : Sylvain Mahé
L'automate programmable MODULABLE 32 Ce nouvel automate programmable associé au programme MODULE (c'est-à-dire compatible dans les fonctionnalités et les entrées/sorties) est un calculateur embarqué qui est chargé d'exécuter les instructions machine de votre programme, il peut être équipé des microcontrôleurs ATmega164P, ATmega324P, ATmega644P, ou ATmega1284P. Le plan de fabrication de ce circuit imprimé est disponible au format de fichiers Gerber ici : Télécharger le plan de fabrication de l'automate programmable MODULABLE 32 (.zip, 401 octets) Selon si votre projet requiert plus ou moins de mémoire Flash, EEPROM, ou SRAM, 4 microcontrôleurs différents peuvent être implantés sur la carte MODULABLE 32 : Microcontrôleur ATmega164P :
- Mémoire Flash = 16384 octets (16Kio)
- Mémoire EEPROM = 512 octets (0.5Kio)
- Mémoire SRAM = 1024 octets (1Kio)

Microcontrôleur ATmega324P :
- Mémoire Flash = 32768 octets (32Kio)
- Mémoire EEPROM = 1024 octets (1Kio)
- Mémoire SRAM = 2048 octets (2Kio)

Microcontrôleur ATmega644P :
- Mémoire Flash = 65536 octets (64Kio)
- Mémoire EEPROM = 2048 octets (2Kio)
- Mémoire SRAM = 4096 octets (4Kio)

Microcontrôleur ATmega1284P :
- Mémoire Flash = 131072 octets (128Kio)
- Mémoire EEPROM = 4096 octets (4Kio)
- Mémoire SRAM = 16384 octets (16Kio)
L'automate programmable MODULABLE 32 est le cœur de mes montages électroniques, il contient dans le microcontrôleur le programme binaire écrit à l'origine en langage C++ à l'aide de MODULE permettant de gérer toute la logique combinatoire et mathématique du montage. En comparaison à l'automate programmable MODULABLE 20, le MODULABLE 32 est bien plus intéressant sur bien des aspects. En effet, il dispose de 32 entrées/sorties groupées en 4 blocs de 8 broches chacun (logique des ports respectivement B, D, C et A) qui sont des GPIO, et peut développer un courant jusqu'à 8A en pointe à l'aide d'un régulateur de tension LM2940 assisté par un transistor bipolaire MJE15033. L'automate programmable MODULABLE 32 (tout comme le MODULABLE 20) peut être alimenté de +6V jusqu'à +26V, ce qui est favorable à une batterie Lithium-ion polymère (LiPo) de 2S à 6S standard (+8.4V à +25.2V), ou encore à des sources d'alimentation assez communes de +12V ou +24V en courant continu. Néanmoins selon le courant demandé, le circuit de régulation de tension embarqué dans cet automate programmable pourra délivrer une tension stable de +5V via une tension d'alimentation supérieure à +5V mais inférieure à +6V, ceci grâce aux faibles pertes (dropout) du régulateur de tension LM2940 couplé au transistor bipolaire MJE15033. À noter que le microcontrôleur fonctionnera normalement (dans ses spécifications techniques) avec des tensions d'alimentation bien inférieures à +5V en entrée, ce qui est sécuritaire notamment pour certains systèmes embarqués dont la tension d'alimentation est critique. L'utilisation d'un régulateur de tension linéaire a plusieurs avantages par rapport au régulateur de tension à découpage : - Bruit électrique très faible.
- Aucun bruit acoustique audible.
- Grande stabilité en tension de sortie.
- Bonne régulation lorsque la tension d'entrée est proche de la tension de sortie.
- Grande plage de tensions d'entrée.
Cette alimentation robuste ainsi que les caractéristiques inhérentes aux microcontrôleurs qui peuvent être embarqués sur cette carte, élargissent le domaine d'application de l'automate programmable MODULABLE 32, ce qui permet entre autres de réaliser des projets de grande complexité mathématique et logique, et de haute fiabilité. Les caractéristiques de la carte :
- Microcontrôleur ATmega164P, Atmega324P, Atmega644P ou ATmega1284P.
- Régulateur de tension LM2940 +5V 1A assisté par un transistor bipolaire MJE15033 8A.
- 2 ports POWER (alimentation) de +6V à +26V (broches ou connecteurs à braser).
- 1 port ISP (programmation in-situ) pour la programmation du microcontrôleur.
- 32 ports GPIO (entrées/sorties pour un usage général), avec 32 broches +5V (pôles positifs) et 32 broches GND (masses) pour l'alimentation des périphériques.
- Fréquence de fonctionnement : 16MHz.
- Dimensions : 88.9mm x 40.64mm.
- Entre-axes de fixations : 81.28mm x 33.02mm.
- Fixations par vis M3 (perçages diamètre 3.2mm).
Liste des composants : 1x Microcontrôleur ATMEGA164P (boîtier DIP-40)
ou 1x Microcontrôleur ATMEGA324P (boîtier DIP-40)
ou 1x Microcontrôleur ATMEGA644P (boîtier DIP-40)
ou 1x Microcontrôleur ATMEGA1284P (boîtier DIP-40)
1x Régulateur de tension LM2940 (version fixée +5V, boîtier TO-220)
1x Résistance 10Ω ± 1% 250mW
1x Résistance 200Ω ± 1% 250mW
1x Résistance 10kΩ ± 1% 250mW
2x Condensateurs céramique 18pF >=10V (pas 5.08mm)
4x Condensateurs céramique 100nF >=10V (pas 5.08mm)
1x Condensateur électrolytique tantale 22μF >=10V (pas 2.54mm)
3x Condensateurs électrolytiques aluminium 100μF >=10V (pas 2mm)
1x Condensateur électrolytique aluminium 100μF >=52V (pas 2.5mm)
1x Inductance self 10μH 100mA (boîtier axial)
1x Diode Schottky 1N5819
1x Transistor bipolaire MJE15033 (boîtier TO-220)
1x Quartz 16MHz (pas 5.08mm, profil bas)
1x Del 3mm (pas 2.54mm, couleur de votre choix)
1x Support DIP-40 600mil
98x Broches mâles (pas 2.54mm)
1x Dissipateur thermique (pour boîtier TO-220)
À gauche les composants nécessaires, à droite le PCB nu : Les ports d'entrée/sortie de l'automate programmable : La fonction principale des ports d'entrée/sortie de l'automate programmable est la GPIO (pour "General Purpose Input/Output"), c'est-à-dire des entrées/sorties pour un usage général. Mais certains ports d'entrée/sortie sont reliés en interne aux microcontrôleurs à des fonctions matérielles spécifiques, comme par exemple USART, SPI, TWI, PWM, ADC, etc... Dans tous les cas l'usage de ces ports est détaillé ci-dessous et pour les classes les utilisant dans la section "La documentation du programme MODULE" en page d'accueil de mon site Web. Correspondance des ports GPIO (automate programmable par rapport aux microcontrôleurs) : - Port GPIO 1 = PB0
- Port GPIO 2 = PB1
- Port GPIO 3 = PB2
- Port GPIO 4 = PB3
- Port GPIO 5 = PB4
- Port GPIO 6 = PB5
- Port GPIO 7 = PB6
- Port GPIO 8 = PB7
- Port GPIO 9 = PD0
- Port GPIO 10 = PD1
- Port GPIO 11 = PD2
- Port GPIO 12 = PD3
- Port GPIO 13 = PD4
- Port GPIO 14 = PD5
- Port GPIO 15 = PD6
- Port GPIO 16 = PD7
- Port GPIO 17 = PC0
- Port GPIO 18 = PC1
- Port GPIO 19 = PC2
- Port GPIO 20 = PC3
- Port GPIO 21 = PC4
- Port GPIO 22 = PC5
- Port GPIO 23 = PC6
- Port GPIO 24 = PC7
- Port GPIO 25 = PA7
- Port GPIO 26 = PA6
- Port GPIO 27 = PA5
- Port GPIO 28 = PA4
- Port GPIO 29 = PA3
- Port GPIO 30 = PA2
- Port GPIO 31 = PA1
- Port GPIO 32 = PA0
Ports de l'automate programmable concernés par les interruptions : - Port GPIO 3 (PB2) = INT2 (interrupt 2)
- Port GPIO 11 (PD2) = INT0 (interrupt 0)
- Port GPIO 12 (PD3) = INT1 (interrupt 1)
Ports de l'automate programmable concernés par l'USART : - Port GPIO 9 (PD0) = RXD (receive data)
- Port GPIO 10 (PD1) = TXD (transmit data)
Ports de l'automate programmable concernés par le SPI : - Port GPIO 5 (PB4) = SS (slave select)
- Port GPIO 6 (PB5) = MOSI (master output slave input)
- Port GPIO 7 (PB6) = MISO (master input slave output)
- Port GPIO 8 (PB7) = SCK (serial clock)
Ports de l'automate programmable concernés par le TWI : - Port GPIO 17 (PC0) = SCL (serial clock line)
- Port GPIO 18 (PC1) = SDA (serial data line)
Ports de l'automate programmable concernés par la lecture du PWM : - Port GPIO 1 (PB0) = PCINT8 (pin change interrupt 8)
- Port GPIO 2 (PB1) = PCINT9 (pin change interrupt 9)
- Port GPIO 3 (PB2) = PCINT10 (pin change interrupt 10)
- Port GPIO 4 (PB3) = PCINT11 (pin change interrupt 11)
- Port GPIO 5 (PB4) = PCINT12 (pin change interrupt 12)
- Port GPIO 6 (PB5) = PCINT13 (pin change interrupt 13)
- Port GPIO 7 (PB6) = PCINT14 (pin change interrupt 14)
- Port GPIO 8 (PB7) = PCINT15 (pin change interrupt 15)
- Port GPIO 9 (PD0) = PCINT24 (pin change interrupt 24)
- Port GPIO 10 (PD1) = PCINT25 (pin change interrupt 25)
- Port GPIO 11 (PD2) = PCINT26 (pin change interrupt 26)
- Port GPIO 12 (PD3) = PCINT27 (pin change interrupt 27)
- Port GPIO 13 (PD4) = PCINT28 (pin change interrupt 28)
- Port GPIO 14 (PD5) = PCINT29 (pin change interrupt 29)
- Port GPIO 15 (PD6) = PCINT30 (pin change interrupt 30)
- Port GPIO 16 (PD7) = PCINT31 (pin change interrupt 31)
- Port GPIO 17 (PC0) = PCINT16 (pin change interrupt 16)
- Port GPIO 18 (PC1) = PCINT17 (pin change interrupt 17)
- Port GPIO 19 (PC2) = PCINT18 (pin change interrupt 18)
- Port GPIO 20 (PC3) = PCINT19 (pin change interrupt 19)
- Port GPIO 21 (PC4) = PCINT20 (pin change interrupt 20)
- Port GPIO 22 (PC5) = PCINT21 (pin change interrupt 21)
- Port GPIO 23 (PC6) = PCINT22 (pin change interrupt 22)
- Port GPIO 24 (PC7) = PCINT23 (pin change interrupt 23)
- Port GPIO 25 (PA7) = PCINT7 (pin change interrupt 7)
- Port GPIO 26 (PA6) = PCINT6 (pin change interrupt 6)
- Port GPIO 27 (PA5) = PCINT5 (pin change interrupt 5)
- Port GPIO 28 (PA4) = PCINT4 (pin change interrupt 4)
- Port GPIO 29 (PA3) = PCINT3 (pin change interrupt 3)
- Port GPIO 30 (PA2) = PCINT2 (pin change interrupt 2)
- Port GPIO 31 (PA1) = PCINT1 (pin change interrupt 1)
- Port GPIO 32 (PA0) = PCINT0 (pin change interrupt 0)
Ports de l'automate programmable concernés par la génération du PWM : - Port GPIO 1 (PB0)
- Port GPIO 2 (PB1)
- Port GPIO 3 (PB2)
- Port GPIO 4 (PB3)
- Port GPIO 5 (PB4)
- Port GPIO 6 (PB5)
- Port GPIO 7 (PB6)
- Port GPIO 8 (PB7)
- Port GPIO 9 (PD0)
- Port GPIO 10 (PD1)
- Port GPIO 11 (PD2)
- Port GPIO 12 (PD3)
- Port GPIO 13 (PD4)
- Port GPIO 14 (PD5)
- Port GPIO 15 (PD6)
- Port GPIO 16 (PD7)
- Port GPIO 17 (PC0)
- Port GPIO 18 (PC1)
- Port GPIO 19 (PC2)
- Port GPIO 20 (PC3)
- Port GPIO 21 (PC4)
- Port GPIO 22 (PC5)
- Port GPIO 23 (PC6)
- Port GPIO 24 (PC7)
- Port GPIO 25 (PA7)
- Port GPIO 26 (PA6)
- Port GPIO 27 (PA5)
- Port GPIO 28 (PA4)
- Port GPIO 29 (PA3)
- Port GPIO 30 (PA2)
- Port GPIO 31 (PA1)
- Port GPIO 32 (PA0)
Ports de l'automate programmable concernés par la génération purement matérielle du PWM : - Port GPIO 13 (PD4) = OC1B (output compare 1B)
- Port GPIO 14 (PD5) = OC1A (output compare 1A)

Spécificité pour le microcontrôleur ATmega1284P :
- Port GPIO 7 (PB6) = OC3A (output compare 3A)
- Port GPIO 8 (PB7) = OC3B (output compare 3B)
- Port GPIO 13 (PD4) = OC1B (output compare 1B)
- Port GPIO 14 (PD5) = OC1A (output compare 1A)
Ports de l'automate programmable concernés par l'ADC : - Port GPIO 25 (PA7) = ADC7 (analog to digital converter 7)
- Port GPIO 26 (PA6) = ADC6 (analog to digital converter 6)
- Port GPIO 27 (PA5) = ADC5 (analog to digital converter 5)
- Port GPIO 28 (PA4) = ADC4 (analog to digital converter 4)
- Port GPIO 29 (PA3) = ADC3 (analog to digital converter 3)
- Port GPIO 30 (PA2) = ADC2 (analog to digital converter 2)
- Port GPIO 31 (PA1) = ADC1 (analog to digital converter 1)
- Port GPIO 32 (PA0) = ADC0 (analog to digital converter 0)
Ports de l'automate programmable concernés par la génération de sons : - Port GPIO 1 (PB0)
- Port GPIO 2 (PB1)
- Port GPIO 3 (PB2)
- Port GPIO 4 (PB3)
- Port GPIO 5 (PB4)
- Port GPIO 6 (PB5)
- Port GPIO 7 (PB6)
- Port GPIO 8 (PB7)
- Port GPIO 9 (PD0)
- Port GPIO 10 (PD1)
- Port GPIO 11 (PD2)
- Port GPIO 12 (PD3)
- Port GPIO 13 (PD4)
- Port GPIO 14 (PD5)
- Port GPIO 15 (PD6)
- Port GPIO 16 (PD7)
- Port GPIO 17 (PC0)
- Port GPIO 18 (PC1)
- Port GPIO 19 (PC2)
- Port GPIO 20 (PC3)
- Port GPIO 21 (PC4)
- Port GPIO 22 (PC5)
- Port GPIO 23 (PC6)
- Port GPIO 24 (PC7)
- Port GPIO 25 (PA7)
- Port GPIO 26 (PA6)
- Port GPIO 27 (PA5)
- Port GPIO 28 (PA4)
- Port GPIO 29 (PA3)
- Port GPIO 30 (PA2)
- Port GPIO 31 (PA1)
- Port GPIO 32 (PA0)
Précautions pour l'assemblage : Il convient pour assembler cette carte électronique de respecter un ordre lors de la brasure de certains composants, notamment ceux implantés en dessous du microcontrôleur : Un pliage spécifique doit être effectué avec une pince adéquate afin que les condensateurs viennent se loger sans toucher le microcontrôleur et son support : Une fois cette opération réalisée l'assemblage se fait normalement.