220 likes | 675 Views
Une application avec un moteur pas- à -pas , un PIC et le langage C. Par: André Théberge Le 2 Mai 2006. Agenda. Théorie du moteur pas-à-pas (stepper motor) Le circuit de drive, et l’interface au PIC La sous-routine en langage C Une application concrète: la tête à diviser électronique
E N D
Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006
Agenda • Théorie du moteur pas-à-pas (stepper motor) • Le circuit de drive, et l’interface au PIC • La sous-routine en langage C • Une application concrète: la tête à diviser électronique • Questions
Introduction au moteur • Le moteur pas-à-pas se distingue du moteur conventionnel par: • 4 ou 6 fils au lieu de 2. • Une multitude d’enroulements et de pôles • La capacité de motion angulaire avec précision. • En appliquant la bonne séquence d’impulsion sur les enroulements, on peut faire tourner le moteur dans le sens-horaire ou anti-horaire et aussi contrôler sa vitesse de rotation.
La rotation du moteur Enroulement 1a 1000100010001000100010001 Enroulement 1b 0010001000100010001000100 Enroulement 2a 0100010001000100010001000 Enroulement 2b 0001000100010001000100010
Unipolaire vs. Bipolaire • Unipolaire utilise 5 ou 6 fils, un ou 2 commun • Bipolaire utilise 4 fils
Autres types de moteurs • Moteurs à réluctance variable • Moteurs bi-filaires • Moteur multiphase • Pour plus d’informations: • http://www.cs.uiowa.edu/~jones/step/types.html • http://www.doc.ic.ac.uk/~ih/doc/stepper/
Caractéristiques de notre moteur exemple: • Unipolaire, 6 fils • 200 pas, chacun de 1.8 degrés • Chaque enroulement: 10 ohms, 8V DC • Couple (Torque ) suffisant pour entraîner la charge (Tête à diviser)
Circuit de drive et interface au PIC • 1er design: utiliser 4 x TIP-31 • Ic=3A, Vce=1.2V et hfe=20
Circuit de drive et interface au PIC • 1er design: utiliser 4 x TIP-31 • Ic=3A, Vce=1.2V et hfe=20 • 2ième design: utiliser 4 x TIP-121 • Ic=5A, Vce=2V @ Ib=12mA, hfe=1000 Ib=375mA !!!
La routine ‘drive_stepper’ en C BYTE const POSITIONS[4] = {0b1000, 0b0010, 0b0100, 0b0001}; drive_stepper(BYTE speed, char dir, int32 steps) { static BYTE stepper_state = 0; int32 i; for(i=0; i<steps; ++i) { delay_ms(speed); set_tris_c(0xf0); port_c = POSITIONS[ stepper_state ]; if(dir!='R') stepper_state=(stepper_state+1)&(sizeof(POSITIONS)-1); else stepper_state=(stepper_state-1)&(sizeof(POSITIONS)-1); } }
Application: la tête à diviser • PIC utilisé: PIC16F876, 28 broches • Moteur branché (via driver) sur PC0-PC3 • LCD 16x1 sur port B, multiplexé avec clavier 6 touches • 2 alimentations séparées, une pour le moteur (10-12VDC), une pour la carte avec PIC (9V)
La tête à diviser • Utilisé sur une fraiseuse pour tailler des engrenages: • 8 set de couteaux/pitch pour des profils de dents différents • Le matériel à tailler est réduit au préalable au bon diamètre avec un tour à métal et tenu dans un ‘chuck’ à trois mords. • Le chuck tourne à 1/40 de tour, pour chaque tour de poignée • En remplaçant la poignée par un moteur, on obtient 200*40 pas pour chaque tour complet. • Pour un engrenage de 80 dents ou moins, l’erreur angulaire est de 1% ou moins (erreur maximale: 1/25 de degré), si on ne tiens pas compte du back-lash
Exemple d’utilisation • Touche ‘Avance manuelle’ • ‘-’ ou ‘+’ pour faire tourner le moteur et l’enligner • ‘enter’ pour remettre le compteur de pas à zéro • Touche ‘Facteur de division’ • ‘-’ ou ‘+’ pour choisir entre 1-255, ensuite ‘enter’ • Touche ‘Avance par secteur’ • ‘-’ ou ‘+’ pour avancer ou reculer d’une dent
Exemple: Tailler un engrenage de 38 dents • 1ère coupe • 8000/38 = 210.5263 -> 211 pas • 2ième coupe • 8000/38*2 = 421.0526 -> 421 pas – 211 = 210 pas • 3ième coupe • 8000/38*3 = 631.5789 -> 632 pas – 210 - 211 = 211 pas • 4ième coupe … Le processus se continue jusqu’à 38 coupes La somme de tous les pas = 8000
Revision du code en C • Stepper.c
Conclusion • Présentation des moteurs pas-à-pas • Consulter les URLs suggérés • Exemple de driver (hardware) avec des darlingtons. • Exemple de sous-routine (software) en C • Application pratique, qui permet de semi-automatiser la fabrication d’engrenages