LINUSBot - Robot suiveur de ligne - avec régulation PID
LINUSBot - contrôle PIDIl s’agit d’un complément à la première « instructables » de la LINUSBot (ligne robot qui suit).
Maintenant, le robot a le contrôle des mouvements effectué par un régulateur PID, contrôle proportionnel, intégral et dérivé. Ceci rend les mouvements pendant les lignes droites et les virages beaucoup plus lisses, il peut se développer plus rapidement, atteignant la vitesse maximale.
Régulation PID fournit le robot un « apprentissage », provoquant le robot développer mieux dans les virages et droit du circuit.
Maintenant, une brève introduction et vue d’ensemble du contrôle PID.
Fondamentalement, ce type de contrôleur effectue les actions suivantes :
1 - commande proportionnelle :
Ce contrôleur multiplie le courant « erreur » par une constante Kp.
Le « erreur » est la différence entre le réel et la sortie désirée et est reversé dans le système, c’est à dire :
La production réelle est soustraite de la sortie désirée (la consigne), afin que l’erreur est calculée. Cette erreur est insérée dans le contrôleur PID comme entrée, et le contrôleur de PID (calculer les termes P, I et D), commandes du système pour éliminer cette erreur.
Assurant ainsi le gain nécessaire pour approcher le signal de sortie souhaité comme rapidement que possible et avec la meilleure stabilité.
2 - contrôle intégral :
L’expression Qu'intégrale multiplie l’erreur courante et sa durée par un Ki constante, faire un résumé de toutes ces informations.
L’intégrale à terme lors de l’ajout du terme proportionnel ; accélère le processus d’atteindre l’état d’équilibre du système, en plus de fournir un signal plus près de la sortie désirée. En d’autres termes, il élimine aussi (ou au moins essayer d’éliminer) l’erreur résiduelle, arriver plus vite au résultat souhaité.
3 - contrôle dérivé :
Le terme dérivé, provoque le taux de variation de l’erreur signal multipliée par une constante Kd. L’intension est de prévoir l’erreur et donc de diminuer le taux qui change de produit des erreurs dans le système.
Nous pouvons utiliser ces trois termes ensemble pour former un régulateur PID, ou leur variaçãoes tels que :
Contrôleur de P (parfois utilisé):
Dans ce cas, l’utilisation de petites valeurs de la constante Kp est la meilleure façon d’arriver à la valeur désirée, mais son contrôle est lente (qu’il faut pour obtenir la valeur voulue). Si vous augmentez la valeur de Kp un overshot peut se produire.
Contrôleur de PI (plus couramment utilisé):
Il supprime la part résiduelle de l’erreur dans le cas de l’état d’équilibre (amélioration de la réponse transitoire), mais dans ce cas vous pouvez avoir plus de remise des gaz et également état d’inversion, survenant d’oscillation du système et une instabilité, le système peut être trop atténué, ou sous amortie ou oscillant.
Ce type de contrôle rend le système plus lent. À l’aide des valeurs plus élevées de Ki, vous pouvez laisser le système plus rapide, cependant, augmente la remise des gaz et diminuer la marge de stabilité de votre système.
Contrôleur de PD (rarement utilisé):
Utilisée pour diminuer le dépassement magnetude des systèmes qui utilise le contrôleur intégré et améliorer la stabilité du système. Mais les contrôleurs dérivés amplifie le terme d’erreur bruit et peuvent laisser le processus système instable. Le contrôleur PD diminue le temps nécessaire pour atteindre la valeur désirée considérablement... pour que le gain dérivé Kd devrait être élevé. Cela diminue le temps de contrôle, mais augmente la bande passante du système, qui quitte le système sensibles au bruit.
Contrôleur de PID (parfois utilisé):
À l’aide de PID (combinaison de PI + PD), nous pouvons supprimer le rapport d’erreurs de système et diminuer le temps de réponse avec un transistória de réponse raisonnable (sans oscillations ou instabilités).
Cette étude peut être consultée à :
http://www.youtube.com/watch?v=wbmEUi2p-na
http://en.wikipedia.org/wiki/PID_controller
C’est la base façon de mettre en œuvre un PID via le logiciel :
previous_error = 0
intégrale = 0
départ :
erreur = consigne - measured_value
intégrale = integral + erreur * dt
dérivé = (erreur - previous_error) /dt
sortie = Kp * erreur + Ki * intégrale + Kd * dérivé
previous_error = erreur
Wait(DT)
Goto début
Dans le « LINUSBot » conception servait les paramètres suivants :
KP = 1/20
Ki = 1/10000
KD = 3/2
Le code complet pour Arduino peut être téléchargé à partir du lien :
http://www.4shared.com/file/iPVAVCwy/LINUSBot_9_3pi_modelo_PID.html
Regardez la vidéo et découvrez les résultats.
Rendez-vous dans le prochain projet.
Merci
D’autres projets :