Problème asservissement en position d'un moteur CC

Bonjour à tous, je crée ce topic suite à un problème que je rencontre dans la réalisation de l'asservissement en position de mon moteur à courant continu.

Je n'ai pas utilisé de pont en H, j'ai utilisé un ALI soustracteur pour obtenir une pwm entre -2,5V et +2,5V puis j'ai lissé cette tension avec un filtre RC, en mettant un rapport cyclique de 255 j'ai donc une tension continue à 2,5V, à 0 on a donc -2,5V et à 128 on a une tension nulle. Je passe ensuite par un amplificateur de gain constant pour pouvoir alimenter mon moteur.

Mon problème est le passage de l'écart au rapport cyclique compris entre 0 et 255.
Je donne un angle consigne (que dois faire l'arbre de sortie), admettons 30 degrés. Avec un rapport de réduction de 1/60 et 12 impulsions par tour du moteur (en utilisant fronts montants et descendants des deux capteurs à effet hall) j'obtiens donc le nombre d'impulsions correspondant à ces 30 degrés sur l'arbre moteur. Nombre d'impulsions consignes que je noterai Ic. L'écart sera donc epsilon = Ic - I avec I le nombre d'impulsions que me renvoient les capteurs (ils sont fixés au moteur).

Mon problème est que je ne vois pas comment passer d'un écart à un rapport cyclique d'autant plus que j'ai ce problème pour le sens de rotation de mon moteur : [0,127] sens 1, [129,255] sens 2.
A noter que mes programmes pour calculer le nombre d'impulsions (par les voies d'interruptions) me permettent d'avoir un nombre d'impulsions positif si je vais dans un sens, et négatif dans l'autre.

Merci d'avance !!

Bonjour,

Tu peux faire un asservissement de type PID. Tu trouveras plein de ressources sur Internet avec ces mots-clés.

C'est ce que je comptais faire mais avec cette histoire de sens 1 si je suis entre 0 et 127 et de sens 2 si je suis entre 129 et 255 bloque l'utilisation d'une correction PID.

Je n'ai pas bien compris les explications de ton premier post, mais pour peut-être te donner des idées, voici ce que je fais:

  • je commande mon moteur (6V max) avec un PWM compris entre 0 et 255, dans un sens ou dans l'autre
  • si la tension de commande issue de mon PID est, par exemple, 3V, j'envoie 128 au PWM et je pilote le pont en H pour qu'il fasse tourner le moteur dans le sens positif
  • si la tension de commande issue de mon PID est, par exemple, -3V, j'envoie toujours 128 au PWM mais je pilote le pont en H pour qu'il fasse tourner le moteur dans le sens négatif

Dans ton cas, il faudrait peut-être décaler la tension de commande issue du PID pour qu'elle soit toujours positive ?

J'ai moi aussi un PWM compris entre 0 et 255 mais mon montage électronique fait que si je mets un nombre entre 0 et 127 pour ma PWM, mon moteur va tourner dans un sens, et si je mets un nombre entre 129 et 255, il tournera dans l'autre. 128 pour ma PWM arrête mon moteur.

Quand vous parlez de PID, vous parlez d'utiliser la bibliothèque PID ?

gilgamesh:
Quand vous parlez de PID, vous parlez d’utiliser la bibliothèque PID ?

Avant d’être une bibliothèque, le PID est un type d’asservissement.

Pour convertir ta tension de commande (entre -x et +x Volts) vers ton PWM (entre 0 et 255), regarde la fonction “map”

tu peux aussi faire une fonction qui converti une valeur allant de -127 -> +127 en 0->255 . C'est juste une addition, c'est pas trop violent...
et seul le résultat de cette fonction sert à générer la PWM.

Il y aura comme ça une relation directe entre le signe de la commande et le sens de rotation. Comme tu as le même signe sur tes mesures, il ne devrait pas y avoir de soucis avec l'emploi d'un PID.