Étape 3: Code aperçu
Set_Waypoint(longitude,Latitude,altitude)
En réalité, il y a encore beaucoup d’octets qui doivent être déplacés entre les registres et beaucoup des minuteurs qui doivent être définis avec précision. Il s’agit de ma première fois avec un tel code de « bas niveau », mais de comprendre comment ces choses fonctionnent est vraiment gratifiant et vous donnera beaucoup plus de confiance à long terme.
À son niveau le plus élémentaire, notre système de pilote automatique est essentiellement un commutateur servo, qui décide d’écrire des valeurs de servo du récepteur radio (envoyé par vous via transmetteur) ou dans les calculs du pilote automatique ou non. Si l’avion est en pilote automatique se décidera de l’état d’un interrupteur à bascule de l’émetteur. L’état de cette option sera envoyé sur un des canaux radio normale (c’est à dire le train d’atterrissage ou volets).
Calcul des sorties de pilote automatique commence par lectures du capteur. Mon projet réalise cela en utilisant le bus I2C. Chaque capteur est un but très précis. Votre accéléromètre vous permettra de mesurer la force nette sur votre avion moins l’accélération due à la pesanteur. En supposant que la gravité est la plus grande force sur votre avion, vous pouvez facilement écrire un vecteur < accel_x, accel_y, accel_z > trouver le tangage et le roulis de votre avion. Votre magnétomètre vous diront la force magnétique nette sur votre avion, Gauss, < mag_x, mag_y, mag_z > cette information peut servir à trouver des plans de votre position par rapport au champ magnétique de terres. Alors qu’en théorie, cela devrait être suffisamment d’informations pour voler, les deux de ces capteurs sont très sensibles au bruit. L’accéléromètre deviendra essentiellement meanlingless une fois que vos moteurs sont en cours d’exécution (et donc en cours beaucoup d’accélérations linéaires) et votre magnétomètre va dériver comme vous throttle en haut et en bas (à partir de modifications apportées au champ magnétique induit par vos moteurs).
Heureusement, votre gyroscope est là pour sauver la journée. Il est insensible aux accélérations linéaires (vibrations) et aux changements de champ magnétique. Le gyroscope vous indiquera votre vitesse angulaire sur le x, y et axe z. Si vous intégrez cette valeur de façon correcte, vous devriez être en mesure de trouver combien les avions rouleau, tangage et lacet ont changé entre calcuations. Vous ne peut pas, cependant, uniquement compter sur le gyroscope parce que
1) le gyroscope ne lira jamais un zéro, même si vous mettez ce plat sur la table
2) vous accumulez des erreurs que vous intégrez parce que vous ne pouvez pas résoudre pour vous constante d’intégration (C)
Si vous ne connaissez pas de calcul, ne craignez pas, nous vous guidera à travers l’épreuve.
Il est également possible d’utiliser votre GPS comme source de données sans dérive yaw si la fréquence de rafraîchissement et la précision du GPS est assez bon.
Vous combiner toutes ces informations pour créer une oreintation exacte de l’avion (tangage, roulis, lacet). Avec ces valeurs, vous pouvez créer une boucle de PID qui doit maintenir l’avion dans une orientation désirée.
Une fois que vous pouvez contrôler l’attitude de l’avion, vous devez calculer quelle attitude obtiendra votre avion au prochain point de cheminement. Ceci peut être accompli en comparant les coordonnées GPS de l’emplacement des avions vers l’emplacement souhaité de l’avions. Le GPS fournira le palier de l’avion (la direction, il doit faire face à) tandis que le gyroscope/boussole fournira le titre (la façon dont l’avion est en fait face). Althoo