Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui...

33
Traduit et adapté de l’anglais Traduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments 1 Chapitre 3 : Périphériques standard

Transcript of Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui...

Page 1: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

1

Chapitre 3 : Périphériquesstandard

Page 2: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

Objectifs d’apprentissage

Page 3: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

3

Chronomètres, temporisateurs et chiens de garde

• Chronomètre/Temporisateur (« timer »)– Utilisé pour

• Synchroniser des évènements dans le temps• Déterminer le temps et/ou la durée d’évènements temporels 

• Réveiller le système régulièrement 

– Basé sur le comptage d’impulsions d’horloge• E.g., période d’horloge=10 ns, compteur de 16 bits

– un compte de 20,000 indique 200 us écoulées– Durée maximum mesurable 65,535*10 ns = 655.35 us 

(avec une résolution de 10 ns)

– Après le compte maximal, on repart à zéro et un bit de débordement est activé

– Peut être associé avec des lignes d’e/s pour• Chronométrer un changement d’état en entrée• Synchroniser un changement d’état en sortie

16-bit up counterClk Cnt

Basic timer

OFL

Reset

16

Page 4: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

4

• Compteur (« counter »)– Similaire à un temporisateur, mais peut 

aussi compter les impulsions en provenance d’une source  externe (autre que l’horloge du CPU)

• e.g., compter le nombre de voitures détectée par un capteur ultrasonique

– Fonctionnalité partagée avec un temporisateur en général

16-bit up counter

Clk16

Cnt_in

2x1 mux

Mode

Timer/counter

Top

Reset

Cnt

Chronomètres, temporisateurs et chiens de garde

Page 5: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

5

Autres structures de gestion du temps

Top2

Time with prescaler

16-bit up counter

Clk Prescaler

Mode

• Minuterie d’intervalle– Génère un intervalle de 

temps– La durée est spécifié par une 

valeur de compte  :• intervalle désiré / période de                         l’horloge de comptage

• Compteurs en cascade• Pré diviseur

– Divise la fréquence de l’horloge de comptage

– Augmente la gamme dynamique au détriment de la résolution

16-bit up counter

Clk16

Terminal count

=Top

Reset

Timer with a terminal count

Cnt

16-bit up counter

Clk

16-bit up counter

16

Cnt2

Top1

16/32-bit timer

Cnt1

16

Page 6: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

Exemple : le Timer_A de la famille MSP430

Page 7: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

Exemples  sorties préprogrammées dans le  le Timer_A de la famille MSP430

Page 8: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

8

Example: Mesure de temps de réaction

Témoinlumineux

Bouton

time: 100 msLCD

/* main.c */

#define MS_INIT       63535

void main(void){int count_milliseconds = 0;   

Configure timer modeset Counter to MS_INIT

Wait a random amount of timeTurn on indicator lightStart timer

while (not pushed button){if(Top) {

count_milliseconds++;reset Top

}}Turn light offprintf(“time:  %i ms“, count_milliseconds);}

• On veut mesurer le temps de réaction entre l’allumage d’un témoin lumineux et la pesée d’un bouton par un sujet

• Temporisateur de 16 bits, clk = 83.33 ns (12 MHz), incrémentation du compteur aux 6 cycles– Résolution effective = 6*83.33=0.5 us

– Gamme dynamique = 65535*0.5 us  = 32.77 ms

– Si un débordement à tous les 1 ms est désiré, le compteur sera initialisé à :

65535 – 1/0.0005 = 63535

Page 9: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

9

Le chien de garde

scalereg

checkreg

timereg to system resetor

interrupt

osc clkprescaler

overflow overflow

/* main.c */

main(){wait until card insertedcall watchdog_reset_routine

while(transaction in progress){if(button pressed){perform corresponding actioncall watchdog_reset_routine

}

/* if watchdog_reset_routine not called every < 2 minutes, interrupt_service_routineis called */}

watchdog_reset_routine(){/* checkreg is set so we can load value into timereg.  Zero is loaded into scalereg and 11070 is loaded into timereg */

checkreg = 1scalereg = 0timereg = 11070 

}

void interrupt_service_routine(){eject cardreset screen

}

• Temporisateur à recharger avant le débordement ; sinon un IRQ ou Reset est généré

• Usage: – détecter les défaillances 

avec redémarrage automatique

– Détecter des dépassements de délais 

• e.g., ATM machine ; temporisateur 16 bits avec 2 us de résolution 

– Valeur de compte =

2*(216‐1)–X = 131070–X– Pour 2 min., X = 120,000 us

Page 10: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

Communications sérielles

• Port sériel– Prend un mot binaire et le convertit en une séquence de bits qui sont émis l’un après l’autre

– Reçoit une séquence de bits et les remet en parallèle• On économise des fils par rapport à un port parallèle• Plusieurs possibilités

– UART– SPI– I2C– USB– 1‐Wire, Fire‐wire et autres

Page 11: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

11

UART

embedded device1 0

0 11 0 1 1

Sending UART

1 0 0 1 1 0 1 1

Receiving UART

1 0 0 1 1 0 1 1

start bitdata

end bit

1 0 0 1 1 0 1 1

• Universal AsynchronousReceiver Transmitter

• Parité: bit additionnel pour la détection d’erreurs de 1 bit.– Paire et impaire

• Start bit, stop bit(s)• Taux de Baud

– Nombre maximum de bits par seconde incluant Stop et Start.

– Habituellement jusqu’à115 kB/s

• Les bits additionnels réduisent l’efficacité du lien

Page 12: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

SPI• Serial Peripheral Interface• Basé sur des registres à

décalage• Synchronisation des transferts 

assurée par une horloge• Opère comme une courroie 

crénelée : pendant que des bits sortent, d’autres entrent

• Un seul maître et un ou plusieurs esclaves

http://www.mct.net/faq/spi.html

• Terminologie– MOSI ou SDI : master out & slave 

in– MISO ou SDO : Master in & slave 

out– CLK : Horloge de synchronisation ; 

transferts sur front montant ou descendant (programmable)

– SS ou CS : Slave select venant du maitre, habituellement actif bas

Page 13: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

SPI

• Deux configurations majeures

Page 14: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

SPI

• Séquence d’événements lors d’un échange

• Les périphériques opèrent souvent en semi duplex

Page 15: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

I2C• Inter‐Integrated Circuit• Utilise deux fils bidirectionnels• Synchronisation des transferts 

assurée par une horloge• Habituellement, un maître et un 

ou plusieurs esclaves ; possibilitéde plusieurs maîtres

• Le maître contrôle l’horloge et les signaux de départ et d’arrêt des transferts (Start et Stop) 

• Chaque esclave possède une adresse unique (7 ou 10 bits) et réagit uniquement aux commandes et données du maître qui le concernent.

http://www.best‐microcontroller‐projects.com/i2c‐tutorial.html

• Terminologie– SDA : Serial Data ; va dans les deux 

sens– SCL : serial clock ; habituellement 

sous le contrôle du maître

Page 16: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

I2C

1. Génération du bit Start (S). 2. Génération de l’adresse de l’esclave 

(ADDRESS) 3. Génération du bit Read(R)=1 / 

Write(W)=0 4. Attente du bit d’acquiescement de 

l’esclave (A) 5. Génération/réception de l’octet de 

données (DATA). 6. Attente/envoi du bit 

d’acquiescement (A) 7. Génération du bit STOP (P) ou d’un 

nouveau bit Start (S)

Lors d’un échange de plusieurs octets, les étapes 5 et 6 sont répétées

Séquence d’évènements lors d’un échange (gérée par le maitre)

Page 17: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

USB

• Universal Serial Interface• Un maître et un ou plusieurs esclaves• Utilise 4 lignes

– +5 V et masse (le maître peut générer   500 MA par prise) 

– 2 lignes de données torsadées différentielles avec encodage NRZ

• Souvent utilisé dans les microordinateurs (apparait comme un port COM)

• Plusieurs versions– 1.1 : 5 à 12 Mb/s– 2.0 : 480 Mb/s– 3.0 : 4.8 Gb/s (à venir)

• Les connecteurs sont tels que l’alimentation est appliquée avant les

données, permettant aux esclaves d’être branchés et retirés en tout temps (“Plug‐and‐Play”).

• À la mise sous tension, l’ hôte scrute chaque esclave pour déterminer son type et vitesse et lui attribue une adresse (processus d’énumération).

• Le processus d’énumération est mis àjour lorsqu’un dispositif est branchéou retiré du réseau 

• Standard privé (royautés dues ou usage d’un composant qui l’a déjà)

• Protocole compliqué et difficile àdéboguer ; mieux vaut utiliser des composants qui l’ont déjà !

Page 18: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

18

Modulateur de largeur d’impulsion (PWM)

clk

pwm_o

25% duty cycle – average pwm_o is 1.25V

clk

pwm_o

50% duty cycle – average pwm_o is 2.5V.

clk

pwm_o

75% duty cycle – average pwm_o is 3.75V.

• Génère des impulsions avec des cycles de travail spécifiques 

• Cycle de travail (« duty cycle »): % temps à “1”– Onde carrée: D = 50% 

• Usages : – Tension moyenne pour piloter 

un moteur électrique• Plus simple que convertisseur 

DC‐DC or numérique‐analogique

• E.g. Vitesse de moteur DC ; gradateur de lumière

– Commandes codées• le récepteur utilise un 

temporisateur pour le décodage

Page 19: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

19

Commande d’un moteur DC par PWM

void main(void){

/* controls period */PWMP = 0xff; /* controls duty cycle */PWM1 = 0x7f;

while(1){};}

The circuit PWM seul ne peut pas piloter le moteur DC ; un étage  tampon de puissance est requis, par exemple un transistor NPN de puissance MJE3055T. 5V

B

A

Structure interne d’un modulateur PWM

diviseur

cycle_high

compteur( 0 – 255)

Comparateur 8 bits

compteur < cycle_high,pwm_o = 1compteur >= cycle_high, pwm_o = 0

pwm_o

clk Input Voltage % of MaximumVoltage Applied RPM of DC Motor

0 0 0

2.5 50 1840

3.75 75 6900

5.0 100 9200

Relation entre la tension appliquée et la vitesse de rotation du moteur

Moteur DC

5V

Du CPU

Page 20: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

• Structure d’un afficheur réflectif: 1. Filtre de polarisation (verticale) 2. Substrat en verre avec électrodes correspondant au filtre vertical 

3. Cristaux liquides 4. Substrat en verre avec électrodes correspondant au filtre horizontal 

5. Filtre horizontal pour bloquer/laisser passer la lumière 

6. Surface réfléchissante (ou source de lumière) 

Afficheurs à cristaux liquides• Un cristal liquide possèdes des propriété optiques qui le rendent opaque lorsque soumis à un champ électrique

Page 21: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

Contrôleurs de segments ACL

• L’application soutenue d’un champ électrique continu à un cristal liquide peut le désagréger

• Les afficheurs ACL doivent être biaisés par des  tensions CA pour éviter la désagrégation

• Un multiplexage complexe des tensions de polarisation doit être réalisé dans le cas de multiples segments pour réduire le nombre d fils

• L e multiplexage utilise des tensions de polarisations multiples qui sont appliquées suivant une séquence prédéterminée

Page 22: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

Contrôleurs de segments ACL : Biais• Génération des tensions de biais :

Page 23: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

• LCD_A controller supports 4 types of LCDs:– Static:

• Each MSP430 segment pin drives:– One LCD segment.

• One common line driven by COM0.• Capacity to drive 32 segments.

– 2‐mux, 1/2 bias (or 1/3 bias):• Each MSP430 segment pin drives:

– Two LCD segments;

• Two common lines driven by COM0 and COM1.• Capacity to drive 64 segments.

Contrôleurs de segments ACL : Modes

Page 24: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

• LCD_A controller supports 4 types of LCDs:– 3‐mux, 1/3 bias (or 1/2 bias):

• Each MSP430 segment pin drives:– Three LCD segments;

• Three common lines driven by COM0, COM1, and COM2.• Capacity to drive 90 segments.

– 4‐mux, 1/3 bias (or 1/2 bias):• Each MSP430 segment pin drives:

– Four LCD segments;

• Four common lines driven by COM0, COM1, COM2, and COM3.• Capacity to drive 120 segments.

Contrôleurs de segments ACL : Modes

Page 25: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

• ACL statique:– Une broche par segment;– Une broche pour le substrat.

– Caractéristiques :• Pilotage simple• Haut contraste;• Nombre élevé de broches.

Contrôleurs de segments ACL : Modes

Page 26: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

• ACL 2‐mux :– Nombre de broches réduit;

– Segments ACL multiplexés:

• Matrice de segments;

• Deux broches communes (COM0 and COM1).

– Example: 2‐mux;

Contrôleurs de segments ACL : Modes

Page 27: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

• ACL 3‐mux LCD– Pour 1 broche de segment à piloter :

• 3 segments ACL;

• 3 lignes communes (COM0 to COM2).

– Example: 3‐mux, biais 1/3.

Contrôleurs de segments ACL : Modes

Page 28: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

• ACL 4‐mux– Pour 1 broche de segment à piloter :

• 4 segments ACL;

• 4 lignes communes (COM0 to COM3).

– Example: 4‐mux, biais 1/3.

Contrôleurs de segments ACL : Modes

Page 29: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

29

Afficheur LCD avec contrôleur intégré

ER/WRS

DB7–DB0

LCD controller

communications bus

microcontroller8

void WriteChar(char c){

RS = 0/1;                /* indicate data being sent */DATA_BUS = c;     /* send data to LCD */EnableLCD(45);    /* toggle the E and wait for appropriate delay */

}

CODES

I/D = 1 cursor moves left DL = 1 8-bit

I/D = 0 cursor moves right DL = 0 4-bit

S = 1 with display shift N = 1 2 rows

S/C =1 display shift N = 0 1 row

S/C = 0 cursor movement F = 1 5x10 dots

R/L = 1 shift to right F = 0 5x7 dots

R/L = 0 shift to left

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Description

0 0 0 0 0 0 0 0 0 1 Clears all display, return cursor home

0 0 0 0 0 0 0 0 1 * Returns cursor home

0 0 0 0 0 0 0 1 I/D S Sets cursor move direction and/orspecifies not to shift display

0 0 0 0 0 0 1 D C B ON/OFF of all display(D), cursorON/OFF (C), and blink position (B)

0 0 0 0 0 1 S/C R/L * * Move cursor and shifts display

0 0 0 0 1 DL N F * * Sets interface data length, number ofdisplay lines, and character font

1 0 WRITE DATA Writes Data

• Le contrôleur doit être initialisé en premier lieu

Page 30: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

30

Décodeur de clavier matriciel

N1N2N3N4

M1M2M3M4

key_code

keypad controller

k_pressed

key_code4

N=4, M=4

• Deux Techniques

• ‘1’ mobile

• Inversion de direction des lignes

Page 31: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

31

Contrôleur de moteur Pas‐à‐pas

Red AWhite A’Yellow BBlack B’

MC3479P1

5

4

3

2

7

8

6

16

15

14

13

12

11

10

9

Vd

A’

A

GND

Bias’/Set

Clk

O|C

Vm

B

B’

GND

Phase A’

CW’/CCW

Full’/Half Step

Sequence A B A’ B’1 + + - -2 - + + -3 - - + +4 + - - +5 + + - -

• Moteur pas‐à‐pas : tourne d’un nombre de degrés à la réception de signaux de commande– Par opposition, un moteur DC tourne 

continuellement après la mise sous tension

• La rotation est assurée par l’application s’une séquence de tensions spécifiques sur les bobines

• Un contrôleur dédiée simplifie la procédure (on peut aussi utiliser les lignes d’e/s du uC) 

Page 32: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

32

Contrôleur de moteur Pas‐à‐pas

2 A’3 A

10 7

B 15B’ 14

MC3479PStepper Motor

Driver MSP430

P1.0P1.1

StepperMotor

CLKCW’/CCW

Le broches de sortie du contrôleur ne fournissent pas assez de puissance pour piloter  le moteur pas‐à‐pas  ; un  étage  tampon  de  puissance  est  requis.  Une implémentation  possible  pour  chaque  ligne  de commande est illustrée ci‐contre : Q1 est un transistor NPN MJE3055T et Q2 est un transistor PNP MJE2955T. A est relié au contrôleur et B va au moteur .

Q2

1K

1KQ1

+V

A B

void main(void){

*/turn the motor forward */cw=0;                 /* set direction */clk=0;                 /* pulse clock */delay();clk=1;

/*turn the motor backwards */cw=1;                 /* set direction */clk=0;                 /* pulse clock */delay();clk=1;

}

/* main.c */

sbit clk=P1^1;sbit cw=P1^0;

void delay(void){int i, j;for (i=0; i<1000; i++)for ( j=0; j<50; j++)i = i + 0;

}

Page 33: Chapitre 3 Périphériques standardboukadoum_m/MIC4235/Notes/ch3... · type et vitesse et lui attribue une adresse (processus d’énumération). Leprocessus d’énumération estmisà

Traduit et adapté de l’anglaisTraduit et adapté de MSP430 Teaching ROM Copyright 2009 Texas Instruments

33

Contrôleur de moteur Pas‐à‐pas

StepperMotor

8051GND/ +VP2.4

P2.3P2.2P2.1P2.0

Tampon de puissance possible pour un pilotage par les lignes d’e/s du microcontrôleur 

Q2

+V

1KQ1

1K

+V

A

B

330

/*main.c*/sbit notA=P2^0;sbit isA=P2^1;sbit notB=P2^2;sbit isB=P2^3;sbit dir=P2^4;

void delay(){int a, b;for(a=0; a<5000; a++)

for(b=0; b<10000; b++)a=a+0;

}

void move(int dir, int steps) {int y, z;

/* clockwise movement */if(dir == 1){

for(y=0; y<=steps; y++){for(z=0; z<=19; z+4){

isA=lookup[z];isB=lookup[z+1];notA=lookup[z+2];notB=lookup[z+3];delay();

}}

}

/* counter clockwise movement */if(dir==0){

for(y=0; y<=step; y++){for(z=19; z>=0; z - 4){

isA=lookup[z];isB=lookup[z-1];notA=lookup[z -2];notB=lookup[z-3];delay( );

}}

}}void main( ){

int z;int lookup[20] = {

1, 1, 0, 0,0, 1, 1, 0,0, 0, 1, 1,1, 0, 0, 1,1, 1, 0, 0 };

while(1){/*move forward, 15 degrees (2 steps) */

move(1, 2);/* move backwards, 7.5 degrees (1step)*/move(0, 1);

}}