Étape 7: Prototype #3
Un problème qui a tourmenté les prototypes précédentes était la vitesse lente mise à jour. La gouverne de direction tout simplement n’a pas réagi assez rapidement à un changement de roulement, c’est pourquoi j’ai inclus que dans ma liste d’objectifs :
- Augmenter la vitesse de mise à jour du pilote automatique
- Ajouter des contrôleurs de moteur
- Programme un moteur mélangeur
- Ajout d’un récepteur
Augmentation de la vitesse de mise à jour
Le seul problème avec la bibliothèque TinyGPS ++, c’est que c’est lent. Le problème, c’est l’Arduino Uno ne peuvent pas exécuter deux choses en même temps (bien c’est possible, mais pas vraiment). Une solution simple serait d’avoir un autre Arduino à utiliser la bibliothèque TinyGPS ++ pour analyser les données GPS, puis envoyer la position à l’autre pilote automatique. Problème a été, je n’avais pas un autre Arduino.
Une Arduino Uno est essentiellement une puce AtMega328 et quelques composants supplémentaires. Il est facile de construire votre propre « Arduino » sur une maquette, c’est exactement ce que j’ai fait. Iciun très bon guide sur la façon de le faire. Après que j’ai construit ma maquette Arduino, j’ai accroché un tout nouveau module GPS Ublox NEO - 6M de la même façon que j’ai branché mon ancien GPS. J’ai programmé cette nouvelle Arduino à utiliser bibliothèque Easy Transfer de Bill Porter, et j’ai utilisé le seul fil pour former une connexion série unidirectionnelle entre l’Arduino principal et le montage d’essai une. Avec cette nouvelle maquette Arduino, j’ai été en mesure d’augmenter la vitesse de mise à jour de 4Hz, à jusqu'à 50Hz !
Ajout de commandes de moteurs
J’ai vraiment aimé la ProtoSheild pour l’Arduino Uno que j’utilisais, mais j’ai trouvé qu’il n’avait pas assez d’espace pour contenir les deux contrôleurs de moteur. Donc, j’ai arraché la maquette ancienne, mini et mis dans une beaucoup plus grande.
Le circuit pour le contrôleur de moteur est simple, qu'un MOSFET, avec l’aide de PWM, contrôle la tension moyenne va au moteur. Une résistance de 1 k limite porte courant afin que l’Arduino n’est pas brûler, et une résistance k 10 qui maintient le MOSFET éteint lorsqu’il n’y a aucune entrée.
Programmation d’un moteur mélangeur : passant d’un gouvernail à moteurs
Ce bateau n’est pas un gouvernail, mais au lieu de cela, il utilise deux moteurs pour diriger. J’ai voulu profiter des deux moteurs au lieu de coller un servo le bateau. J’ai déjà construit les contrôleurs de moteurs, maintenant, tout ce qui restait encore à faire est de programmer l’Arduino pour contrôler ces contrôleurs de moteurs.
J’ai commencé par la programmation d’un programme de maquette dans Visual Studio. J’ai utilisé des points d’arrêt pour déboguer mon code, et finalement j’ai eu un moteur mélangeur. Maintenant, tout ce qui restait à faire était de transfert le code de VS à l’Arduino, qui n’était pas très difficile, étant donné qu’ils étaient des langues très similaires (c# et C++).
Ajout d’un récepteur RC
J’ai ajouté un récepteur RC à ce prototype pour commande manuelle. Il était facile de mesurer les valeurs entrantes avec la fonction pulseIn et avoir le pilote automatique à réagir à ces valeurs.
Tester le Prototype
J’ai placé ce prototype dans le bateau, connectés les moteurs pour les MOSFETs et pré-programmé un chemin dans l’étang. Le bateau a pu terminer le chemin d’accès de triangle une fois, puis il a cessé de fonctionner et mourut. J’ai dû sauver avec un canot pneumatique. Tourne out, la haute tension de la batterie (12v), frit les régulateurs de tension de 5v.