J'ai comme projet de faire un robot qui devra se déplacer dans une pièce et en faire une carte (entre autre).
J'en suis à la partie asservissement en angle.
J'ai implémenté un PID et je rencontre certains problèmes.
La commande moteur va de 0 à 255, mais les moteurs ne peuvent pas faire bouger le robot si la commande est inférieur à 50.
Pour une consigne assez grande pas de problème le robot réagit vite et atteind la consigne assez précisément.
Mais pour une consigne faible 1 degree ou moins, le robot ne bouge pas.
Si je modifie le PID, je vais pouvoir avoir une réponse satisfaisante. Mais dans ce cas je vais avoir un dépassement de consigne avant et une grande perte de précision quand je demande au robot de tourner beaucoup (puisque j'ai fortement augmenté le coefficient de proportionnalité).
Donc :
Est ce que je devrais continuer à essayer de régler le PID car ça devrait fonctionner?
Ou
Est ce que je devrais ajouter une fonction pour compenser la faiblesse de la commande?
Ou
Est ce que c'est juste normal et que je devrais passer à l'étape suivante?
Bonjour
Un PID ne peut faire qu'avec ce qu'on lui donne comme info.
-La chaîne de retour de l'asservissement a-t-elle une résolution de 1° ?
-Quand le système ne réagit pas à un changement de consigne de 1° combien vaut l'erreur, grandeur d'entrée du PID ?
Si je modifie le PID, je vais pouvoir avoir une réponse satisfaisante. Mais dans ce cas je vais avoir un dépassement de consigne avant et une grande perte de précision quand je demande au robot de tourner beaucoup
Pas si le PID est bien réglé (mettre la gomme sur P n'est pas un indice de bon réglage, en réduisant la bande proportionnelle tu tends vers une commande en tout ou rien = moteur arrêté/moteur à fond)
que je trouve tres bien faites par ailleurs
mais je ne comprends pas vraiment ta reponse...
-La chaîne de retour de l'asservissement a-t-elle une résolution de 1° ?
pourrais-tu m'expliquer ce que veut dire "haîne de retour de l'asservissement" et comment on d/finit ou connait la "résolution". Je sais c'est deprimant c'est presque toute la phrase !
quand j'ecrivais "si je modifie Le PID", c'etait principalement,c omme tu le disais booster P (je suis pas alle plus loin car je voyais deja venir le probleme...)
Je passe la consigne en radiant.
si l'angle de depart est 0 et la consigne 3, l'erreur resultante est de 0.0008288 (0,04748 degres)
si l'angle de depart est 0 et la consigne 0.0174, l'erreur resultante est de 0.005321 (0,3049 degres )
J'espere que ces precisions peuvent aider...
Si tu as d'autres references a me conseiller, je suis preneur !
Merci encore.
Avant de détailler un peu une question : le choix de la motorisation est-il irréversible ?
(cf remarque de @vileroi)
Chaîne de retour : ensemble assurant l'obtention d'une information en retour ('feedback') sur la valeur de la grandeur en sortie du système, grandeur qui est ensuite soustraite à la consigne pour déterminer l'erreur.
la question posée aurait pu être formulée à peu près de la manière suivante :
L'information de retour (à soustraire à la consigne) est connue à combien de degrès près ?
S'agit-il d'une information analogique ou numérique ?
une remarque : le terme I de PID sert à 'promouvoir' (par intégration) les petites erreurs dans la commande.
Si je comprends bien la résolution serait définie par le nombre de tick obtenue par les encodeurs.
Dans ce cas, comme j'ai 5880 tick par tour de roue je peux en déduire que la resolution est de 360/5880 = 0,0612 degrés.
Est ce correct?
Quand au choix des moteurs ce n'est pas pas invariable je fais un prototype pour apprendre tout cet univers là. Mais il faudrait que je recommence tout et ça me tente pas trop à priori.
Ceci dit la question semble importante, alors pourquoi serait-il préférable d'utiliser un moteur pas à pas?
C'est pas si difficile de me faire changer d'avis sauf si ça coûte cher...
ludoviclebart:
Quand au choix des moteurs ce n'est pas pas invariable je fais un prototype pour apprendre tout cet univers là. Mais il faudrait que je recommence tout et ça me tente pas trop à priori.
Ceci dit la question semble importante, alors pourquoi serait-il préférable d'utiliser un moteur pas à pas?
C'est pas si difficile de me faire changer d'avis sauf si ça coûte cher...
Dans les toutes petites puissances, ou un réducteur est obligatoire, les frottements secs peuvent être très élevés par rapport aux couples théoriquement nécessaires pour accélerer ou freiner. Il faut des fonctions de régulation spéciales pour les vaincre au démarrage, profiter de leur présence au freinage et éviter qu'ils provoquent des vibrations "parkinson" à l'arrêt. Cela nécessite des connaissance des asservissements non linéaires qui ne sont pas triviales (étude dans le plan de phase, etc.), voire des réalisations basées sur l'expérience (commandes bang-bang, hystérésis...) que des débutants comme vous vont mettre beaucoup de temps à mettre au point. C'est pour ça que les moteurs pas à pas sont bien plus faciles à mettre en oeuvre : ils posent d'autres problèmes mais si vous prenez des bibliothèques bien faites, que vous êtes raisonnable dans le dimensionnement, que vous travaillez en "micro-pas" ces difficultés seront masquées.
Ceci dit la question semble importante, alors pourquoi serait-il préférable d'utiliser un moteur pas à pas?
Il n'y a pas de moteurs qui sont parfaits pour toute situation, chaque moteur a ses avantages et ses inconvénients. Le moteur à CC est idéal pour faire de la variation de vitesse, le pas à pas est idéal pour faire du positionnement. Entre les deux, il existe en gros ce que tu as fait un moteur CC avec un codeur et un asservissement, qui permet de faire la même chose qu'un pas à pas, mais qui est plus complexe si ce n'est pas tout fait. C'est notamment utilisé dans l'industrie pour faire des similis pas à pas de forte puissance.
Pour un pas à pas, il suffit de lui dire d'avancer de N crans pour que l'on n'ai plus à s'en soucier. Le positionnement se fait à 1 pas près.
Par contre, je n'ai pas fait ce calcul, mais je pense que la consommation est beaucoup plus importante
J'ai démonté une imprimante et j'y ai trouvé 2 moteurs pas à pas et un moteur CC avec encodeur. Comme quoi, chacun à sa place.
Merci beaucoup pour vos réponses détaillées!
Je vais probablement faire les 2, je suis curieux
Une plateforme avec les moteurs que j'ai actuellement, et une autre avec des moteurs pas à pas.
Je suis un peu borné et j'aime bien réussir ce que je commence, et dans ce cas même si le chemin n'est pas le bon, juste par curiosité.
Je vais donc devoir me documenter sur les moteurs pas à pas
Sinon côté asservissement, est ce que c'est juste de penser que le nombre de tick par tour de roue divisé pas 360 va me donner ma résolution en degré?