Vous êtes sur la page 1sur 9

Partie3 :

B : Le microcontrleur :
Nous avons choisi le microcontrleur Atmega328 datmel autour duquel est ralise la
carte arduino uno que nous avons utilis en travaux pratiques dinitiation aux systmes
programmables.
Un microcontrleur est un circuit intgr (VLSI :Very Large Scale Integration) qui regroupe
lui seul un microprocesseur, des mmoires est des circuits interfaces pour le dialogue ou
changes dinformations avec ses priphrique (le monde extrieur).
1- Caractristique techniques gnrales du circuit :
Cest un microcontrleur ATMEL de la famille AVR 8bits, il a les caractristiques suivantes:
1 mmoire FLASH = mmoire programme de 32Ko
1 mmoire SRAM = mmoire donnes (volatiles) 2Ko
1 mmoire EEPROM = donnes (non volatiles) 1Ko
3 Ports entres-sorties Tout Ou Rien = PortB, PortC, PortD (soit 23 broches en tout E/S ou
(I/O).
3 Timers/Counters : Timer0 et Timer2 (comptage 8 bits), Timer1 (comptage 16bits) Chaque
timer peut tre utilis pour gnrer deux signaux PWM. (6 broches OCxA/OCxB) , x=0 ou 1
ou 2.
1Convertisseur analogique numrique 10bits canaux multiplxs.
Gestion de linterface I2C (TWI Two Wire Interface)
Gestion de linterface (USART) = mission/rception srie via les broches TXD/RXD
Gestion de linterface SPI
Comparateur Analogique qui peut dclencher des interruptions.
Watchdog Timer (chien de garde) programmable.
2- Synoptique interne du circuit Atmega328:

3- Boitier (vue externe):


a- Botier

Port D

Port C

Port B
2

Descriptions des broches

b- Spcification des broches

Certaines broches peuvent avoir


plusieurs fonctions diffrentes
choisies par programmation :
PWM = 6 broches OC0A(PD6),
OC0B(PD5), OC1A(PB1),
OC1B(PB3), OC2A(PB3),
OC2B(PD3)
Port B (PB7.. PB0) : le Port B
est un port d'entre-sortie 8 bits
bidirectionnel. Il sert aussi
comme oscillateur pour le
Timer/Compteur2 sur les broches
PB6, PB7 ou de port pour la
communication serie SPI (sur les
broches PB3, PB4) ; SPI veut
dire Serial Peripheral Interface : cun protocole de communication srie synchrone utilis pour
la communication du microcontrleur avec un autre composant (ou un autre microcontrleur)
sur des courtes distances.
La liaison SPI utilise 3 lignes :
MISO (patte PB4) : Master Input Slave Output, PB4 est une entre.
MOSI (patte PB3) : Master Output Slave Input, PB3 est une sortie.
SCK (patte PB5) : Serial Clock horloge gnre par le Master ici le microcontrleur.
Port C (PC6.. PC0) le Port C est un port d'entre-sortie 7 bits bidirectionnel. Il sert aussi
comme oscillateur pour le Timer/Compteur2 et dinterface I2C.
Linterface I2C est une interface qui sert pour la communication entre le microcontrleur et un
autre composant en mode srie synchrone en utilisant que 2 fils :
SCL Serial Clock (patte PC5) gnre par le maitre ici cest toujours le
microcontrleur et le fil
SDA Serial Data (patte PC4) bidirectionnel pour la transmission et la rception.
Le port C sert aussi dentres analogiques au convertisseur analogique numrique de 10 bits.
Ce CAN peut recevoir 8 voies analogiques multiplexes.
Port D (PD7.. PD0) le Port D est un port d'entre-sortie 8 bits bidirectionnel. Il sert aussi
dUSART et dentres pour les interruptions externes.
RESET dclench par un front descendant maintenue plus de 50 ns il produira le Reset du
microcontrleur, mme si l'horloge ne court pas.
XTAL1 Entre de l'oscillateur externe ou libre pour l'horloge interne.
XTAL2 Production de l'amplificateur d'oscillateur.
AVCC est une broche de tension dalimentation pour le Convertisseur A/D qui doit tre
connecte VCC via un filtre passe-bas pour viter les parasites.
AREF est l'entre de rfrence analogue pour le Convertisseur A/D avec une tension dans la
gamme de 2 V AVCC avec filtre passe bas.
AGND masse Analogique. Si la masse analogique est spare de la masse gnrale, brancher
cette broche sur la masse analogique, sinon, connecter cette broche la masse gnrale GND.
3

VCC broches d'alimentation du microcontrleur (+3 +5V).


GND masse de lalimentation.
En annexe vous trouverez dans des tableaux la signification des diffrentes utilisations des
broches de Atmega328.
4- Le AVR CPU:
Le ATmega328P est un microcontrleur 8 bits, darchitecture RISC et technologie
CMOS, faible consommation en puissance.
Le noyau AVR CPU combine un riche jeu dinstruction et 32 registres de travail usage
gnral. Tous les 32 registres sont directement connects l'unit arithmtique et logique
(ALU) , permettant deux indpendants registres dtre accessible en une seule instruction
excute en un seul cycle d'horloge.
Schma bloc de la structure interne du AVR CPU :

5- Le WDT : Watchdog timer :


ATmega328P possde une horloge de surveillance renforce (WDT). Le WDT est une
minuterie compter des cycles de 128 kHz dlivrs par un oscillateur ralis sur une puce
interne. Le WDT gnre une interruption ou une rinitialisation du systme lorsque le
compteur atteint une valeur de dlai d'attente donne.
En mode de fonctionnement normal, il est ncessaire que le systme utilise linstruction
WDR: Watchdog Timer Reset pour redmarrer le compteur avant que la valeur de dlai
d'attente est atteinte. Si le systme ne redmarre pas le compteur, une interruption ou une
rinitialisation du systme sera mise.
6- Programmation du microcontrleur :
La programmation en assembleur du microcontrleur ncessite de bien maitriser le
fonctionnement des diffrents registres internes au CPU et les registres de configuration des
port E/S (DDRX, PORTX, PINX) et leurs adresses, les registres de programmation des
timers/compteurs, des registres de validation des interruptions de diffrente nature, lhorloge
de loscillateur quartz, le watchdog..
Pour une cela on sintressera la programmation de ce microcontrleur dans
lenvironnement Arduino.
7- Correspondance microcontrleur et brochages sur la carte arduino :

8- Structure dun programme crit en langage Arduino :


Un programme utilisateur Arduino est une suite dinstructions lmentaires sous forme
textuelle, ligne par ligne. La carte lit puis effectue les instructions les unes aprs les autres,
dans lordre dfini par les lignes de code.
Pour crire un programme on suit les tapes suivantes :
1) dclaration des constantes et des variables :
int ledPin=13 ; // LED connecte la broche 13 : ce qui se trouve prs le
point virgule prcd par // constitue un commentaire sur une ligne. Si on a besoin
dun commentaire sur plusieurs lignes, on crit au dbut de la ligne ceci :
/*ce programme fait clignoter une LED branche sur la broche 13
*et fait galement clignoter la Led test de la carte
*/

2) la configuration des entres et sorties :


void setup() :
exemple

void setup()
{
pinMode(ledPin, OUTPUT) ; //configure la ledPin comme une sortie
}

3) la programmation des interactions et comportements :


void loop()
exemple void loop()
{
digitalWrite(ledPin,HIGH) ;// met la sortie ltat haut (led allume)
delay(3000) ;
//attente de 3 secondes
digitalWrite(ledPin,LOW) ; //met la sortie ltat bas (led teinte)
delay(1000) ;
//attente de 1 seconde
}
Une fois la dernire ligne excute, la carte revient au dbut de la troisime tape et
recommence sa lecture et son excution des instructions successives. Et ainsi de suite. Cette
boucle se droule des milliers de
fois sans arrt.
2me exemple de commande par
microcontrleur :

3me exemple : commande du moteur mais alimenter par 220V

4me exemple : commande dun moteur pas pas unipolaire

Squence de commande pour pas entier


Position angulaire du rotor Bobine1 Bobine2 Bobine3 Bobine4
0 degr
0
0
0
1
90 degr
0
0
1
0
180 degr
0
1
0
0
270 degr
1
0
0
0
Remarque : ici on a considr quun pas correspond 90 degrs, en pratique on peut aller
jusqu 400 pas par tour ce qui donne 0.9degr par pas.
7

ANNEXE