Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier. Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer. Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens). Les pages seront ajoutées ou modifiées petit à petit. Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater. Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr . Tout message reçoit une réponse Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche Pour laisser un message, allez dans le "LIVRE D'OR" Bonne visite
Pilotage des moteurs pas à pas
Le test porte sur un petit moteur bipolaire 5 V démonté d'un scanner, on trouve ces moteurs un peu partout, imprimantes, scanners, disques durs,etc... et ils finissent généralement à la poubelle, dommage.
Le µC est un picaxe 14M2, 4 sorties pilotent un driver L293D, relié aux deux bobines du moteur Un potentiomètre pour faire varier la vitesse, avec changement de sens au centre. Un poussoir pour passer de pas entiers à demis pas, et inversement. Cet essai est minimaliste, pour des moteurs plus puissants, il faut aussi gérer le courant moteur. Un classique est le couple L297 + L298 dont on trouve des descriptions sur la toile. Pour le petit moteur de scanner, le L293D est suffisant.
Le schéma:
Le code (faire un copier/coller dans l'éditeur PE6):
'=================================================== 'Commande moteur PAP bipolaire '14M2 plus Driver L293D ' connections moteur : sur A et B du L293D ;MM : 27 03 2015 / 30/03/2015 '=================================================== #picaxe 14M2 '=================================================== setfreq m32 symbol potar= C.0 symbol moteur = outpinsB 'variable systeme outpinsB nommée moteur symbol pous=pinC.2 ;commande interruption sur C.2 symbol cpt= b1 ;compteur tournant symbol vitesse= b2 symbol pas=b3 dirsB= %001111 'affectation B.0 a B.3 en sortie vers le L293 pullup %10000000000 ;pullup sur C.2 setint %00000000,%00000100 ;interruption sur C.2 pas=2 ;départ en pas entiers
do readadc potar, vitesse select vitesse case >132 cpt=cpt+pas cpt = cpt & %00000111 'la valeur de b1 est limitée à 3 bits, soit 0 à 7 'mémorisation de la sequence de commande pour le moteur en demi pas lookup cpt,(%1010,%1000,%1001,%0001,%0101,%0100,%0110,%0010),moteur vitesse= 255-vitesse pause vitesse 'pause en ms/8 case < 123 cpt=cpt-pas cpt = cpt & %00000111 'la valeur de b1 est limitée à 3 bits, soit 0 à 7 ; lookup cpt,(%1010,%1000,%1001,%0001,%0101,%0100,%0110,%0010),moteur pause vitesse 'pause en ms/8 else moteur=0 endselect loop
interrupt: pas=pas//2 ; 0 si pas =2, 1 si pas =1 pas=pas+1 ;changement en 1 ou 2, on peut ecrire pas=pas//2+1 setint %00000000,%00000100 ;interruption sur C.2 do loop while pous=0 pause 4000 ;1s à fréquence M32 return
Quelques explications complémentaires: La première partie du code, jusqu'à la boucle Do Loop est une initialisation: désignations des noms de variables, du picaxe utilisé, de la fréquence horloge, activation de pullup et d'une interruption sur la broche C.2 Par la commande : Moteur=outpinsB :
outpinsB désigne les broches B.0 à B.5 du picaxe. Moteur est un octet Les broches B.5:...:B.0 vont prendre les valeurs de bit5:...bit0 de l'octet Moteur.
La boucle principale Do Loop
Commence par la lecture du potentiomètre de vitesse, qui introduit une pause entre les impulsions transmises au moteur. La lecture donne une valeur de 0 à 255 Cette valeur de vitesse est divisée en trois par le "select case"
- Case else ,entre 123 et 133, le moteur ne reçoit aucune impulsion et le courant dans les bobines est nul. C'est un choix, le moteur ne chauffe pas mais le couple est nul.
- case > 133, la valeur calculée "vitesse" donne une valeur de 0 à 122 (erreur: 121)
Le pas alterne entre 1 et 2 à chaque passage dans l'interruption, déclenchée par le poussoir. La séquence des polarisations des bobines est mémorisié dans un "lookup". Les 8 combinaisons correspondent à une commande en demi pas, en ne prenant qu'une combinaison sur deux, on passe en pas entier. Le compteur est incrémenté de 1 ou de 2, au choix. Le compteur est un octet dont on ne garde que les trois derniers bits, il tourne sur 8 valeurs entre 0 et 7 (équivalent à un modulo 8). A chaque passage, la commande "lookup" scanne les valeurs mémorisée et sélectionne la combinaison correspondante à la valeur du compteur cpt pour alimenter les bobines par la variable Moteur. - case < 123, fonctionnement identique, mais le compteur est décrémenté, les combinaisons sont lues à l'envers, et le moteur tourne dans l'autre sens.