Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai...

21
Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006

Transcript of Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai...

Page 1: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

Une application avec un moteur pas-à-pas, un PIC

et le langage C

Par: André ThébergeLe 2 Mai 2006

Page 2: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 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

Page 3: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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.

Page 4: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

Un exemple de moteurUn exemple de moteur

Page 5: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

La rotation du moteurLa rotation du moteur

Enroulement 1a 1000100010001000100010001 Enroulement 1b 0010001000100010001000100 Enroulement 2a 0100010001000100010001000 Enroulement 2b 0001000100010001000100010

Page 6: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

Unipolaire vs. BipolaireUnipolaire vs. Bipolaire

Unipolaire utilise 5 ou 6 fils, un ou 2 communBipolaire utilise 4 fils

Page 7: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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/

Page 8: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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)

Page 9: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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

Page 10: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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 !!!

Page 11: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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);

}

}

Page 12: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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)

Page 13: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

Le PCB du contrôleur à PICLe PCB du contrôleur à PIC

Page 14: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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’

Page 15: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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

Page 16: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

Une tête à diviser sur une fraiseuse

Une tête à diviser sur une fraiseuse

Page 17: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

La fraiseuse en opérationLa fraiseuse en opération

Page 18: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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

Page 19: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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

Page 20: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

Revision du code en CRevision du code en C

Stepper.c

Page 21: Une application avec un moteur pas-à-pas, un PIC et le langage C Par: André Théberge Le 2 Mai 2006.

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