Pont diviseur de tension pour asservir un moteur
Modérateur : Modérateur
Pont diviseur de tension pour asservir un moteur
Bonjour,
Je compte asservir un moteur en position en utilisant un ATmega16. Pour faire ça, je pensais tout simplement monter un potentiomètre sur l'axe et un montage diviseur de tension pour mesurer la position du moteur (en bref, j'alimente le potentiomètre en +VCC et je récupère la tension sur la borne du milieu et je l'envoie sur l'ADC).
Est-ce que quelqu'un a déjà fait un montage de ce type? J'ai quelques inquiétudes concernant la précision de la mesure, mais je ne suis pas au degré près (d'ailleurs je suis plus inquiet par l'instabilité que par l'imprécision).
Pour info le moteur est à courant continu commandé en PWM.
Je compte asservir un moteur en position en utilisant un ATmega16. Pour faire ça, je pensais tout simplement monter un potentiomètre sur l'axe et un montage diviseur de tension pour mesurer la position du moteur (en bref, j'alimente le potentiomètre en +VCC et je récupère la tension sur la borne du milieu et je l'envoie sur l'ADC).
Est-ce que quelqu'un a déjà fait un montage de ce type? J'ai quelques inquiétudes concernant la précision de la mesure, mais je ne suis pas au degré près (d'ailleurs je suis plus inquiet par l'instabilité que par l'imprécision).
Pour info le moteur est à courant continu commandé en PWM.
- Zera
- REGULIER
- Messages : 132
- Inscription : 18 avr. 2006 14:03
- Localisation : France - Alsace
- Contact :
Salut
Cela devrait fonctionner, mais comme tu le dis, cela risque de ne pas être précis.
Il faut trouver un potentiomètre sans butée et faire attention au saut de retour à 0, la précision pouvant être déplorable dans cette zone.
Il y a une raison pour laquelle tu ne veux pas utiliser un codeur incrémental ? (plus précis, numérique, etc)
Cela devrait fonctionner, mais comme tu le dis, cela risque de ne pas être précis.
Il faut trouver un potentiomètre sans butée et faire attention au saut de retour à 0, la précision pouvant être déplorable dans cette zone.
Il y a une raison pour laquelle tu ne veux pas utiliser un codeur incrémental ? (plus précis, numérique, etc)
non l'idéal serait de mettre un codeur. Tu peux en faire pour pas cher avec un opto à fourche une imprimante laser et un transparent.
Vince
http://anyedit.free.fr/
http://electropol.free.fr/
Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.
http://anyedit.free.fr/
http://electropol.free.fr/
Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.
Ou un codeur absolu (8 fourches optiques pour 256 bits) contre 2 pour un codeur relatif avec une origine identifiée. Mais j'insiste le potentiomètre pour sembler simple n'est pas fiable ou il faut mettre du haut de gamme sinon pour 2 positions identiques le potar donne tjs 2 valeurs différentes.l'idéal serait peut être un
Un réducteurs c'est plein d'avantages et d'inconvénients aussi il faudrait nous en dire plus sur le but.potentiomètre multi-tours avec un système multiplicateur par exemple,
Vince
http://anyedit.free.fr/
http://electropol.free.fr/
Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.
http://anyedit.free.fr/
http://electropol.free.fr/
Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.
Merci pour vos réponse qui confirment les peurs que j'avais.
Je vais donc suivre vos conseils et utiliser un codeur relatif. J'aimerai bien savoir quelle est la probabilité de perdre un top (et donc de se retrouver décalé). C'est pour savoir si j'ai besoin de mettre un 3ème optocoupleur pour caler la position 0.
Sinon au niveau de la programmation (désolé c'est plus trop la bonne rubrique), je pense brancher un opto sur une interruption et l'autre sur un port classique (les deux optos étant décalés) et mette dans le code d'interruption:
INT opto1 { if( opto2 ) pos++; else pos--; } C'est la bonne solution?
PS: le but est un asservissement en position avec une précision de 5° d'un moteur+réducteur qui tourne à une vitesse max de 30 tr/min et qui est soumis à un couple résistant aléatoire (ie difficilement modélisable).
Je vais donc suivre vos conseils et utiliser un codeur relatif. J'aimerai bien savoir quelle est la probabilité de perdre un top (et donc de se retrouver décalé). C'est pour savoir si j'ai besoin de mettre un 3ème optocoupleur pour caler la position 0.
Sinon au niveau de la programmation (désolé c'est plus trop la bonne rubrique), je pense brancher un opto sur une interruption et l'autre sur un port classique (les deux optos étant décalés) et mette dans le code d'interruption:
INT opto1 { if( opto2 ) pos++; else pos--; } C'est la bonne solution?
PS: le but est un asservissement en position avec une précision de 5° d'un moteur+réducteur qui tourne à une vitesse max de 30 tr/min et qui est soumis à un couple résistant aléatoire (ie difficilement modélisable).
De cette façon tu perd la moitiè de tes fronts.
Vince
http://anyedit.free.fr/
http://electropol.free.fr/
Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.
http://anyedit.free.fr/
http://electropol.free.fr/
Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.
Même les 3/4 puisque je ne regarde que le front montant de l'opto1 alors qu'il reste le front descendant de l'opto1 et les deux fronts de l'opto2.vincevg a écrit :De cette façon tu perd la moitiè de tes fronts.
Mais je me disais que cette façon était plus sûre, car si la distance entre les deux optos n'est pas strictement égale au quart d'un pas ou si la détection des fronts descendants n'est pas symétrique avec la détection des fronts montants, j'aurai une non-linéarité puisque j'aurai des pas de longueurs différentes. (Je peux faire un schéma si ça semble pas clair).