1 / 19

Commande de moteur pas à pas

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

mickey
Download Presentation

Commande de moteur pas à pas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Commande de moteurpas à pas En micro pas

  2. Les différents moteurs d’asservissement • Les moteurs DC à balais • Les moteurs DC sans balais • Les moteurs Synchrones • Les moteurs pas à pas

  3. 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

  4. 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.

  5. 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....)

  6. Pas/demi pas/quart de pastaratata • Pas entier : • Un seul enroulement alimenté à chaque pas • Deux enroulements alimentés à chaque pas (plus de couple)

  7. Pas/demi pas/quart de pastaratata • Demi pas ! Variation importante de couple (Soit 1, soit 2 enroulements alimentés)

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. Présentation du LMD18245 • 3A, 55V DMOS Full-Bridge Motor Driver

  15. Schéma général Bts cmd Buttées #6 16F877 Affichage 4digits 7 segments #10 2*LMD18245 #14 MAX232 #2

  16. 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

  17. 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 }

  18. 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

  19. 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 }

More Related