Régulation moteur : PID

Bonjour,

Je possède deux moteurs type pololu de référence 2282 (datasheet)

Pour les contôler j'utilise une Arduin Due, et les VNH5019 de pololu (Datasheet)

J'aimerais contrôler ma vitesse de rotation, donc je calcul ma vitesse de translation en mm/s avec le diamètre de la roue le temps entre les mesures (Échantillonnage) et le nombre d'impulsion codeur mesuré (codeur quadrature).

Cependant lors que ma consigne est de 800mm/s ma régulation se fait entre 770mm/s et 811mm/s du à la résolution de calcul :

Par exemple : je mesure 33 impulsions, j'ai donc une vitesse de 770mm/s ; je mesure 34 impulsions, j'ai donc une vitesse de 811mm/s ;

Il est donc impossible d'atteindre la consigne à cause de la résolution (ici de l'ordre de 40mm/s)

Est-il possible de faire une meilleure régulation (par exemple en tr/s) ?

Sachant que j'aimerais réguler en position plus tard.

Merci :)

Cordialement, Minicarpet

Question : En combien de temps tu obtiens tes 33 ou 34 impulsions ? (il y a incohérence dans les unités des valeurs que tu donnes à mon avis )

J'imagine que l'encodeur est sur l'axe du moteur, donc à priori on ne peut pas y toucher, mais de toute façon il est a la meilleure place. Les pistes pour améliorer la précision c'est d'augmenter le temps d'échantillonnage (mais le système sera alors plus lent à réagir) ou de modifier la mécanique pour augmenter la vitesse de moteur (donc plus d'impulsions) pour obtenir le même déplacement (mais tu seras limité par la vitesse Max du moteur)

Pour la régulation en position tu dois déterminer le facteur de conversion entre les impulsions et le déplacement (combien d'impulsions me donnent 1mm de déplacement ... Ou réciproquement)