321 likes | 1.75k Views
Commande de moteur pas à pas. En micro pas. Les différents moteurs d’asservissement. Les moteurs DC à balais Les moteurs DC sans balais Les moteurs Synchrones Les moteurs pas à pas. Avantages Asservissement de position ou de vitesse en boucle ouverte Fort couple à basse vitesse
E N D
Commande de moteurpas à pas En micro pas
Les différents moteurs d’asservissement • Les moteurs DC à balais • Les moteurs DC sans balais • Les moteurs Synchrones • Les moteurs pas à pas
Avantages Asservissement de position ou de vitesse en boucle ouverte Fort couple à basse vitesse Simplicité de mise en œuvre Positionnement statique Fiabilité Faible prix Inconvénients Positionnement discret Faible vitesse maximale Bruyant, source d’oscillations Faible puissance Faible rendement Moteurs pas à pas
Différents type de moteurspas à pas • Aimant permanent Un aimant permanent est solidaire de l'axe du moteur. Couple élevé, faible résolution, couple résiduel moteur hors tension. • Réluctance variable Rotor à encoches en fer doux se positionnant dans la direction de la plus faible réluctance. Couple faible, bonne résolution, pas couple résiduel moteur hors tension. • Hybride Deux rotor à encoches en fer doux reliés par un aimant permanent. Couple élevé, très bonne résolution, faible couple résiduel moteur hors tension. • Enroulements Deux enroulements par phases: commande unipolaires, électronique simple, couple faible. Un enroulement par phase : commande bipolaire, pont en H, couple fort.
La commande • Principe: • alimenter successivement les phases, si possible en courant. • Partie logique: • CI combinatoire • CI Spécialisés • µ contrôleurs • Partie puissance • Composants discrets (Bip/Mos résistance limitation courant) • CI interface (Ponts en H intégrés, avec PWM, CNA....)
Pas/demi pas/quart de pastaratata • Pas entier : • Un seul enroulement alimenté à chaque pas • Deux enroulements alimentés à chaque pas (plus de couple)
Pas/demi pas/quart de pastaratata • Demi pas ! Variation importante de couple (Soit 1, soit 2 enroulements alimentés)
Pas/demi pas/quart de pastaratata • Demi pas avec compensation de couple • Même cycle que précédemment, mais i = 0.707 i0 (sin π/4) lorsque les deux enroulements sont alimentés pour obtenir une force magnétomotrice constante Nécessité d’une régulation de courant Sans compensation de couple Avec compensation de couple
Pas/demi pas/quart de pas • Quart de pas • Même cycle que précédemment, en rajoutant des valeurs intermédiaires du courant Nécessité d’un CNA
Pas/demi pas/quart de pas • Les options possibles pour le DAC • DAC « standard », 4,8,12... bits • Moins bonne résolution à nb équivalent • Correction possible d’angle par soft (non linéarité du moteurs) • Composant hyper classiques • DAC « sinus », 3 ou 4 bits • Excellente résolution • Mouton à 5 pattes difficile d’approvisionnement • Inutile d’espérer mieux que le 1/16 de pas sans correction logicielle
Les ultra classiques SAA 1027 Unipolaire SAA 1024 Bipolaire L6506/L296 (ST) Les fabricants Alegro (le spécialiste en CNA sinus) Fairchild Mitsubishi NS PMD (Performance Motion Devices) ( produits très spécifiques ) ST Les circuits de commande
Exemple de circuit de commande • Cahier des charges • Commande de moteur bipolaire • 3A 30V • Commande pas entier à huitième de pas • Vitesses très lente (qqs µm/min) • Affichage de la vitesse de translation • Interface RS232
Choix des circuits • Pour la partie commande : • µ contrôleur pour gérer l’interface, le moteur, l’affichage • 4+7+3 sorties cmd afficheurs et pts décimaux • 2+2+2 entrées butées, poussoirs, sélection vitesse • 2*4 + 2 bits CNA et direction • 30 E/S + RS232 = 16F877 • Pour la partie puissance : • Pont en H avec CNA 4bits intégré • LMD18245 National semiconductor
Présentation du LMD18245 • 3A, 55V DMOS Full-Bridge Motor Driver
Schéma général Bts cmd Buttées #6 16F877 Affichage 4digits 7 segments #10 2*LMD18245 #14 MAX232 #2
Code de commande moteur • Rotation des phases et valeurs du courant dans un tableau de constantes • Par exemple en pas entiers phase A 0b00001111 0b00000000 0b00001111 0b00000000 • A chaque interruption timer on avance d’un pas dans le tableau modulo 4,8,16 ou 32
Code de commande moteur • Fonction avance/recule d’un pas void step(char dir) { static int16 pos = 0; int16 steps,indice; steps= microstep<<2; // il y a 4 temps pour un pas entiers, 8 pour 1/2pas... pos = (steps + pos + (int16)dir) & (steps-1); // Step sert d’offset dans le tableau, dir donne le sens de parcourt, le & (steps-1) fait un modulo pour reprendre au début lorsque l’on est arrivé au bout du tableau indice = pos+steps-4; // calcule l’indice ou trouver la constante dans le tableau petit complication du au fait qu’il n’y a qu’un tableau de 60 valeurs PORTD=(PD[indice]); PORTB=(PB[indice]); // envoie les valeurs aux deux DAC des pont en H }
Code d’affichage de vitesse • L’affichage est multiplexé • Les valeurs correspondant aux segments allumés pour chaque chiffre sont stockées dans des tableaux de constantes • Opération en deux temps • Calcul de la valeur de chaque digit • Affichage de ces valeurs
Code d’affichage de vitesse • Calcul des valeurs des 4 digits anciennne_valeur=abs(valeur); reste=anciennne_valeur; for (i=0;i<4;i++) //calcul des quatre { //digits par division successives digit[i]=reste/diviseur[i]; //par 1000 100 10 1 reste = reste-(digit[i]*diviseur[i]); //et calcul du reste } • Affichage des données for (i=0;i<4;i++) //pour chaque digit { PORTA = port_a[digit[i]]; //port_a[] et port_b[] contiennent les valeurs PORTE = port_e[digit[i]]; //de segment pour chaque chiffre }