Commande_de_moteur
Transcript of Commande_de_moteur
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
Moteurs pas à pas
• AvantagesAsservissement de position
ou de vitesse en boucle ouverte
Fort couple à basse vitesse
Simplicité de mise en œuvre
Positionnement statique
Fiabilité
Faible prix
• InconvénientsPositionnement discret
Faible vitesse maximale
Bruyant, source d’oscillations
Faible puissance
Faible rendement
Différents type de moteurspas à pas
• Aimant permanentUn aimant permanent est solidaire de l'axe du moteur.
Couple élevé, faible résolution, couple résiduel moteur hors tension.
• Réluctance variableRotor à 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.
• HybrideDeux 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.
• EnroulementsDeux 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
Angle I/I0 Phi A I/I0 Phi B
0 1 0
22.5 0.924 0.383
45 0.707 0.707
67.5 0.383 0.924
90 0 1
112.5 -0.383 0.924
135 -0.707 0.707
157.5 -0.924 0.383
180 -1 0
202.5 -0.924 -0.383
225 -0.707 -0.707
247.5 -0.383 -0.924
270 0 -1
292.5 0.383 -0.924
315 0.707 -0.707
337.5 0.924 -0.383
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 circuits de commande
• 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
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 direction30 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
16F877Affichage 4digits
7 segments#14
Bts cmdButtées
#6
MAX232#2
2*LMD18245#10
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 digitsanciennne_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 1reste = reste-(digit[i]*diviseur[i]); //et calcul du reste
}
• Affichage des donnéesfor (i=0;i<4;i++) //pour chaque digit
{PORTA = port_a[digit[i]]; //port_a[] et port_b[] contiennent les
valeursPORTE = port_e[digit[i]]; //de segment pour chaque chiffre}