Upload
ambre-keller
View
104
Download
0
Embed Size (px)
Citation preview
Une application avec un moteur pas-à-pas, un PIC
et le langage C
Par: André ThébergeLe 2 Mai 2006
AgendaAgenda
Théorie du moteur pas-à-pas (stepper motor)Le circuit de drive, et l’interface au PICLa sous-routine en langage CUne application concrète: la tête à diviser
électroniqueQuestions
Introduction au moteur 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ôlesLa 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.
Un exemple de moteurUn exemple de moteur
La rotation du moteurLa rotation du moteur
Enroulement 1a 1000100010001000100010001 Enroulement 1b 0010001000100010001000100 Enroulement 2a 0100010001000100010001000 Enroulement 2b 0001000100010001000100010
Unipolaire vs. BipolaireUnipolaire vs. Bipolaire
Unipolaire utilise 5 ou 6 fils, un ou 2 communBipolaire utilise 4 fils
Autres types de moteursAutres types de moteurs
Moteurs à réluctance variableMoteurs bi-filairesMoteur multiphasePour plus d’informations:
http://www.cs.uiowa.edu/~jones/step/types.htmlhttp://www.doc.ic.ac.uk/~ih/doc/stepper/
Caractéristiques de notre moteur exemple:
Caractéristiques de notre moteur exemple:
Unipolaire, 6 fils200 pas, chacun de 1.8 degrésChaque enroulement: 10 ohms, 8V DCCouple (Torque ) suffisant pour entraîner la
charge (Tête à diviser)
Circuit de drive et interface au PIC
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
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-121Ic=5A, Vce=2V @ Ib=12mA, hfe=1000
Ib=375mA !!!
La routine ‘drive_stepper’ en C
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
Application: la tête à diviser
PIC utilisé: PIC16F876, 28 brochesMoteur branché (via driver) sur PC0-PC3LCD 16x1 sur port B, multiplexé avec clavier 6
touches2 alimentations séparées, une pour le moteur
(10-12VDC), une pour la carte avec PIC (9V)
Le PCB du contrôleur à PICLe PCB du contrôleur à PIC
Clavier de contrôleClavier de contrôle
Avance manuelle et mise à zéro
Facteur de division du cercle (# dents pour un
engrenage)
Avance par secteur:
360 deg. / facteur
Anti-horaire / ‘-’ Horaire / ‘+’ ‘Enter’
La tête à diviserLa tête à diviser
Utilisé sur une fraiseuse pour tailler des engrenages: 8 set de couteaux/pitch pour des profils de dents différentsLe 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éeEn 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
Une tête à diviser sur une fraiseuse
Une tête à diviser sur une fraiseuse
La fraiseuse en opérationLa fraiseuse en opération
Exemple d’utilisationExemple 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
Exemple: Tailler un engrenage de 38 dents
1ère coupe8000/38 = 210.5263 -> 211 pas
2ième coupe8000/38*2 = 421.0526 -> 421 pas – 211 = 210 pas
3ième coupe8000/38*3 = 631.5789 -> 632 pas – 210 - 211 = 211 pas
4ième coupe… Le processus se continue jusqu’à 38 coupesLa somme de tous les pas = 8000
Revision du code en CRevision du code en C
Stepper.c
ConclusionConclusion
Présentation des moteurs pas-à-pasConsulter les URLs suggérés
Exemple de driver (hardware) avec des darlingtons.Exemple de sous-routine (software) en CApplication pratique, qui permet de semi-automatiser la fabrication
d’engrenages