Ultrasons-évitant les Obstacle Robot (11 / 16 étapes)

Etape 11 : Contrôle et problèmes du moteur d’asservissement

Théorie du contrôle et mon application

Comment savons-nous comment contrôler quelque chose ? Nous consulter sa fiche technique. C’est exactement ce que j’ai fait (il y a longtemps) avec ce servo et découvert que j’avais besoin d’un signal 50Hz du rapport cyclique variable. C’est un peu lent pour un module PWM hardware qui nous sommes sur le court avec toute façon (nous avons besoin pour les moteurs de piste au volant), ce signal de servo doit être peu banged - logiciel généré.

Sachant cela, j’ai calculé un timer pour générer une interruption chaque 20ms. Pour cette tâche, j’ai utilisé le module Timer3 libre du microcontrôleur. Sachant que :

FOSC = 48 [MHz], nous constatons que Fosc / 4 = 12 [MHz], et de là nous calculons Tinstruction = 83.33 [ns]

C’est le temps nécessaire à une seule instruction à remplir dans le PIC et la base de temps pour tous les modules d’horloge interne. Nous savons également que Timer3 est un timer/compteur 16 bits, donc il peut compter jusqu'à 65535 et débordement + donner une interruption à l’échelon suivant. Il faut le configurer pour qu’il donne à cette interruption chaque 20 [ms]. Pour ce faire, j’ai calculé le nombre d’incréments de minuterie qui sont nécessaires pour 20 [ms] s’écouler :

20 [ms] / 83.33 [ns] = 240096

Il s’agit d’une valeur qui ne tient pas dans la chaîne de compteur 16 bits, donc nous allons devoir ralentir la vitesse d’incrémentation en quelque sorte : c’est facile à faire à l’aide de convertisseurs. En assignant un Prédiviseur 1:4 pour cette horloge, nous dire le PIC pour incrémenter la minuterie s’inscrire à un taux quatre fois plus lent que cette horloge interne de 83.33 [ns].

240096 / 4 = 60024

Cela se traduit par : avec la comte vitesse a diminué à 332.33 [ns], la minuterie devra prendre 60024 étapes jusqu'à ce que nos 20 [ms] s’écoule. Nous avons pour déclencher une interruption, lorsque cela se produit, et quand les interruptions produisent-ils ? Lorsque la minuterie déborde. Cela étant dit, nous soustraire cette valeur de la valeur de dépassement de capacité de 65536 :

65536 - 60024 = 5512 = 0x1588

Si nous avons mis cela dans la chaîne de compteur TMR3 chaque fois que le drapeau de l’interruption est défini par l’événement de dépassement de capacité, nous aurons une belle 20 [ms] interrompre le taux qui peut être utilisé pour cet algorithme de servo.

Ensuite, nous devons traiter de changer le rapport cyclique. Cela aurait été très facile à faire si j’ai eu un module de comparaison disponible, mais malheureusement je n’ai pas. Pour y remédier, j’ai défini une variable qui j’ai basculé chaque fois une interruption est venu. Connaissant la valeur de cette variable m’a permis de faire la distinction entre deux interrrupts différents : celui qui a déclenché un front montant au début de la 20 [ms] période et qui a déclenché le front descendant basé sur le cycle de service requis. Parce que le front est obligatoire, chaque fois l’interruption est déclenchée, un notre variable est « 0 », nous envoyons la broche e/s à l’État haut. Basé sur le temps requis sur (prenons 1 [ms] pour l’instant), nous calculons rapidement une nouvelle valeur d’init compteur minuterie, donc le minuteur déborde à nouveau après ce laps de temps. Pour 1 [ms] ce calcul est le suivant :

1 [ms] / 333,3 [ns] = 3000

Nous avons donc mis Registre compteur de TMR3 :

TMR3 = 65536-3000 = 62536

et attendez la prochaine interruption. Lorsqu’elle survient, nous envoyons la broche e/s à faible état et configurer la chaîne de comptoir TMR3 à nouveau au nombre de 20 [ms]. Nous devons prendre en considération, que 1 [ms] 20 [ms] déjà passé, donc le calcul ressemblera à ceci la deuxième mise à jour de TMR3 :

TMR3 = 5512 + 3000

Après que nous avons terminé avec ceci, nous basculer notre variable à nouveau et attendre une interruption. Cela va déclencher un front montant et le 20 [ms] période commence. Et puis nous calculons la TMR3 nouvelle, et cela va sur et ainsi de suite, dans une boucle infinie. En regardant dans la fiche technique je vous en parlais précédemment, nous pouvons trouver la longueur maximale de ce cycle d’utilisation, limites de logiciels peuvent être écrites pour empêcher le servo de frapper les extrémités et du mal à aller plus loin (et consommer 650mA...).

Rétroaction du servo n’est pas terrible du tout, donc le servo va secouer même quand il cesse de la même obligation pour toujours - cela doit être résolu en quelque sorte. J’ai mis un logiciel compteur qui augmente lorsque le 20 [ms] période commence et ajouté un code qui autorise uniquement un signal à un certain devoir à envoyer un nombre limité de fois. Après 20 cycles, je suppose que l’arbre est à la position voulue, et j’ai cesser d’envoyer des signaux = le moteur ne sera pas secouer ou buzz.

Problèmes

Plusieurs problèmes ont eu lieu jusqu'à ce que j’ai enfin réussi à déplacer le servo de façon reproductible. J’ai utilisé des servomoteurs avant sans aucun problème, savait quel genre de signaux de commande doit être fourni, mais n’a pu faire le servo chaque maintenant et puis, au hasard. À une mise sous tension, il a travaillé, dans les cinq prochaines années qu'il n’a pas. Je me doutais bien d’entrée de statisme, buck chute de tension de sortie 5 [V] et fait toutes sortes de tests pour les éliminer un par un. Enfin, après avoir essayé différents types de piles, j’ai fini par mettre un condensateur de [uF] 3300 volumineux très proche de la réglette à broches servo - et voilà, c’est finalement plus obéissant.

À ce stade il est bon de passer à un laboratoire de bloc d’alimentation, si disponible

Que pouvez-vous faire pour résoudre les problèmes dans les situations de ce genre ? Si vous pensez, qu’il y a une sorte de surtension dans votre circuit, il y a quelques trucs que vous pouvez utiliser pour traquer l’erreur. Tout d’abord, ça aide beaucoup si vous avez un laboratoire alimentation avec fonction limite actuelle, cela empêchera de sauter les choses. Simplement en utilisant les piles (j’ai essayé avec Li-ion ainsi) est un peu dangereux car ceux donnera autant qu’ils peuvent, dans le cas d’un court-circuit et brûleront probablement tout à leur façon.

Test 1.
Celui-ci a été la série de test évident : essais de continuité, essais contre shorts, trucs standard. Les LEDs ont été clignotant, alors le rail de buck 5V devait être OK, qu'encore j’ai fait ces pour être sûr. J’ai également double vérifié que le signal de commande est en effet en train du pin jaune du servo - il l’a fait. Théorie de mauvaises connexions a été démantelée.

Test 2.

Il y avait un moment où j’ai cru que mes batteries ne peut pas simplement donner assez de jus pour déplacer le servo. Pour confirmer/buste ceci, j’ai fini par regardant liste de paramètres du SG90et constaté que le décrochage actuel est de 650 [mA] ! J’ai pensé, que ce sera le problème, et les batteries ne peuvent pas garantir le même courant comme mon PSU - cela avait besoin d’un test.

J’ai pris une résistance de 1,2 ohms et mettez-le en série avec le fil d’entrée négative de robots. La mesure devait être côté bas, parce que la sonde de sol étendue et le sol de la PSU étaient connectés par le biais de la terre. Par mesure de tension à travers une résistance série de valeur connue, on peut calculer le courant qui circule à travers elle, la consommation de courant du robot dans ce cas. J’ai pris deux mesures, une avec la batterie Li-ion et l’autre avec le bloc d’alimentation, vous pouvez voir ces attachés à cette étape. Celui avec la tension / division 1 [V] est le test avec la batterie, l’autre avec 500 [mV] par division est le bloc d’alimentation. Parce que la batterie a une tension plus faible que le réglage de l’UAP, et les convertisseurs DC / DC avaient dessiner extra courant de maintenir leurs produits réglementés : vous pouvez voir un pic [A] 4 !

Cela signifie que la batterie peut fournir tout à fait suffisant pour l’ensemble du circuit de démarrage, y compris la surcharge initiale sur le servo quand il commence à tourner l’arbre. Si cette théorie a été démantelée, ainsi.

Essai 3.

Après avoir réfléchi de combien de temps le 5 [V] sont les traces et quelle hauteur l’étal actuel de ce servo est, j’ai réalisé, qu’un condensateur encombrant local serait une bonne idée. Cela aiderait avec tirages actuels spontanées locaux. Étant donné que cela impliquait des trous de forage et d’un nouveau capuchon de montage, j’ai été un peu contre elle. Cependant, quand un ami smart est venu avec cette suggestion très sans moi même mentionner cette théorie, j’ai décidé de serrer les dents et cela donner un essai. J’ai pris une grande qualité (récupérée sur une carte mère) 3300 [uF] / 6,3 [V] condensateur, percé de quelques trous pour elle très proche de l’en-tête de broche de sortie servo et soudé la chose. J’ai allumé le pouvoir et cela a fonctionné!!! Cette théorie est confirmée pour être vrai, et traverse avec lui s’est avéré fonctionne comme un charme.

Conclusion et la finition de cette série d’épreuves

Après j’ai vu ce travail avec la batterie Li-ion, et le test était répétitif, j’ai commencé à réfléchir à comment monter les piles énormes sur le robot. J’ai essayé de mettre sur le dos, mais qui a entraîné le robot s’asymétrique - alors j’ai décidé de donner un autre coup aux batteries Ni-MH et d’utiliser les robots 4 x support de cellule AA comme source d’alimentation. J’ai fait les modifications nécessaires, branché les piles et encore une fois : cela a fonctionné ! Problème résolu, et le regard du bot est sérieusement mieux !

Articles Liés

HandSight : Un gant pour les aveugles à se sentir les formes et évitez les Obstacles

HandSight : Un gant pour les aveugles à se sentir les formes et évitez les Obstacles

HandSight est un gant de prototype pour aider les aveugles. Il peut détecter la luminosité ou l'obscurité d'une surface avec la rétroaction tactile d'un moteur de vibration pour chaque doigt individuel. Il peut également détecter la distance des obje
Robot-évitant les obstacles.

Robot-évitant les obstacles.

OBSTACLE ÉVITANT ROBOTFINANCÉ PAR ; INTEL KENYA EN LIAISON AVEC LA SOCIÉTÉ D'INGÉNIERIE ÉTUDIANTS AUTOMATION CLUB JKUAT.MEMBRES DU PROJET :1 ANTONY KARIUKI2 ERIC KINYANJUI3 EMMANUEL KINYANJUIPROJET INSTRUCTABLE :EXIGENCES :1 PLATEAU DE 2ÈME GÉNÉRATIO
Discours de l’Arduino contrôler et détecter les Obstacles Robot

Discours de l’Arduino contrôler et détecter les Obstacles Robot

Robot contrôlé par les commandes vocales avec Arduino et avec la voix de google Android téléphone à texte est contrôlée à l'aide de l'applicationhttp://Make.robimek.com/Voice-Commands-Controlled-robot/Étape 1: matériaux :Application 1-android : https
Se ronger les Obstacles Robot autonome « Sanglier » (sanglier)

Se ronger les Obstacles Robot autonome « Sanglier » (sanglier)

concept généralNotre première idée était de créer un robot sur chenilles capable de monter les escaliers et bien d'autres obstacles, pour atteindre une bonne vitesse (autour de 10 ou 15 km/h) alors que le tournage et la transmission de données. Il se
YourDuino : Base Compatible Arduino en évitant la Collision Robot

YourDuino : Base Compatible Arduino en évitant la Collision Robot

Comment construire un Robot en évitant la base Compatible Arduino CollisionRemarque : Consultez le disponible Arduino Software Test croquis et logiciel anticollision ici (cliquer)Remarque : Plus tard, vous devrez avoir l'Arduino « IDE » système de dé
Arduino Robot qui évite les humains

Arduino Robot qui évite les humains

Dans mon précédent instructable, j'ai montré que c'est très simple de contrôle que DC moteurs utilisant le contrôleur compatible Arduino Nano et Bouclier de tissu. Vous pouvez obtenir ce robot à travers mon projet Kickstarter.Je vais vous montrer com
Comment éviter les boutons et réduire l’acné naturellement par le droit de manger

Comment éviter les boutons et réduire l’acné naturellement par le droit de manger

vous pouvez prévenir, éclaircir ou éliminer l'acné en réduisant les aliments à charge glycémique élevée de votre alimentation et garder votre taux d'insuline faible. Cela peut sembler difficile, mais c'est vraiment juste une façon sophistiquée de dir
Comment éviter les dangers pour la santé de l’utilisation de Gadgets électroniques

Comment éviter les dangers pour la santé de l’utilisation de Gadgets électroniques

Tous les jours les gadgets électroniques comme les tablettes et smartphones parfois flak pour des soucis de santé indu qui sont complètement sans fondement – tels que les craintes sur la radiation et des signaux radio qui affectent le corps.Il y a, c
Oogoo mélangeur à bon compte (éviter les mains malpropres:))

Oogoo mélangeur à bon compte (éviter les mains malpropres:))

Oogoo est un outil très utile d'avoir dans chaque inventaire DIY'ers. C'est une substance polyvalente, offrant grand adhésif,propriétés structurelles (flexibilité) et il peut être utilisé comme matériau de support pour la fixation des éléments, ou co
Feux chocolat coeurs - et les moyens de corriger et d’éviter les problèmes de chocolat.

Feux chocolat coeurs - et les moyens de corriger et d’éviter les problèmes de chocolat.

Il y a une histoire derrière cette instructable. Eh bien, n'y a-t-il pas toujours, je suppose.Voir, j'ai eu un plan. Un meilleur plan décontracté. Légèrement, qui a été déjouée par les réalités du traitant de cette substance acariâtre, connue comme l
Éviter les pâtes bouillant à l’aide de baguettes en bois

Éviter les pâtes bouillant à l’aide de baguettes en bois

Usage inhabituel de baguettes en bois :utiliser des baguettes en bois pour éviter les pâtes bouillant(même si vous mettez la table, appréciez une antipasta,...)Ajout de sel ou d'huile n'a jamais semblé à beaucoup d'aide. Faire bouillir les pâtes dans
GameMaker : Comment faire les ennemis à marcher vers vous en évitant les murs

GameMaker : Comment faire les ennemis à marcher vers vous en évitant les murs

Salut. Il s'agit de chessru. J'ai toujours essayé de trouver un moyen de faire ce que l'indique le titre. Maintenant, il est ici !Etape 1: Créez les objetsPremières choses première. Nous avons besoin d'ennemis et un lecteur. Programmer le lecteur pou
Parti de l’action de grâces: 6 conseils pour éviter les risques de plomberie

Parti de l’action de grâces: 6 conseils pour éviter les risques de plomberie

Parti de l'action de grâces: 6 conseils pour éviter les risques de plomberieEntrer dans les dangers de plomberie après qu'une partie est très commune, mais est complètement évitable si pris en charge correctement au préalable. Voici un blog avec des
Étiquette conseils pour éviter les litiges voisin

Étiquette conseils pour éviter les litiges voisin

Si vous établissez une clôture, c'est votre travail pour s'assurer que les deux côtés sont bien entretenues. Pour éviter les litiges, revue restrictions avec votre compagnie de clôture avant de choisir une clôture.