Étape 6: Les sommes durs !
Alors, comment il équilibre ? Rétroaction négative est utilisée en créant une erreur entre l’angle d’inclinaison souhaité et la valeur mesurée à partir du gyroscope. Si les deux diffèrent d’une tension de commande est ensuite appliquée à deux moteurs simultanément à conduire le chariot vers l’avant ou vers l’arrière afin de corriger cet angle. Une telle approche est connue comme commande proportionnelle et souffre du fait que cela peut être tout à fait une grande erreur qui est créée. La théorie nous dit qu’en augmentant le montant du gain de la voie de l’erreur que cette erreur réduit. Malheureusement, pour faire l’erreur de petit assez nécessite tel un gain important que la boucle devient instable et le chariot bascule. Nous pouvons améliorer les choses en ajoutant un second mandat, qui est proportionnel à la différence de l’époque de signal d’erreur un deuxième gain à terme. Ceci est connu comme contrôle différentiel et quand on ajoute le terme proportionnel est connu comme commande PD ou proportionnelle plus dérivé. Le terme D stabilise le système et réduit l’instabilité. Ce serait la réponse sauf que l’erreur ne va pas toujours à zéro et il y a une différence finie en survolant. Le chariot sera flop retour et vers l’avant et pas rester en place droite. Nous pouvons ajouter un troisième mandat, qui est un intégrateur qui enlève l’erreur. Malheureusement, ce troisième dite que je nomme si donné en trop grande quantité mène à davantage d’instabilité. C’est pourquoi un compromis doivent être respectée entre les trois termes dans ce qu’on appelle un régulateur PID. Réglage des régulateurs PID est un peu un art et paramétrage des règles existent, mais ils ne sont pas tout à fait aussi bons quand vous avez un système intrinsèquement instable, comme nous le faisons. Cependant, PID fonctionne et autres instructibles l’ont utilisé.
L’approche que nous utilisons ici est l’approche que beaucoup utilisent pour le Segway et n’est pas le contrôle PID. PID est souvent appelée la théorie du contrôle classique alors que ce que nous utilisons ici est connu comme la théorie du contrôle moderne. En fait, l’approche classique n’est pas si vieux, et l’approche moderne n’est pas que moderne ! L’approche moderne que nous utilisons est connu comme pôle de Placement État-Feedback. Il nous les proportions de rétroaction de position angulaire, vitesse et accélération. Les indestructibles Segway utiliser uniquement la position et rétroaction de la vélocité au meilleur de ma connaissance. J’ai ajouté un troisième État d’accélération et un quatrième état action intégration ou l’intégrale. Ce genre de chose est bien établi dans les manuels en fait mais rarement vu dans les manifestations. Nous exigerions normalement c’est à dire un modèle mathématique des équations différentielles décrivant le système dynamique complet. Ici, j’utilise une simple approche et accordez-la comme un PID. Il existe une similitude entre contrôle et état commentaires de PD qui utilise uniquement la position et la vitesse de vos commentaires. Le feedback de vitesse est connu comme feedback : taux et est juste un terme différentiel qui est lue à partir un capteur plutôt que d’être explicitement calculé. La différence ici est que la différenciation est dans le chemin de rétroaction plutôt que le chemin vers l’avant comme c’est le cas avec le PID. Cela donne un peu plus d’amortissement au détriment d’un système légèrement plus lent - mais peut facilement être compensé en augmentant le gain global. Donc ici nous mesurons Erreur angulaire directement en utilisant le compas gyroscopique et la vitesse angulaire de l’accéléromètre.
L’Etat tiers est accélération qui nous calculons (il existe des moyens plus efficaces, mais pour l’instant, j’utilise cette méthode) directement en différenciant la vitesse. En contrôlant l’accélération nous pouvons contrôler le courant tiré des moteurs et rejet de perturbation. Si vous ne pouvez pas mesurer l’accélération avec un transducteur (qui est le cas habituel) puis vous devez la créer en différenciation ou en utilisant un filtre d’État observateur ou Kalman.
Si le signal de commande est
u (k) =-K * [Kp * y (k) + Kd * y (k) _dot + Ka * _double_dot y (k)]
où K est le gain général réglée entre le potentiomètre et Kp, Kd et Ka sont le gain proportionnel, accélération et dérivé gain gain respectivement. Y(k) représente ici la lecture actuelle du capteur gyroscopique (angle), y (k) _dot est présent lecture de vitesse angulaire et y (k) _double_dot est la lecture actuelle d’accélération tout à la fois k instantanée. Dans le diagramme Ki est gain intégral.
Pour différencier les numériquement nous pouvons utiliser une approche simple d’Euler. Pour un échantillonnage intervalle dT en secondes (ici, c’est dT = 0,01 pour une fréquence d’échantillonnage de 100 Hz) on peut distinguer l’oméga de la vitesse d’accélération accel comme
calculer l’accélération angulaire de vitesse angulaire
omega_old = omega ; stocker la dernière valeur de l’accélération
oméga =.. .lire la vélocité de l’accéléromètre ici
faire la différence
Accel =(omega-omega_old) /dT ;
Habituellement nous omettre dT (c’est à dire la valeur dT = 1) car il devient un terme de gain qui nous pouvons ajuster séparément.
Il s’agit d’un facteur de différenciation brut et en fait n’importe quel type de pure différentiateur est une mauvaise idée pour une boucle de régulation car elle amplifie le bruit haute fréquence et excite la résonance structurelle. C’est pourquoi nous avons passe-bas filtre la sortie différenciée. Nous utilisons un premier ordre passe-bas filtre - prendrait un certain temps pour expliquer l’ensemble de la théorie ici. ce filtre n’est pas indiqué sur le schéma ci-dessus. (uniquement le cas idéal).
D’intégrer nous utilisons une simple intégration d’Euler. par exemple pour intégrer une erreur
Intégration d’erreur
consigne = 0 pour zéro degrés verticales
erreur = valeur de consigne-output_value ;
y_out_past = y_out; / store/au-delà de la valeur de sortie de l’intégrateur
sortie y = y_out_past + dT * erreur ;
Oui, vous pouvez utiliser la notation de type y += dans le code, mais il cache ce qui se passe et la compréhension
où y_out est la sortie intégrée. habituellement nous laisser dT et plus tard c’est à dire l’échelle dT = 1. Vous pouvez en principe utiliser un résumé à faire de l’intégration, mais la méthode ci-dessus est un meilleur - méthode récursive par un échantillon et seulement requiert un stockage minimal. Sommation aurait besoin de nous stocker un certain nombre de valeurs passées. Vous pouvez également effectuer une intégration par l’intermédiaire de z-transforme et obtenir une version un peu plus précise appelée un intégrateur de forme trapézoïdale. Pas besoin de cette complication ici, si je n’ai utilisé z-transforme pour notre simple filtre passe-bas.
La fréquence d’échantillonnage : J’ai utilisé code précédent de Segway pour définir la fréquence d’échantillonnage de 100Hz et ne pouvait pas le faire aller plus vite. J’ai vérifié avec un oscilloscope que c’était la vraie fréquence d’échantillonnage par un drapeau logique haut et bas - exécution très vraie et fausse de la boucle de retournement. J’ai envoyer ceci à une sortie numérique et a obtenu une façon carrée. J’ai mesuré la demi-période et il a été sur place 0.01secs = dT. Le schéma est illustré avec Larsen état complet et une action intégrale.
J’ai aussi utilisé les filtres complémentaires dits spéciaux pour combiner les lectures de l’accéléromètre et gyroscope. C’est parce que l’accéléromètre est bonne dans les basses fréquences, tandis que le gyroscope est bon à hautes fréquences, tandis que le contraire est le cas de mauvaises performances. Il tente de réduire l’effet de la dérive de compas gyroscopique. Une autre approche consiste à utiliser un filtre de Kalman, mais ce n’est pas affiché ici. Détails de la méthode à filtre complémentaire est indiquée dans le lien ci-dessous.
http://www.chrismarion.net/index.php?option=com_co...
L’idée principale est indiquée sur le schéma (voir ci-dessous le diagramme d’État-rétroaction) tiré de ce lien.