Les codeurs incrémentaux sont largement utilisés en robotique pour réaliser des asservissements en vitesse et/ou en position. Mais ils sont relativement couteux, surtout quand une bonne résolution est nécessaire. Une solution à peu de frais consiste à utiliser un moteur pas à pas de récupération.
Principe
Ces moteurs ont typiquement deux bobinages qui produisent des pulses en quadrature de phase quand l’axe du moteur est mis en rotation. Les signaux peuvent ainsi être mis en forme pour produire deux trains d’impulsions digitaux que l’on lira avec un microcontrôleur comme on le ferait avec tout autre codeur incrémental.
Voici à quoi ressemblent ces signaux (réalisés avec un analyseur logique) :
Si vous lisez de gauche à droite, l’alternance des niveaux haut et bas sur la phase B par rapport à ceux sur la phase A est différente que si vous lisez de droite à gauche, donc :
– vous connaissez le sens de rotation
– chacun des fronts d’une des deux phases correspond à un demi-pas de moteur
On obtient ainsi un encodeur d’une précision égale à 2 fois le nombre de pas du moteur. Attention à bien gérer le retour en arrière quand vous êtes au milieu d’un pas (c’est pour ça qu’on n’utilise pas tous les fronts : il vaut mieux utiliser le front sur phase A et le front sur phase B pour valider le pas en cours, sinon on perd de la précision quand le robot vibre autour de sa position (on incrémente à tord).
Note : choisir un moteur bi-polaire présentant un faible couple de maintien à vide : ainsi il tournera avec moins d’effort.
Description du circuit
Un double comparateur est utilisé pour produire des signaux carrés à partir des sorties des bobinages. Un fil de chaque bobinage est connecté à une tension de référence valant la moitié de la tension d’alimentation du circuit.
L’autre extrémité des bobinages est connecté via un circuit de limitation courant/tension à l’entrée non-inverseuse d’un comparateur. Une résistance (voir schéma, R7 & R8) limite le courant de retour dans les diodes de protection (D5-D8) du comparateur contre les pics de tension des bobines.
Les entrées inverseuses sont connectées à la tension de référence alim/2. Un offset est appliqué via R10 et R11 aux entrées inverseuses pour produire une hystérésis.
Note : si l’alimentation est de 5 volts, les sorties sont compatibles TTL.
Ce circuit est suffisamment sensible pour détecter un seul pas, même à basse vitesse. Si les vitesses à mesurer sont vraiment très faibles, il faut prévoir un engrenage pour assurer une vitesse de rotation de l’axe moteur suffisante.
Schéma du circuit
Pour conclure, pensez à relier à la masse la carcasse des moteurs pour éviter de parasiter les comparateurs.
Pour aller plus loin
Cette utilisation est répandue et on en trouve trace dans de nombreux articles (en anglais généralement) sur Internet ou dans les magazines. Par exemple : montage de 4QD-TEC.
–
Vos commentaires
# Le 4 février 2015 à 11:02, par fatiiii En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
bonjour,
on est en train de travailler sur le sujet manège à sensation à partir d’un bras robotisé, et donc pour récupérer la position du moteur on a utilisé les codeurs incrémentaux ; mais le problème qui s’oppose c’est de faire tourner le moteur vers sa position précédente.
quelqu’un peut nous aider s’il vous plait !!
# Le 19 février 2015 à 14:06, par Eric P. En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
On ne comprend pas votre problème tel qu’il est décrit. Soyez plus précis si vous voulez des réponses.
Répondre à ce message
# Le 11 juillet 2013 à 13:32, par KEMAL En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Bonjour,
dans le cadre de mon projet je dois asservir un moteur pas à pas qui entraîne une antenne dans un mouvement de rotation. Le but est positionner l’antenne verticalement soit 90° ou horizontalement soit 0° j’avais prévu d’utiliser un moteur pas à pas avec un codeur incrémental, mais d’après l’article que vous avez publié je me demande si c’est nécessaire d’utiliser un moteur pas pas + un codeur ?
j’aimerai bien avoir un conseil
merci
Répondre à ce message
# Le 3 novembre 2008 à 21:24, par ? En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Très bonne idée ce codeur !
J’ai réalisé le montage, il marche très bien, mais je me pose une question,comme je peux savoir dans quel sens tourne le moteur ?
Merci et bonne continuation.
# Le 6 novembre 2008 à 13:17, par Julien H. En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
C’est le principe des signaux dits en quadrature, c’est-à-dire déphasés d’une demi-période : il y a deux signaux carés A et B.
Quand le moteur tourne dans un sens, l’alternance est par exemple (selon quel fil vous appelez A ou B) : A haut puis B haut puis A bas puis B bas. Alors qu’elle est différente quand le moteur tourne dans l’autre sens : A haut puis B bas puis A bas puis B haut.
Nous ferons un article plus détaillé très prochainement, avec exemple de code.
# Le 12 novembre 2008 à 14:28, par Jean Louis En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
J’attends avec impatience alors ! J’ai essayé de faire l’acquisition sur un Pic en n’utilisant qu’un seul front d’une voie pour détecter le sens de rotation mais ça ne marche pas du tout à faible vitesse, enfin ça ne marche bien que dans un sens... C’est ennuyeux.
Il faut que je suive votre conseil de traiter les deux voies simultanément.
Merci pour votre aide.
# Le 21 novembre 2011 à 16:10, par Telson En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Bonjour,
Sur le montage, seul le comparateur 1 est connecté à une alim 5V + condensateur.
Devons nous connecter le deuxième comparateur à une alim +5V avec un condensateur comme sur le premier comparateur ?
Merci.
Cordialement.
# Le 12 décembre 2011 à 18:16, par Julien H. En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Oui, tous les amplificateurs opérationnels doivent être connectés. On ne montre habituellement qu’un seul AOP complètement câblé, et les autres suivent le même schéma, pour ne pas alourdir la vue.
# Le 9 janvier 2012 à 15:44, par Telson En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Bonjour,
Peut t’on utiliser des diodes 1N4148 comme sur ce schéma presque identique :http://coucou.28.free.fr/codeurpascher.htm
http://translate.googleusercontent.com/translate_c?hl=fr&langpair=en|fr&rurl=translate.google.fr&u=http://www.webx.dk/oz2cpu/20m/encoder.htm&usg=ALkJrhgFDNS9Ns8FjmZJ-fpCf6MCpLgCvQ
Est les condensateurs sont t’ils polarisés ou non ?
Merci par avance.
Cordialement.
# Le 3 juin 2012 à 13:09, par Gargan En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Bonjour à tous je viens de refaire ce montage avec un Pas à Pas bipolaire mon probleme est que sur l’oscilloscope mes signaux ne sont pas déphasés ... Il y aurait il une explication ?
Merci
# Le 3 juin 2012 à 17:10, par Julien H. En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Je n’en vois pas.
# Le 16 juillet 2012 à 13:50, par telson En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Pourrais tu donner un lien vers ton schéma ainsi que les caractéristiques de ton moteur ?
Merci.
Répondre à ce message
# Le 17 mai 2009 à 17:00, par Dhya En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
pour ma part je souhaiterai savoir comment on peut mettre en oeuvre un encodeur incrémental sur un microcontroleur
# Le 18 mai 2009 à 12:34, par Julien H. En réponse à : Réalisation d’un codeur incrémental à partir d’un moteur pas à pas.
Il faut relier une sortie (A ou B) de l’encodeur à une patte spéciale du microcontrôleur appelée "interruption externe" qui va déclencher dans le programme une fonction capable de déterminer la position relative de l’encodeur par rapport à la position précédente et déterminer s’il faut incrémenter de 1 ou décrémenter de -1 ou lever une erreur selon le cas.
Répondre à ce message