Carte de commande de deux moteurs pas a pas unipolaires
De MicElectroLinGenMet.
(Hors-série Electronique pratique - 2/1998)
La commande d'un moteur pas à pas unipotaire est plus simple que celle d'un moteur bipolaire. En effet, l'alimentation des deux phases d'un modèle bipolaire nécessite l'inversion du sens du courant traversant les bobinages à chaque pas que doit effectuer le moteur. Cela nécessite un pont de quatre transistors dont seulement deux conduisent en me- me temps. Pour le modèle unipolaire, les bobinages comportant un point milieu, il suffit d'alimenter à tour de rôle chacune des extrémités de l'enroulement, selon une séquence bien définie. Il n'est plus néces saire, alors1 que de disposer de quatre transistors connectés entre masse et bobinages. C'est exactement ce que fait le circuit intégré que nous allons maintenant étudier.
Sommaire |
Le circuit intégré SAA1027
(Voir documentation sur le Circuit SAA1027)
Le circuit intégré SAA1027 est un produit mis au point par RTC. Son schéma interne est représenté en figure 1. Il dispose de trois broches de commande reliées à trois étages d'entrées:</font>
- broche 15 : entrée de l'étage de déclenchement l'avance d'un pas se fera sur le front montant du signal. Le diagramme de la figure 2 représente l'allure des signaux de sortie en Q1, Q2, Q3 et Q4 en fonction des niveaux appliqués sur les trois broches de commande. La table de vérité du SAA1027 est donné en figure 3.
- broche 2 entrée de l'étage de RAZ (Remise A Zéro); lorsque cet te broche est portée à l'état bas et que sur la broche de déclenchement est appliqué un niveau haut, le moteur est positionné de la manière suivante:
sortie Q1 état bas
sortie Q2 état haut
sortie Q3 état bas
sortie Q4 état haut
- broche 3 : entrée de l'étage de configuration du sens de rotation; celui-ci sera fixé par le niveau lo gique appliqué sur la broche: sens horaire pour un niveau haut et sens anti-horaire pour un niveau bas. Le changement du sens de rotation peut être effectué à n'importe quel moment, quelque soit l'état des deux autres entrées.
On trouve ensuite une partie logique essentiellement composée d'un compteur synchrone à quatre positions. Ce compteur est suivi par un circuit de contrôle des quatre transistors de puissance. La broche 4 (RX) lui est connectée. Une résistance de polarisation devra relier cette entrée au + (plus) alimentation. C'est la valeur de cette résistance qui fixera le courant traversant les phases du moteur. Le graphique de la figure 4 donne la relation entre le courant de
polarisation et le courant de sortie. Le tableau suivant résume les caractéristiques du SAA1027:
Relation entre la tension de polarisation de la broche 4 et le courant de polarisation:
1,2V : 10mA
1,9V : 20mA
2,6V : 30mA
3,3V : 40mA
4,0V : 50mA
A l'aide de ces chiffres et du graphique donnant la relation entre le courant de polarisation et le courant de sortie, on pourra déterminer la va leur de la résistance connectée à la broche 4 en fonction du moteur utilisé.
Les transistors de sortie du SAA1027 sont protégés des surtensions produites par le moteur à l'aide de quatre diodes intégrées. Le point commun de ces diodes aboutit en broche 13. Cependant, Si l'on désire limiter l'échauffement du circuit intégré, quatre diodes extemes pourront être câblées entre les quatre sorties et la ligne d'alimentation, la broche 13 étant alors laissée "en l'air". Ces diodes devront être de type rapide.
Le schéma de principe
Le schéma de principe est donné en figure 5. Les huit lignes du bus de données de l'interface parallèle parviennent aux entrées d'un buffer de type 74LS541. Les signaux aux normes TTL ne pouvant commander directement les SAA1 027, des transistors d'interface ont dû être utilisés. Ceux-ci sont montés en inverseur ce qui simplifiera la commande par programme. En effet, lorsque toutes les lignes de données seront au niveau bas, les circuits seront configurés en rotation horaire. Les entrées de RESET seront également à l'état haut. Il suffira alors d'envoyer les impulsions sur les deux bits de commande pour l'avance des moteurs.</font>
La broche 14 des SAA1027 est utilisée pour l'alimentation de toute la logique inteme, alimentation commune à celle des moteurs. Ces derniers produisant des parasites et surtension, une cellule de filtrage R-C (100ohms et 100 nF) est absolument nécessaire. Nous avons fixé arbitrairement la valeur des résistances de polarisation à 150 ohms. En fait, cette valeur devra être comprise entre 150 et 330 ohms, selon le type de moteur utilisé. Ces résistances devront pouvoir supporter une puissance minimale de 1W Lorsque les moteurs sont alimentes mais qu'ils ne sont pas en ro tation, ils chauffent inutilement. Il convient alors de diminuer le courant traversant les bobinages. C'est ce que nous avons fait au moyen des circuits construits autour des transistors T1 et T2. Ils sont commandes par les deux bits restants des lignes de données, D7 et D8. Le svstème est simple : des relais ont été insérés dans le circuit de collecteur des transistors. Lorsqu'ils ne sont pas alimentés, le contact repos, connecté à la ligne d'alimentation des moteurs, permet de disposer du courant maximal. Au contraire, lorsque les bits de commande sont à 1, une résistance est mise en série dans les fils d'alimentation des moteurs, ce qui réduit le courant consommé et limite la dissipation de puissance. La valeur de ces résistances devra être choisie en fonction du courant, 22 à 47ohms nous semblant être une bonne fourchette. La puissance que ces résistances devront pouvoir dissiper dépendra du courant de repos que l'on aura choisi (P = R x I 2), mais en tout état de cause, plusieurs watts seront nécessaires.
Une tension de +5V étant nécessaire pour le buffer d'entrée, un régulateur de tension 7805 a été implanté sur la carte. Un condensateur de 470 pF filtre la tension d'alimentation. Le montage devra être alimenté à l'aide d'une tension de +12V et un courant minimum de 2A.
La réalisation pratique
Le dessin du circuit imprimé est re présenté en figure 6, tandis que le schéma de l'implantation des composants est donné en figure 7. De nombreux straps sont à souder ce qui débutera le câblage de la maquette. Les trois circuits intégrés seront positionnés sur des supports. Les deux SAA1027 pourront être munis de dissipateurs thermiques pour circuit DIL, dissipateurs que l'on colle sur le boîtier avec de la colle cyanoacrylate. On prendra garde à l'orientation des transistors qui ne sont pas tous positionnés dans le même sens. Les résistances de puissance R9 et R10 seront obtenues par la mise en série de deux composants de même valeur. Nous avons retenu cette solution afin de simplifier le tracé du circuit imprimé. Selon leur puissance et donc leur taille, elles pourront être soudées soit horizontalement, soit verticalement. Deux borniers à vis à cinq points permettront le raccordement des moteurs à la carte. Un modèle à deux points servira au raccordement de l'alimentation externe. Le régulateur de tension sera monté verticalement et sans dissipateur thermique étant donné le faible courant qu'il débite. On utilisera un connecteur SUBD25 pour la connexion du montage à l'ordinateur. On achèvera le câblage par une vérification minutieuse des soudures.
Les essais
On raccordera la carte au PC et on mettra le montage sous tension. L'octet 0 sera envoyé au port parallèle:
OUT &H378,O ou OUT &H278,0
Chaque ligne de données possède une fonction précise:
DO, valeur 1 commande avance moteur 1 Dl, valeur 2 commande sens de rotation moteur 1 D2, valeur 4 commande RESET moteur 1 D3, valeur 8 commande avance moteur 2 D4, valeur 16 commande sens de rotation moteur 2 D5, valeur 32 commande RESET moteur 2 D6, valeur 64 commande courant de repos moteur 1 D7, valeur 128 commande courant de repos moteur 2
Ainsi Si l'on désire faire tourner le moteur 1 de 100 pas dans le sens horaire, puis le mettre au repos, il suffira d'écrire le petit programme suivant:
FOR D=O TO 99 OUT &H278, 1 OUT &H278, O FOR T=O TO 30 NEXT T NEXT D OUT &H278, 64
Pour faire tourner le même moteur dans le sens anti-horaire, le programme ne nécessitera qu'une petite modification:
FOR D=O TO 99 OUT &H278, 3 OUT &H278, 2 FOR T=0 TO 30 NEXT T NEXT D OUT &H278, 64
Afin de faire toumer les deux moteurs dans le même sens, le programme ne sera pas plus compliqué:
FOR D=O TO 99 OUT&H278,17:REM1 +16 OUT &H278, O FOR T=O TO 30 NEXT T NEXT D OUT &H278, 192: REM 64 + 128.
Nomenclature
