Moteur pas-à-pas
From Eric
Contents |
Objectifs
Réalisations
Principes de fonctionnement d'un moteur pas-à-pas
Moteurs bipolaires
A compléter.
Moteurs unipolaires
A compléter.
Première réalisation : commande par L297 et L298
Le premier circuit a été réalisé en wrapping.
Un circuit imprimé a suivi...
Et, enfin, j'ai réalisé une carte complète (en double-face, de façon à se "faire la main"...). Ce montage comporte un Atmega8, un L297 et deux L298 :
- un destiné au contrôle du moteur pas-à-pas
- un destiné au contrôle des moteurs de propulsion.
Deuxième réalisation : commande par un PIC
Le L297 est fragile et coûteux.
Il peut-être facilement remplacé par un micro-contrôleur type PIC, en particulier si on omet le dispositif de contrôle de puissance et la gestion des demi-pas.
La mise en oeuvre est très simple : il suffit de commander les deux bobines selon une séquence précise.
Ainsi, par exemple, si on souhaite un couple important, la séquence de commandes doit être la suivante :
- (A+)(B-)(C+)(D-)
- (A-)(B+)(C+)(D-)
- (A-)(B+)(C-)(D+)
- (A+)(B-)(C-)(D+)
(La première (resp. seconde) bobine est alimentée entre A et B (resp. C et D).)
Si on réalise la même séquence en sens inverse, le moteur tourne dans l'autre sens (Non?!!! Si!).
Le logiciel est on ne peut plus simple :
; Main loop loop1 ; Do 100 steps counter clockwise movlw d'100' call doStepCcw ; Do 100 steps clockwise movlw d'100' call doStepCw goto loop1 ; Perform "steps" step clockwise doStepCw movwf steps movfw step loopCw call STEPPER_CMD movwf PORTA call Delay5 ; Wait 5ms ; Disable the outputs bcf PORTA,6 call Delay5 ; Wait 5ms movfw step incf step,w andlw b'00000011' movwf step decfsz steps goto loopCw return ; Perform "steps" step clockwise doStepCcw movwf steps movfw step loopCcw call STEPPER_CMD movwf PORTA call Delay5 ; Wait 5ms ; Disable the outputs bcf PORTA,6 call Delay5 ; Wait 5ms movfw step decf step,w andlw b'00000011' movwf step decfsz steps goto loopCcw return STEPPER_CMD ADDWF PCL , f RETLW b'01001010' RETLW b'01000110' RETLW b'01000101' RETLW b'01001001' END
Oui, on peut être plus astucieux (et notamment éviter cette odieuse redondance entre le code réalisant la rotation d'un un sens et dans l'autre sens !
On notera l'inhibition des sorties après la commande, de façon à éviter que les bobines soient commandées en permanence et que le L298 chauffe. (Le L297 dispose quant à lui d'un dispositif de contrôle du courant et inhibe les sorties dès que le courant dépasse un certain seuil. C'est un contrôle que je dois rajouter en comparant la tension aux bornes des résistances de sortie (résistances de puissance de 0.5 Ohm) à un seuil.
Conclusions et leçons
Quelques points à ne pas oublier :
- Ne pas utiliser le L297 et le remplacer par un microcontroleur, moins coûteux (si on n'utilise pas le contrôle de courant).
- Il faut penser à bien découpler les alimentations car la commande d'un moteur pas-à-pas engendre des parasites qui peuvent nuire au bon fonctionnement des autres composants partageant les lignes d'alimentation, notamment celui qui pilote le pont en H (L297 ou micro-contrôleur).
- Rajouter un radiateur sur le L298 et contrôler l'intensité de sortie pour éviter les surchauffes...