Bonjour tous,
je vous présente yaaap (Yet Another Arduino AutoPilot).
Yaaap est un calculateur de pilote automatique pour bateau.
Il est construit autour d'une carte mini pro et le code tient de justesse dans les 32k de mémoire.
L'objectif était de remplacer le calculateur analogique d'un antique pilote pour barre franche Autohelm 2000.
L'ancienne électronique avec un fluxgate fonctionne encore mais est vraiment à bout de course avec des performances très éloignées de ce qu'on peut espérer avec un capteur inertiel IMU 9dof actuel.
Je conservé le vérin électrique qui fonctionne toujours parfaitement.
L'interface est réduite à 3 boutons et un écran LCD.
Il n'y a pas d'interface avec un équipement extérieur (GPS, télécommande smartphone) mais tout est possible...
Les fonctions de calibration et de réglage des principaux coefficients sont intégrées à l'interface.
Il n'y a pas de capteur de position de la barre. La barre est poussée ou tirée en fonction du besoin de correction.
La fin de course du vérin (ou toute surcharge) est détectée en mesurant l'intensité du courant vers le moteur.
Quelques détails
C'est l'excellente librairie RTIMUlib qui gère le MPU9250 et permet d'obtenir un cap compas stable et peu influencé par les mouvements du bateau.
Le code de la librairie RTIMUlib est légèrement modifié pour capturer et sauvegarder le gyroBias après initialisation immobile.
Sur un bateau en mer, il est rare d'être assez immobile pour permettre une bonne initialisation du gyro à chaque allumage. Il en résulte une dérive permanente (drift) qui fait perdre tout l'intéret du gyroscope.
Le calcul de la correction est un PID (asservissement proportionnel/intégral/dérivé) mais sans partie intégrale. L'angle précédent de la barre fait déjà office de terme intégral.
Le moteur est piloté par impulsions longues (10ms mini) voire en continu. Le mode PWM ne donnait pas de bons résultats. Même pour de petits débattements, toute la puissance est nécessaire et mon vérin n'a pas de marge de puissance hélas.
Les composants
1 carte mini pro ATMega328P 5V
1 capteur compas gyro accélérateur : MPU9250
1 capteur d'intensité moteur : ACS712
1 driver mosfet pour le moteur : TB6612FNG (2 canaux en parallèle pour gérer 2Amp nominal et des pointes à 6A).
1 convertisseur DC-DC 12V-5V 500mA mini
1 afficheur LCD I2C 16x2
3 boutons étanches
1 boite étanche
câbles, connecteurs, plaques époxy, etc
Sans les tests et quelques tâtonnements, le coût de l'ensemble est d'environ 30€
Le code
L'ensemble des sources pour IDE Arduino et la visualisation avec Processing sur PC/Mac sont téléchargeables sur GiHub.
https://github.com/FilBip/yaaapMerci de votre attention. Toute contribution sera bienvenue.
tags: mpu9250, autopilot, tillerpilot