Max Danilin

Aujourd’hui, nous nous familiarisons avec un pid-controller node tout en travaillant sur la plate-forme XOD. Un contrôleur proportionnel – intégré – dérivé ou un contrôleur PID est un mécanisme de retour de boucle de commande utilisé dans les systèmes de commande automatique pour maintenir la valeur du paramètre mesuré. Nous n’entrerons pas dans les détails sur le fonctionnement de ce mécanisme ni analyserons ses fonctions mathématiques. Au lieu de cela, nous essayons de comprendre l’utilisation d’un contrôleur PID dans l’environnement de programmation visuelle XOD.

Vous pouvez toujours en savoir plus sur un contrôleur PID à partir d’autres sources, telles que Wikipedia.

Les contrôleurs PID sont principalement mis en œuvre dans un certain nombre d’applications telles que les systèmes de chauffage et de refroidissement électriques. Ils sont réputés pour leur précision et leur efficacité, vous pouvez même en trouver chez vous. Ne vous précipitez pas pour séparer votre réfrigérateur, car nous avons une plateforme mBot de Makeblock pour programmer un contrôleur PID à titre d’exemple.

Il y a un mBot dans l’image ci-dessus. Il a une carte mCore installée avec « Me ultrasonic sensor » connecté au deuxième port RJ25 et quelques moteurs connectés aux ports M1 et M2. La carte MCore est spécialement conçue pour mBot. Il est basé sur Arduino Uno et il est également compatible XOD.

Utilisons XOD pour programmer un robot suiveur simple qui garde une certaine distance par rapport à un objet devant lui à l’aide du capteur à ultrasons. XOD`s pid-controller core node nous aide à rendre cette reconnaissance claire.

Tout d’abord, mBot est un robot en mouvement, nous devons donc en placer un mbot-motor noeud sur le patch.

Ce nœud est utilisé pour contrôler les moteurs et se trouve dansgabbapeople/mbot-lib bibliothèque, qui a été créée pour rendre la programmation mBot encore plus simple. Suivez le chemin File > Add library > gabbapeople/mbot-lib dans le menu pour l’ajouter à votre projet

Remarque mbot-motor se compose de deux broches d’entrée M1 etM2 selon les moteurs concernés connectés aux ports M1 et M2 de la carte mCore. La valeur zéro sur une broche signifie que le moteur ne bouge pas. Une valeur positive fait reculer la roue, tandis que la valeur négative la fait avancer. Donc, si vous voulez que mBot se retourne, vous pouvez simplement définir M1 et M2 valeurs avec des caractères opposés.

À l’étape suivante, nous plaçonsmbot-ultrasonic-sensor nœud. Ce nœud est utilisé pour le capteur à ultrasons de Makeblock. Il calcule la distance à un obstacle et envoie le résultat à traversDIST broche et mètre. PORT la valeur de la broche d’entrée est égale au numéro RJ25 du port auquel le capteur est connecté.

«Me ultrasonic sensor» a une étiquette jaune, nous le connectons donc au port 2 marqué en jaune sur la carte de contrôle et mettons la valeur 2 dans PORT épingle.

Connectons-nousmbot-ultrasonic-sensor et mbot-motors notes à traverspid-controller nœud.

Cette pid-controller Le nœud suit les changements de distance entre la valeur définie et un flux de valeurs floues reçues du capteur. Après calculs, le nœud émettra un régime moteur en fonction de nos paramètres.

Le patch est presque prêt, mais nous avons décidé de l’étendre avec une petite fonction de vérification du moteur.

Cette mbot-motors Le nœud prend des valeurs de régime moteur comprises entre 0 et 1. Si la vitesse n’est pas élevée, les moteurs se mettent à bourdonner. Pour éviter ce son, nous avons ajouté un petit chèque. Lorsque la valeur de la vitesse est supérieure à -0,2 et inférieure à 0,2, elle est remise à 0.

Regardez le programme fini de notre bot suiveur.

Il est maintenant temps de découvrir quels paramètres pid-controller node ont et comment les utiliser.

Un régulateur PID calcule une valeur «d’erreur» comme la différence entre une valeur d’entrée mesurée et le point de consigne souhaité. Le contrôleur essaie de minimiser l’erreur en ajustant la sortie. Pour contrôler la sortie, un contrôleur PID utilise les coefficients Kp, Ki et Kd, qui sont basés sur les changements d’erreur.

Dans notre exemple, le concept d’erreur est une différence entre la distance actuelle du capteur et la distance que nous voulons que mBot garde.

IN-pin – est une broche à une valeur mesurée. Dans notre cas, il reçoit la valeur de distance, qui peut changer de 0 à 4 m.

Broche TARG – est une broche pour le point de consigne souhaité. DANS TARG nous définissons la distance que nous voulons que notre mBot garde. Dans ce cas, nous voulons que le mbot garde une distance de 15 cm par rapport à tout objet devant lui, nous mettons donc 0,15 valeur dans le champ.

Broche Kp – facteur proportionnel. Le coefficient Kp est proportionnel à la valeur d’erreur actuelle.

Qui épingle facteur intégré. Ce coefficient est utilisé pour neutraliser la partie accumulée de l’erreur. Il peut éliminer les erreurs système qui s’accumulent après un certain nombre de boucles d’algorithme.

Broche Kd facteur dérivé. Il estime la tendance des erreurs futures en utilisant le taux de variation de Kd. Plus le taux d’erreur change rapidement, plus l’effet de contrôle ou d’amortissement du régulateur PID sera élevé.

Il n’y a pas de valeurs spécifiques pour les coefficients Kp, Ki, Kd. Chaque système avec un contrôleur PID a des conditions optimales définies individuellement. Nous sélectionnons les paramètres manuellement.

Kp est le premier facteur avec lequel nous pouvons nous entraîner. Le coefficient Kp définit une sorte de limites pour la valeur de sortie. Il décrit ce que peut être la valeur de sortie.

Par exemple, si l’erreur dans la valeur d’entrée est grande et la valeur du coefficient Kp est élevée, la sortie du contrôleur PID sera relativement grande. Alors que la valeur d’erreur est élevée et que la valeur du coefficient Kp est faible, la sortie change de manière insignifiante.

Le coefficient Kp peut également être négatif. Vous devez l’utiliser lorsque vous avez besoin du contrôleur PID pour générer une valeur négative alors que le changement d’erreur est positif.

Mettons la valeur 5 sur Kp champ et partir Ki etKd les coefficients sont égaux à zéro. Regardons maintenant le comportement de mBot après avoir implémenté le correctif pour la carte mCore.

Nous fixons une valeur relativement petite du coefficient Kp. Lorsque la distance change, le régime du moteur change lentement. Que sera-t-il si la valeur Kp est égale à 90?

Lorsque la distance change, le régime du moteur augmente trop rapidement et brusquement. Lorsque le mBot commence à bouger, il saute également comme une voiture de course. Il semble que nous devions trouver expérimentalement la valeur moyenne de Kp. Fixons Kp à 40.

Entraînons-nous maintenant avec la valeur Kd. Kd décrit la vitesse de réponse du contrôleur PID aux changements de valeur d’erreur.

Plus la valeur Kd est élevée, plus le régulateur PID change la sortie rapidement. À ce coefficient, nous pouvons vérifier la sensibilité de mBot.

Par exemple, nous modifions maintenant la valeur de distance dans TARG à 40 cm (0,40) et laissez la valeur Kd égale à zéro. Après avoir implémenté le patch, nous créons un changement d’obstacle continu devant mBot.

Le contrôleur avec une valeur Kd nulle ne répond pas assez rapidement à un tel changement d’obstacle. En conséquence, le mbot touche la boîte en carton. Pour rendre notre système plus sensible, nous changeons la valeur Kd à 10.

Bien mieux maintenant. Spécifiquement pour votre appareil, la modification de la valeur Kd le fait pid-controller Le nœud répond plus vite ou plus lentement.

Le coefficient Ki est conçu pour éliminer l’erreur qui se produit constamment.

Imaginez que nous éloignerons indéfiniment l’obstacle du robot. Premièrement, le robot ne sera pas derrière nous, car le défaut intégré sera assez petit. Après une longue période, cependant, le robot prendra du retard à une très grande distance visible. Dans ce cas, les variations du coefficient Ki résoudront le problème.

Pour le remplacement de Ki par l’adepte, le coefficient ne donne aucun changement visible.

Si la distance à l’obstacle est supérieure à l’erreur spécifiée, elle a une valeur positive. Et si la distance devient inférieure à l’erreur spécifiée, elle devient négative. Les valeurs d’erreur alternatives positives et négatives se neutralisent et ne permettent pas à la partie constante de l’erreur de s’accumuler.

Bien que dans vos projets avec un pid-controller node, cette valeur peut être très bénéfique! Par exemple, si vous travaillez avec une imprécision des capteurs de température ou de pression, n’hésitez pas à expérimenter.

Nous avons acquis de l’expérience avec un nœud de contrôleur PID et nous nous sommes rendu compte qu’il est assez simple de travailler en XOD avec.

Dans le prochain article, nous décrirons un exemple de projet plus compliqué d’un pid-controller et programmez un robot suiveur de ligne à l’aide de la plateforme mBot.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *