QuadWiiCopter
Quelle est l'idée?
L'idée de ce projet est de réaliser un quadrirotor low-cost en s'inspirant des projets sur le net pour réaliser des photos
et/ou videos aérienne. Je n'y connais rien en modelisme, j'aimerai réaliser le projet de A à Z, de la mécanique
à l'automatique de régulation... C'est donc un beau challenge je pense, sur lequel j'espère arriver à voir un jour le bout (sans trop de casse
).
Matériel
Les divers projets trainant sur le net m'aiguillent grandement dans le choix du matériel. Pour ce prototype, le matériel
choisi sera peu onéreux, s'il vole ... je passerai sur du matériel de meilleure qualité.
Je rassemble donc le matériel en faisant principalement mes achats sur le site HobbyKing pour la mécanique:
- Moteurs Turnigy 28-30
- Controleurs TowerPro H40A (Convertibles I²C)
- Batteries 4S 3000ma/H Turnigy
- Helices de chez Mikrokopter.de
- Radio 2.4 Ghz
Pour la partie electronique je choisis également du low-cost:
-Carte Seeduino (compatible Arduino)
-Accéléromètres et Gyroscope de Wii
-Liaison Xbee pour débug et réglages
Le chassis sera lui réalisé en alu de chez casto.
Architecture
Architecture QuadWiiCopter
Les périphériques sont interfacés en I²C avec la carte Arduino.
Les 6 canaux de la radio sont récupérés en PWM.
AVR-GCC est utilisé pour la programmation de la carte Arduino.
Centrale Intertielle avec Filtre de Kalman
Première étape du projet, pour se stabiliser le quadri doit connaitre ses angles de Roulis, Tangage et Lacet ainsi
que la vitesse de rotations sur ces axes:
Angles Roulis, Tangage, Lacet
Les 3 gyroscopes mesurent les vitesses de rotation sur ces 3 axes. Les angles sont ensuites obtenus par intégration de ces vitesses angulaires,
à partir de la position de départ...mais le biais du capteur et l'erreur d'intégration conduisent au bout de quelques secondes à une mesure complètement éronnée...
Pour éliminer cette erreur, le système est recallé a intervalles régulier par une mesure des angles à partir de l'accéléromètre:
Mesure d'orientation à partir de la gravité
La mesure des angles est obtenues avec un peu de trigo.(Voir le code pour les formules)
A l'aide de ces mesures il est donc possible d'estimer le biais des capteurs, et donc de prédire au mieux la mesure jusqu'au prochain recallage.
Un filtre de Kalman réalise cette fusion de données entre les gyroscopes et les accéléromètres sur les angles de Roulis et Tangage
L'accéléromètre ne peut pas fournir une donnée de recallage pour l'angle de Lacet, une intégration de Runge Kutta d'ordre 4 est utilisée
pour cet angle.Elle permet de minimiser l'erreur d'intégration par rapport à une méthode classique d'intégration. La mesure va dévier légèrement dans le temps mais cette erreur est moins génante sur l'angle de lacet.
Une boussole sera sans doute ajoutée par la suite, celle ci permettra de réaliser également un Kalman sur l'angle de Lacet.
La centrale intertielle à d'abord étée testée avec l'IDE Arduino. Le code de la centrale seule est disponible en fin de page.
Accéléromètres et Gyroscopes de Wii
Une manière simple et peu onéreuse de se procurer des accéléromètres et gyroscopes est de les "emprunter" aux manettes Nintendo.
-Le Nunchuck est dôté d'un accéléromètre 3 axes
-Le Wii Motion Plus est lui dôté d'un gyroscope 2 axes X et Y et d'un autre gyroscope sur l'axe Z
Ces capteurs sont interfacés en I2C, leur protocole est disponible ici-->
Le brochage des connecteurs est le suivant:
Brochage des connecteurs
Seul Hic, il se trouvent à la même adresse I2C...
Une méthode simple pour faire fonctionner les 2 capteurs sur le même bus est de multiplexer ce bus:
Multiplexage Motion Plus + Nunchuck
Des classiques 2N2222 font parfaitement l'affaire, une resitance de quelques centaines d'Ohms convient.
Lorsque la communication se fait avec le Motion Plus, il faut activer le signal Enable associé et désactiver le signal Enable
du Nunchuck, et vice-versa.
Pour rendre la centrale plus compacte le joystick du nunchuck est supprimé et les gyroscopes du Motion Plus prennent son emplacement:
Montage Motion Plus + Nunchuck Recto
Montage Motion Plus + Nunchuck Verso
Contrôle d'un Quadrirotor
Loin de moi l'idée de décrire le modèles dynamique d'un quadrirotor pour en décrire son contrôle. Ce ne serait pas très parlant et je n'en serais pas capable
.
J'essaie seulement de décrire les principes généraux de commande.
La mécanique d'un quadrirotor est très simple : 4 moteurs avec des hélices à pas fixe. 2 moteurs tournent dans le sens horaire et les 2 autres dans le sens trigo.
Le contrôle de roulis, tangage, lacet est réalisé par différentiels de vitesse sur les différents moteurs:
Tangage réalisé par un différentiel de vitesse moteur Avant/Arrière
Roulis réalisé par un différentiel de vitesse moteur Droit/Gauche
Lacet réalisé par un différentiel de vitesse moteur Avant/Arrière vs Droit/Gauche
Boucles d'asservissements
3 différentiels de vitesses sont donc nécessaires pour contrôler le quadrirotor en roulis, tangage et lacet.
3 boucles d'asservissement sont donc simplement réalisées:
Pour le roulis et tangage, la commande d'entrée est une consigne angulaire. On réalise une boucle PID:
Boucle PID d' asservissement sur angles de roulis / tangage
L'asservissement pour le lacet prend comme consigne d'entrée une vitesse angulaire. On réalise une boucle PI:
Boucle PI d' asservissement sur angle de Lacet
Les commandes de chaque axe de rotation sont ensuites sommées:
Sommation des commandes pour chaque moteur
Le gros du travail est se situe dans réglage des coefficients PID, voilà pourquoi j'ai réalisé une interface graphique de mise au point.
Mise au point
A venir ;-)
Images
640x480|CentraleRecto.jpg
|
640x480|CentraleVerso.jpg
|
3264x2448|IMG_1138.jpg
|
3264x2448|IMG_1142.jpg
|
3264x2448|IMG_1145.jpg
|
3264x2448|Logo.jpg
|