DIY - Réglage d'un PID

  • Bonjour,


    voici quelques informations rassemblées sur le sujet du réglage d'un PID :)


    s'il fait du yoyo ou s'il n'est pas assez réactif ;)

    Définitions :


    https://fr.wikipedia.org/wiki/R%C3%A9gulateur_PID


    voilà comment se passe l'asservissement pour nos simus


    [indent]- à l'instant t, l'actionneur de votre simulateur est à une certaine position X1


    - cette position est lue par le capteur


    - le jeu envoie une donnée de télémétrie : c'est la prochaine position de votre actionneur X2 (la consigne, la cible)


    - le contrôleur de puissance fait tourner le moteur pour aller en X2 (en marche avant ou en marche arrière en comparant la position lue et la position cible)


    - et voilà ! :)[/indent]


    mais non, en fait ce n'est pas si simple... :(


    car dans notre système


    - le moteur a des caractéristiques particulières (une accélération maximum, une vitesse maximum...),


    - le chemin à parcourir entre X1 et X2 est parfois plus ou moins long (selon ce que la voiture subit dans le jeu : du plat ou un passage de vibreur)


    - la boucle de calcul et le capteur ont leurs vitesses de rafraîchissement...


    [indent]si on fait accélérer le moteur à fond, en se disant qu'on sera le plus réactif possible et donc le plus optimum, voici ce qui va se passer :


    pour un chemin long (X2 éloigné de X1), c'est la meilleure façon d'atteindre la cible !


    mais pour un chemin court (X2 proche de X1), on va dépasser la cible tellement on sera allé vite ! pas bon...


    inversement si on veut éviter le dépassement de consigne alors pour un chemin long, on sera très loin de la cible... pas bon


    mini_778294schneiderPID.jpg[/indent]


    on voit donc bien qu'il n'y a pas de réglage magique qui est le meilleur dans toutes les situations :mur:


    mais on peut "optimiser" l'ensemble



    Ici une explication imagée qui devrait nous parler : cela décortique notre conduite d'une auto sous l'angle de vision PÏD


    http://www.ferdinandpiette.com/blog/2011/0...ire-de-calculs/


    application à un code Arduino : http://www.ferdinandpiette.com/blog/2012/0...r-avec-arduino/


    les principes de régulation : http://www.energieplus-lesite.be/index.php?id=11247


    - La régulation par "tout ou rien" ou "On-Off"


    - La régulation Proportionnelle (P)


    - La régulation Proportionnelle - Intégrale (PI)


    - La régulation Proportionnelle - Intégrale - Dérivée (PID)



    ce que l'on souhaite obtenir :


    - le dépassement réduit


    - le temps de réponse rapide
    (ou la bande passante large)


    - l'écart entre la sortie et la consigne du système est nul en régime permanent.


    - une bonne robustesse par rapport à la perturbation et aux variations des paramètres du système.


    pour nos simulateurs, c'est principalement les 2 premiers objectifs

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition

    Message modifié 1 fois, dernière modification par RacingMat (20 avril 2017 à 21:29).

  • Compréhension des 3 termes :


    un PID : Proportionnel / Intégral /Dérivé


    http://www.schneider-electric.fr/fr/faqs/FA20171/


    * Le gain proportionnel


    Il permet d'atteindre la consigne au plus vite, en contrepartie, si le gain est trop élevé, la réponse risque de dépasser la consigne.


    * Le gain intégral


    Il permet de corriger l'erreur de dépassement de la réponse à la consigne lorsque le gain proportionnel est trop important,


    mais il peut lui-même induire un écart résiduel entre la consigne et la réponse à la consigne.



    * Le gain dérivé


    Il permet d'atténuer l'écart résiduel généré par le gain intégral.


    Facteurs favorables :


    - une fréquence d'échantillonnage élevée (cela permet d'utiliser la Dérivation)


    - limitez le bruit de votre signal : soignez le blindage de vos câbles !

    Méthodes de réglages :


    - la théorie compliquée :


    on modélise intégralement le système (jeux, frottements, fréquence de la boucle de rétroaction, couple moteur...) et puis on calcule les coefficients par une étude mathématique.


    Ceci n'est évidement pas applicable à notre situation DIY.


    - à la mano...


    mais pas n'importe comment ;) en suivant une progression précise dans les essais, on paramètre progressivement le système.


    La "seconde" méthode empirique de Ziegler-Nichols est très répandue dans l’industrie ou chez les automaticiens pour régler les PIDs.


    Elle a l’avantage de ne pas nécessiter de modélisation précise du système asservi, mais se contente d’une suite d'essais expérimentaux, ce qui rend cette méthode très simple :


    * démarrez avec Ki=0 et Kd=0


    * augmentez Kp jusqu'à l'apparition d'une oscillation (pour des moteurs, il s’agira plutôt d’une vibration autour de la position demandée).


    * notez ce Kp limite


    * mesurez la période des oscillations T osc


    -> utilisez un chronomètre (mesurer la durée de 10 oscillations par exemple,


    -> ou plus visuel utilisez un graphe de la position du moteur (SMC3) : la période est la durée entre 2 sommets de la sinusoïde


    * il ne reste plus qu'à calculer les paramètres cibles avec les simples formules suivantes :)


    912832ZieglerNichols.png


    * vous pouvez ensuite ajuster autour de ces valeurs mais sans trop vous éloigner



    - outils :


    SMC3 app pour afficher l'écart entre consigne et position, pour réglage du PID mini_930459Rufusdufuscope.jpg



    - les limites :


    Attention, en pratique on ne peut pas augmenter les coefficients à volonté.


    En effet, à un moment on atteint le seuil du système mécanique : en additionnant le P, le I et le D, on dépasse les capacités du moteur (accélération plafonnée).


    Dans ce cas le signal PID sera tronqué et donc la régulation ne fonctionnera plus... car le modèle considéré jusqu’ici ne sera alors plus valable.


    Attention, la méthode de Ziegler-Nichols donne un gain agressif et a tendance à favoriser les dépassements.

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition

    Message modifié 2 fois, dernière modification par RacingMat (20 avril 2017 à 21:31).

  • Documents :


    un synthétique doc en anglais très bien fait (j'ai une traduction en cours... depuis longtemps...)


    http://www.wescottdesign.com/articles/pid/pidWithoutAPhd.pdf


    http://www.energieplus-lesite.be/index.php?id=11247



    explications imagées en prenant l'exemple de notre conduite d'une auto


    http://www.ferdinandpiette.com/blog/2011/0...ire-de-calculs/



    http://www.totofweb.net/projets/pid/rapport.pdf


    Codes arduino :


    application par ferdinandpiette à un code Arduino : http://www.ferdinandpiette.com/blog/2012/0...r-avec-arduino/


    un code complet Arduino avec PID


    https://www.usinages.com/threads/cherche-ai...ino.56210/print



    http://playground.arduino.cc/Code/PIDLibrary


    http://playground.arduino.cc/Code/PIDAutotuneLibrary


    - voir le code de Wanegain [TUTO] Configurer SimTools + code XPID arduino


    - voir le code de Lipide512 qui est un simple P (pas de I ni de D) tuto AàZ : playseat 2DOF arduino/motomonster/MEG12V1

    Wanegain a écrit :

    Pour régler correctement un PID, il est quand même indispensable de
    pouvoir visualiser la courbe de régulation (j'utilise SMC3Utils).


    Ca doit faire près d'un an que je dis que je vais faire une vidéo sur le réglage du PID... siffler.gif


    Le site web qui génère le code Arduino, c'est pour le code que je fournis avec une ou plusieurs Sabertooth derrière +.gif

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition

    Message modifié 1 fois, dernière modification par RacingMat (20 avril 2017 à 21:36).

  • ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition