Accueil Réalisations Partage Conception Contact

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 ;-)

Schemas / Code Source

Images


640x480|CentraleRecto.jpg


640x480|CentraleVerso.jpg


3264x2448|IMG_1138.jpg


3264x2448|IMG_1142.jpg


3264x2448|IMG_1145.jpg


3264x2448|Logo.jpg

Copyright "FloConcept 2010, Florent Kermarrec tous droits réservés