Utilisation d'un éditeur Nous allons utiliser le logiciel libre Gedit afin d'écrire nos programmes. Si vous êtes sous Debian ( ou debian-like ) et qu'il n'est pas installé, IL suffit de l'installer via cette commande : sudo apt-get install



Yüklə 0,51 Mb.
səhifə28/43
tarix04.01.2022
ölçüsü0,51 Mb.
#61490
1   ...   24   25   26   27   28   29   30   31   ...   43
Les PID de contrôle

Le firmware du NXT intègre un contrôleur digital de PID ( Proportional Integrative Derivative ) pour réguler la position et la vitesse des cervau-moteurs avec précision. Ce type de contrôleur est l'un des plus simples et des plus efficaces dans l'automatisme, et est souvent utilisé.

En termes bruts, il fonctionne comme cela :

Votre programme donne au contrôleur un point fixe R(t) à atteindre, celui-ci démarre le moteur avec une commande U(t), mesure sa position Y(t) grâce au calculateur intégré et calcule une erreur E(t) = R(t) - Y(t): voici pourquoi il est appelé "contrôleur en boucle fermée", parce que la position de sortie Y(t) est ramené à l'entrée du contrôleur pour le calcul de l'erreur. Le contrôleur transforme l'erreur E(t) dans la commande U(t) ainsi:

U(t) = P(t) + I(t) + D(t)

Avec :

P(t) = K_P*E(t)



I(t) = K_I*( I(t-1) + E(t) )

D(t) = K_D*( E(t) - E(t-1) )

Cela peut sembler compliqué pour un novice, mais je vais essayer d'expliquer le mécanisme du mieux que je peux.

La fonction est la somme de trois parties : la partie proportionnelle P(t), la partie intégrative I(t) et la partie dérivative D(t).

P(t) rend le contrôleur plus rapide dans le temps mais il n'assure pas qu'il n'y ai aucune erreur d'équilibrage.

I(t) donne de la "mémoire" au contrôleur, dans un sens il accumules les traces d'erreurs et les compense, avec un zéro erreur de moyenne garantie.

D(t) donnes les "prédiction futures" au contrôleur ( comme la dérivée en maths ), ce qui accélère la réponse.

Je comprend que ça peut rester confus. Mais on peut maintenant le tester ensemble pour mieux comprendre. Le programme simple qui suit va nous y aider.

#define P 50

#define I 50

#define D 50

task main(){

RotateMotorPID(OUT_A, 100, 180, P, I, D);

Wait(3000);

}

La fonction RotateMotorPID ( port , speed , Pgain , Igain , Dgain ) vous permet de régler les valeurs des différents gains autrement que celles par défaut. Essayer de définir les valeur suivantes :



- ( 50 , 0 , 0 ) : le moteur ne tourne pas exactement à 180°, car il reste une erreur non compensée

- ( 0 , x , x ) : sans partie proportionnelle, l'erreur est énorme.

- ( 40 , 40 , 0 ) : il ya un dépassement, cela signifie que les mouvements de l'arbre du moteur vont au-delà du point voulu, il va donc faire demi-tour.

- ( 40 , 40 , 90 ) : bonne précision et rapide ( pour le temps à atteindre le point voulu )

- ( 40 , 40 , 200 ) : l'arbre moteur oscille car le gain de dérivée est trop élevé.

Essayez d'autres valeur pour comprendre comment ces gains influences les performances du moteur.




Yüklə 0,51 Mb.

Dostları ilə paylaş:
1   ...   24   25   26   27   28   29   30   31   ...   43




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin