Roue libre inversé pendule contrôle (4 / 7 étapes)

Étape 4: Gratuit RTOS

Afin d’exécuter toutes les tâches nécessaires en temps réel, FreeRTOS a été utilisé. FreeRTOS est un système d’exploitation en temps réel, qui signifie qu’il va répondre aux événements dans un délai prévisible. Ceci est important car il permet au système d’être prévisible. Le code a été conçu pour avoir quatre tâches qui suivent :

  • La lecture d’UART
  • Lecture du Module WiFi ESP8266
  • Lecture de l’IMU MPU-6050
  • Une console de ligne de commande en cours d’exécution

La lecture d’UART

Il s’agissait d’une tâche simple qui a interrogé l’UART pour les nouveaux personnages. Quand un nouveau personnage a été trouvé, le personnage a été ensuite placé dans une file d’attente, ce qui a été lue par la tâche de console de ligne de commande. Cela aurait pu être implémenté en utilisant les interruptions de l’UART, mais vote était simple, travaillé, et en faisant cette tâche la priorité la plus faible, il seulement pouvait exécuter lorsqu’il n’y avait rien à faire. Cela signifie qu’il ne perdait pas cycles de l’UC du scrutin l’UART lorsque d’autres choses à faire. L’autre préoccupation avec l’UART de vote était si personnages venaient trop vite. Dans notre configuration, nous interrogé l’UART pour toutes les 10 ms, de nouveaux personnages qui est nettement plus rapide que n’importe quel homme pourrait taper. Cela peut être problématique si la console UART devait être exécuté à partir d’un script de l’ordinateur, mais nous avons décidé que la fonction l’emporte sur la simplicité du module.

Lecture du Module WiFi ESP8266

Dans le cadre de ce projet, nous voulions également la communication sans fil. Après tout, il serait malheureux si le cube a besoin d’être connecté à un ordinateur. Ceci a été accompli en utilisant un ESP8266, un module WiFi petit, facile à utiliser disponible auprès de nombreux fournisseurs différents. La ESP8266 communique au Conseil Zynq également via une interface UART, qui rendait nécessaire d’écrire un autre pilote UART. Pour ce pilote UART, nous devons lire en nombre de caractères à la fois, ce qui signifiait qu’il fallait d’interruptions. L’interruption gestionnaire wass appelée chaque fois qu’un personnage a été lue par l’UART et ajoute que les données à une file d’attente. La file d’attente est ensuite lue par la tâche de ESP8266, qui décide ce qu’il faut voir avec la nature.

La tâche était composée d’une machine de grand État pour l’initialisation du module et de lire des données entrantes. Lorsque la tâche a reçu des paquets provenant du module il l’envoya à la même file d’attente qui a été utilisé par le module UART, qui a été lue par la tâche de la console. Cela permet les mêmes commandes de console être utilisé par les deux un opérateur physiquement connecté au système ou en WiFi. Aussi, cette méthode permettant la réutilisation du code et maintient le code base plus organisée.

Lecture de l’IMU MPU-6050

L’IMU-6050 est un IMU contrôleur 6 axes, composé d’un accéléromètre 3 axes et d’un gyroscope à 3 axes. Cela permet pour la détection de l’angle et la vitesse de rotation du système, qui sont tous deux important à l’algorithme de contrôles. Il était simple d’obtenir des données sur le capteur. Le capteur communique via I2C avec l’adresse 0x68. Avant de lire les données de l’accéléromètre et gyroscope, le capteur doit être mis hors mode "veille" en écrivant 0 à l’adresse 0x6B, le registre de gestion de puissance. A partir de là, les premières lectures accéléromètre et gyroscope peuvent être lu à partir d’adresse 0x3B. Référez-vous à la fiche de données et enregistrer la carte pour une fonctionnalité complète.

Lorsque nous avons commencé à jouer avec le capteur, nous avons remarqué que les données brutes n’étaient pas précises en plus d’être bruyant. Nous avons utilisé deux techniques distinctes pour résoudre ces problèmes. Après avoir examiné les données, nous avons remarqué que l’IMU semble avoir un décalage de la lecture correcte. Pour résoudre ce problème, nous avons placé le Mio sur une table de niveau, où nous savions que l’orientation de chacun de l’axe de l’accéléromètre. Puis nous avons pris et en moyenne 5 mesures de l’IMU. Ensuite, nous avons pris l’orientation connue et il soustrait de l’accélération, qu'il nous a donné. Le résultat a été un vecteur d’offset qui a été soustrait de chaque IMU lecture. Cela augmente significativement la précision du système. Pour résoudre le problème du bruit, nous avons utilisé un simple point 5 avec une moyenne de filtre. Au lieu de retourner chaque IMU lecture, nous stocker 5 lectures et prendre la moyenne de chaque valeur. Cela a contribué à éliminer un peu juste du bruit que nous avons été voir du capteur.

De là, nous espérions d’envoyer cette information pour le FPGA, ce qui irait à l’algorithme de contrôles. Malheureusement, nous avaient des difficultés de mise en œuvre de l’algorithme de contrôles en Verilog et a décidé de mettre en oeuvre en C. Pour cette raison, une fois un IMU valide la lecture a été prise, la tâche RTOS ensuite calculer la vitesse du moteur nécessaire et envoyez-le au moteur par l’intermédiaire du bloc de génération de PWM. Alors que cela fait de la mise en oeuvre plus simple, il aurait été agréable d’exécuter les contrôles à l’intérieur le FPGA dont nous pensons qu’auraient amélioré la boucle de régulation.

Une Console de ligne de commande de lecture

La console de ligne de commande était responsable de l’envoi des commandes de niveau plus élevés et les informations, telles que les lectures de l’IMU provenant du système de vote. La console de ligne de commande se présente comme sa propre tâche et prend dans les données de l’UART et les ESP8266. Ceci a permis la console à être exploité directement depuis un ordinateur ou un réseau sans fil. La tâche est bloquée sur une file d’attente de FreeRTOS jusqu'à ce que les données étaient disponibles. La tâche a ensuite exploité comme une machine à États, lisant dans un nom de commande et de données. Si la commande est valide il serait exécuté le code associé et attendre pour une autre commande. Ce permis commandes souples et a été utile pour le débogage et commandant le système.

Articles Liés

Remplacement d’un corps de roue libre sur une roue arrière de bicyclette.

Remplacement d’un corps de roue libre sur une roue arrière de bicyclette.

J'apprends plus sur l'entretien de la bicyclette en pratiquant sur mon propre vélo.Hier soir mon vélo cassé, j'étais pédaler, mais la moto n'était pas émouvante !Bientôt, nous avons réalisé que le mécanisme à cliquet dans la roue arrière était cassé.
Fixez votre vélo. Graisser vos repères et changer votre roue libre.

Fixez votre vélo. Graisser vos repères et changer votre roue libre.

La plupart des gens ne réalisent pas cela, mais votre vélo a besoin d'entretien. Vos roulements d'essieu doit être nettoyé et remballé avec de la graisse tous les 500 milles (100 sur un vélo de montagne).Cette instructable montre comment remballez vo
Moteur de 3kW de BIGmotor, abandon de 147 mm pour frein à disque et unique roue libre

Moteur de 3kW de BIGmotor, abandon de 147 mm pour frein à disque et unique roue libre

Détails :Tension moteur : 60v, 72v, 84v, 96vWattsage : 2kw, 3kwVitesse : 70kph - 100 km/hAbandon : 147 mmFrein : frein à disqueRoue libre : roue libre unique. Si votre vélo a suffisamment d'espace pour 6 vitesses ou à roue libre 7 vitesses, vous pouv
Fixie Cycle/monocycle aucun pignon d’entraînement de la roue libre - froid soudé

Fixie Cycle/monocycle aucun pignon d’entraînement de la roue libre - froid soudé

donc là, je construisais mon multi gear monocycle - avait obtenu le build de base fait et elle put ride-mais une vraie douleur pour équilibrer, je sais que je peux travailler avec ce problème et si je construis un autre multi engrenage je vais laisse
Vieux vélo roue libre nettoyage

Vieux vélo roue libre nettoyage

Hi alors je suis un vieux vélo de route qui ont besoin de certains tlc tandis que tenter de démonter mon CD j'ai démonté la roue libre, ce n'était pas a dur a personnes le faire donc j'ai décidé de partager comment démonter et nettoyer votre roue lib
Inversé pendule Robot à l’aide d’une roue de réaction

Inversé pendule Robot à l’aide d’une roue de réaction

Ce projet vise à construire un robot capable de se balançant sur un coin d'une assiette carrée à l'aide d'une roue de réaction attachée pour le milieu de la planche. La MPU6050 prend l'angle actuel du Conseil d'administration par rapport à l'axe vert
2 roue poids Android robot contrôlé

2 roue poids Android robot contrôlé

Ce jouet robot est comme un Segway, sauf qu'il est naturellement self balancing. Le principe de fonctionnement pour le mouvement ressemble à jouet Sphero, moins la partie de balle extérieure et le gyroscope. Il est stable, car le centre de gravité es
Roue libre

Roue libre

Il s'agit d'une roue en carton avec un mécanisme d'enroulement interne.  Rouler la roue--libération et il retournera vers sa position d'origine.Étape 1: Matériaux et comment ça marchePour cela, carton, colle, deux plombs de pêche (3 onces), bandes de
Un autre plus facilement inversée pendule Robot

Un autre plus facilement inversée pendule Robot

Il s'agit d'une version améliorée de mon plus tôt instructable intitulé « A Simple et très facile inversé pendule équilibrage Robot ». Il y a quatre avantages dans cette version.Plus facile d'obtenir un matériauMoins de matières nécessairesProgramme
Un pendule inversé Simple et très facile d’équilibrage Robot

Un pendule inversé Simple et très facile d’équilibrage Robot

Nous allons faire un simple robot équilibrage inversé et exploiter il.Vous avez besoin seulement d'une demi-journée à faire, si vous avez un arduino et certains matériaux.[une vidéo d'un robot que tu ferais]Introduction :Après que quelques travaillen
Maison 100 HP moteur contrôleur pour une voiture électrique

Maison 100 HP moteur contrôleur pour une voiture électrique

cette instructable explique comment construire votre propre contrôleur de moteur de 100 CV (max.) pour une utilisation dans une conversion électrique de voiture ou moto.  Il peut prendre n'importe quelle tension jusqu'à 144v, et le courant de crête e
Vélo actionné véhicule à 4 roues (DiffBikeDorli)

Vélo actionné véhicule à 4 roues (DiffBikeDorli)

Cette chose ici est un véhicule vélo exploité pour deux personnes, à plus grande échelle, aussi appelé vélo de bière. Motards sont vers la gauche. De direction se fait avec une poignée de direction du vélo. De freinage se fait en appuyant sur un bras
Radio contrôlée caméra Pod

Radio contrôlée caméra Pod

Bienvenue sur les plans de construction pour Indy MogulEpisode 43: pod caméra sans fil. J'ai toujours pensé que ce serait cool d'avoir une monture de caméra contrôlée à distance qui pourrait incliner et pan. J'ai eu cette idée d'utiliser des voitures
Longboard eau-bande de roulement roues

Longboard eau-bande de roulement roues

j'ai été Longboard sous et hors tension pendant les douze dernières années, devient progressivement de plus obsédé dans les dernières années. Mais peu importe le niveau ou l'intensité de l'intérêt, rien n'est plus rageant que d'être incapable de pati