Bonjour à tous.
A l'aide d'un capteur angulaire magnétique, d'une arduino et d'un moteur à courant continu, je tente un asservissement en position.
La fonction de transfert que je considère pour le moteur est la suivante:
où:Code:G = feedback(1/(J*s)*Km/(Rm + Lm*s), Km)/s;
Km: constante de couple, caractérisée à 0.0025N.m/A
Lm: inductance, inconnue, fixée à 10E-3 H
Rm: résistance moteur, caractérisée à 3.3 Ohms:
J: inertie de l'axe, inconnue, cependant avec les relations de base, l'axe cylindrique aurait une inertie de 1E-8 kg.m² (à un facteur 10 près)
s: variable de laplace.
Je considère le frottement visqueux f nul
Pour rappel, le modèle est ici:
http://wikimeca.org/index.php?title=...ourant_continu
Mon capteur angulaire renvoie une tension entre 0 et 5V sur 1 tour. La arduino acquiert le signal sur 1024 valeurs.
Mon correcteur a été synthétisé par synthèse Hinfini (vue la fonction de transfert, j'asservis des radians).
Mon douloureux problème: mon asservissement fonctionne en pratique, mais seulement si en entrée de correcteur (discrétisé à 2kHz) mon erreur d'asservissement est en LSB (c'est à dire radians * 1024 / (2*pi)).
Voilà, ça ne devrait donc pas fonctionner mais ça fonctionne, je ne comprends pas pourquoi... Il y a tellement de variables que ce n'est pas évident de cibler le problème.. C'est comme si un gain de ~163 dont je n'ai pas connaissance se baladait dans ma chaîne...
Avis à ceux qui pourraient tilter sur une cause possible, je leur serais bien reconnaissant !
Merci
-----