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 20 Cet 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 ATmega48P, ATmega88P, ATmega168P, ou ATmega328P. 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 20 (.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 20 : Microcontrôleur ATmega48P :
- Mémoire Flash = 4096 octets (4Kio)
- Mémoire EEPROM = 256 octets (0.25Kio)
- Mémoire SRAM = 512 octets (0.5Kio)

Microcontrôleur ATmega88P :
- Mémoire Flash = 8192 octets (8Kio)
- Mémoire EEPROM = 512 octets (0.5Kio)
- Mémoire SRAM = 1024 octets (1Kio)

Microcontrôleur ATmega168P :
- Mémoire Flash = 16384 octets (16Kio)
- Mémoire EEPROM = 512 octets (0.5Kio)
- Mémoire SRAM = 1024 octets (1Kio)

Microcontrôleur ATmega328P :
- Mémoire Flash = 32768 octets (32Kio)
- Mémoire EEPROM = 1024 octets (1Kio)
- Mémoire SRAM = 2048 octets (2Kio)
L'antériorité de ce projet veut que j'ai débuté la programmation de MODULE avec le microcontrôleur ATmega328P et un prototype qui ressemble beaucoup au MODULABLE 20. Mais depuis j'ai conçu un automate programmable, le MODULABLE 32, plus intéressant sur bons nombres de points. Cet automate programmable en comparaison au MODULABLE 32 garde néanmoins l'avantage d'être moins onéreux en ce qui concerne le coût des composants, de dimension (longueur seulement) légèrement plus petite, ainsi que plus rapide à assembler. Cet automate programmable 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. À 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.
Les caractéristiques de la carte :
- Microcontrôleur ATmega48P, ATmega88P, ATmega168P ou ATmega328P.
- Régulateur de tension LM2940 +5V 1A.
- 1 port POWER (alimentation) de +6V à +26V.
- 1 port ISP (programmation in-situ) pour la programmation du microcontrôleur.
- 20 ports GPIO (entrées/sorties pour un usage général), avec 20 broches +5V (pôles positifs) et 20 broches GND (masses) pour l'alimentation des périphériques.
- Fréquence de fonctionnement : 16MHz.
- Dimensions : 66.04mm x 40.64mm.
- Entre-axes de fixations : 58.42mm x 33.02mm.
- Fixations par vis M3 (perçages diamètre 3.2mm).
Liste des composants : 1x Microcontrôleur ATMEGA48P (boîtier DIP-28)
ou 1x Microcontrôleur ATMEGA88P (boîtier DIP-28)
ou 1x Microcontrôleur ATMEGA168P (boîtier DIP-28)
ou 1x Microcontrôleur ATMEGA328P (boîtier DIP-28)
1x Régulateur de tension LM2940 (version fixée +5V, boîtier TO-220)
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 aluminium 10μF >=52V (pas 2mm)
1x Condensateur électrolytique tantale 22μF >=10V (pas 2.54mm)
1x Condensateur électrolytique aluminium 100μF >=10V (pas 2mm)
1x Inductance self 10μH 100mA (boîtier axial)
1x Diode Schottky 1N5819
1x Quartz 16MHz (pas 5.08mm)
1x Del 3mm (pas 2.54mm, couleur de votre choix)
1x Support DIP-28 300mil
68x 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 = PD0
- Port GPIO 2 = PD1
- Port GPIO 3 = PD2
- Port GPIO 4 = PD3
- Port GPIO 5 = PD4
- Port GPIO 6 = PD5
- Port GPIO 7 = PD6
- Port GPIO 8 = PD7
- Port GPIO 9 = PB0
- Port GPIO 10 = PB1
- Port GPIO 11 = PB2
- Port GPIO 12 = PB3
- Port GPIO 13 = PB4
- Port GPIO 14 = PB5
- Port GPIO 15 = PC0
- Port GPIO 16 = PC1
- Port GPIO 17 = PC2
- Port GPIO 18 = PC3
- Port GPIO 19 = PC4
- Port GPIO 20 = PC5
Ports de l'automate programmable concernés par les interruptions : - Port GPIO 3 (PD2) = INT0 (interrupt 0)
- Port GPIO 4 (PD3) = INT1 (interrupt 1)
Ports de l'automate programmable concernés par l'USART : - Port GPIO 1 (PD0) = RXD (receive data)
- Port GPIO 2 (PD1) = TXD (transmit data)
Ports de l'automate programmable concernés par le SPI : - Port GPIO 11 (PB2) = SS (slave select)
- Port GPIO 12 (PB3) = MOSI (master output slave input)
- Port GPIO 13 (PB4) = MISO (master input slave output)
- Port GPIO 14 (PB5) = SCK (serial clock)
Ports de l'automate programmable concernés par le TWI : - Port GPIO 19 (PC4) = SDA (serial data line)
- Port GPIO 20 (PC5) = SCL (serial clock line)
Ports de l'automate programmable concernés par la lecture du PWM : - Port GPIO 1 (PD0) = PCINT16 (pin change interrupt 16)
- Port GPIO 2 (PD1) = PCINT17 (pin change interrupt 17)
- Port GPIO 3 (PD2) = PCINT18 (pin change interrupt 18)
- Port GPIO 4 (PD3) = PCINT19 (pin change interrupt 19)
- Port GPIO 5 (PD4) = PCINT20 (pin change interrupt 20)
- Port GPIO 6 (PD5) = PCINT21 (pin change interrupt 21)
- Port GPIO 7 (PD6) = PCINT22 (pin change interrupt 22)
- Port GPIO 8 (PD7) = PCINT23 (pin change interrupt 23)
- Port GPIO 9 (PB0) = PCINT0 (pin change interrupt 0)
- Port GPIO 10 (PB1) = PCINT1 (pin change interrupt 1)
- Port GPIO 11 (PB2) = PCINT2 (pin change interrupt 2)
- Port GPIO 12 (PB3) = PCINT3 (pin change interrupt 3)
- Port GPIO 13 (PB4) = PCINT4 (pin change interrupt 4)
- Port GPIO 14 (PB5) = PCINT5 (pin change interrupt 5)
- Port GPIO 15 (PC0) = PCINT8 (pin change interrupt 8)
- Port GPIO 16 (PC1) = PCINT9 (pin change interrupt 9)
- Port GPIO 17 (PC2) = PCINT10 (pin change interrupt 10)
- Port GPIO 18 (PC3) = PCINT11 (pin change interrupt 11)
- Port GPIO 19 (PC4) = PCINT12 (pin change interrupt 12)
- Port GPIO 20 (PC5) = PCINT13 (pin change interrupt 13)
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 10 (PB1) = OC1A (output compare 1A)
- Port GPIO 11 (PB2) = OC1B (output compare 1B)
Ports de l'automate programmable concernés par l'ADC : - Port GPIO 15 (PC0) = ADC0 (analog to digital converter 0)
- Port GPIO 16 (PC1) = ADC1 (analog to digital converter 1)
- Port GPIO 17 (PC2) = ADC2 (analog to digital converter 2)
- Port GPIO 18 (PC3) = ADC3 (analog to digital converter 3)
- Port GPIO 19 (PC4) = ADC4 (analog to digital converter 4)
- Port GPIO 20 (PC5) = ADC5 (analog to digital converter 5)
Ports de l'automate programmable concernés par la génération de sons : - Port GPIO 1 (PD0)
- Port GPIO 2 (PD1)
- Port GPIO 3 (PD2)
- Port GPIO 4 (PD3)
- Port GPIO 5 (PD4)
- Port GPIO 6 (PD5)
- Port GPIO 7 (PD6)
- Port GPIO 8 (PD7)
- Port GPIO 9 (PB0)
- Port GPIO 10 (PB1)
- Port GPIO 11 (PB2)
- Port GPIO 12 (PB3)
- Port GPIO 13 (PB4)
- Port GPIO 14 (PB5)
- Port GPIO 15 (PC0)
- Port GPIO 16 (PC1)
- Port GPIO 17 (PC2)
- Port GPIO 18 (PC3)
- Port GPIO 19 (PC4)
- Port GPIO 20 (PC5)
Archives : Quelques photos du prototype à l'époque où je débutais la programmation de MODULE :