Outils pour utilisateurs

Outils du site


wiki:god:mirsi6pi:home

mIRSI-6pi

Principe du quadricopter 

Un quadricopter est très instable ce qui est compensé par l’asservissement des moteurs à la centrale inertielle via le réglage en De plus les moteurs opposés tournent en sens inverse pour éviter une rotation sur lui même de l’appareil.

micro contrôleur Arduino : La carte Arduino s’occupe de tous les calculs relatifs aux commandes et correction de trajectoire du drone. Sur cette carte sont branchés tous les modules, et celle-ci va calculer en temps réel les corrections de trajectoire du drone.

XBee : Ce module a pour fonction de transmettre les informations entre le drone et la télécommande. Il s’occupe des protocoles de communication ainsi que de la gestion de correction d’erreurs de transmission. Le rafraichissement des informations se fait tous les 100 ms . Les données circulent dans les deux sens ; En effet, d’un côté les commandes apportées par l’utilisateur transitent jusqu’au drone, ainsi que les paramètres du PID ; et dans l’autre sens, il y a l’envoi à la télécommande de la tension de la batterie afin d’avoir un aperçu du temps restant de vol.

Centrale Inertielle : Ce module a pour fonction de récupérer l’orientation du drone dans les 3 dimensions de l’espace et ensuite de les communiquer à l’Arduino afin d’effectuer les calculs de corrections automatiques.

ESC : Le drone possède un ESC par moteur, ce module permet de transformer les données de poussée émanant de l’Arduino en tension pour alimenter les moteurs. Afin d’effectuer une commande adéquate, les ESC doivent être paramétrés au préalable.

Construction du Chassis

Configuration en +, pour des hélices de 11” sans chevauchement et avec un minimum de 2 cm de marge entre les hélices les dimensions obtenues sont :

Ce qui donne une envergure de 71 cm environ au drone, avec une plateforme centrale de presque 15 cm de côté.

== Matériel :==

1. Construction de l'armature du châssis

Nous avons opté pour un drône en “+”. Pour la construction du châssis nous utilisons un profilé en “T” en aluminum (robuste à la torsion et la flexion et léger) ainsi qu'une plaque d'aluminum pour la plateforme.

Avec la colle Epoxy, nous fixons les bras avec la plateforme en aluminium préalablement découpée en 9×9 cm . Celle-ci étant perforée, elle nous permettra plus tard d'y faire passer des vis ou des câbles. Nous collons ensuite sur cette plaque du feutre afin d'atténuer les vibrations.

Les deux bras doivent s'emboiter l'un dans l'autre

Collage a l'epoxy.

Et voilà le “+” assemblé.

Le feutre pour les vibrations et l'isolation electrique

2. Pieds

Les pieds sont fabriqués à partir d'un tuyau de PVC. Des rondelles de 2 cm de largeur sont découpées, puis applaties au pistolet à air chaud pour faciliter leur fixation aux bras du drône. Le PVC est peu onéreux, léger, et permet un bon amortissement lors d'une chute.

3. Fixation des 4 moteurs

Les moteurs sont directement vissés en bout de bras, à l'aide de 2 vis M3.

4. Fixation des pieds

Chaque support de moteur comporte 4 trous. 2 sont utilisés pour fixer le moteur au châssis, les deux derniers servent à la fixation des pieds en rondelle de PVC.

5. Support batterie

Un carré d'aluminium a été plié puis collé à l'epoxy sous le chassis. La batterie vient s'y glisser. Un petit butoir est ajouté d'un côté pour la bloquer, l'autre côté sera sécurisé par velcro ou ficelle.

Electronique (Drône et télécommande)





electronique du drone


Matériel :

micro-controleur : Arduino Pro Mini
Centrale Inertielle : EY88 10DOF IMU Motion Sensor
Module Com : Xbee ZB Pro
Batterie de puissance : ZIPPY Compact 5800mAh 3S 25C Lipo Pack
Moteurs brushless : Turnigy D2836/11 750KV (x4)
ESC : HobbyKing 20A BlueSeries Brushless Speed Controller (x4)
Helices : Slow Fly Electric Prop 11×4.7SF
Helices : Slow Fly Electric Prop 11×4.7R SF
Distribution de puissance : Quadcopter Power Distribution Board

Chaque ESC est relié à son moteur d'un côté et à la batterie de l'autre.

L'arduino pro reçoit ses informations de la centrale inertielle

On transforme le 5V récupéré depuis un des ESC vers du 3.3V pour alimenter l'arduino pro mini.

Tests avec la centrale inertielle

Le tout assemblé :



electronique de la telecommande

Micro-controleur : Arduino UNO
Module com : xbee ZB pro
shield xbee arduino
shield lcd arduino
joystick + potentiomètres slide (direction et poussée)

Programmation de la télécommande

La télécommande doit :

  • envoyer des commandes au drone
  • afficher la charge de la batterie du drone
  • permettre le réglage de certains paramètres comme le PID
  • prévenir en cas de perte de connexion

Programmation du drône

Le drône doit :

  • pouvoir recevoir et exécuter les commandes reçues de la télécommande
  • assurer sa stabilité (PID)
  • renvoyer le niveau de charge de la batterie à la télécommande
PID (Proportionnel Integrateur Derivateur)

Un quadricoptère étant très instable, les moteurs sont asservis à une consigne via un correcteur PID. Ainsi à tout instant la vitesse des moteurs est modifiée pour que le drone maintienne sa position. Il y a 3 angles à corriger : le roulis, le tangage et le lacet.

Schéma d'un correcteur PID :

Ce qui donne en code :

float compute(float com,float gyro, float dt){
error = com - gyro;
pTerm = error;
iTerm += error * dt;
dTerm = (error - prevError) / dt;
prevError = error;
return (kP*pTerm + kI*iTerm + kD*dTerm);
}

La fonction compute récupère les différentes valeur de la télécommande (joy , le thrust ,rotation)et une valeur dt qui représente le temps entre deux prises d'information et renvoie la valeur de correction. Cette fonction est implémentée dans la classe PID.h .

Afin d'utiliser la fonction compute on crée un objet PID p; Ainsi ou récupère les valeurs corrigées:

/*tangage*/
float com1=axis_X*(10/255);
angle_Xref = (euler[0] * 180/M_PI);
gyro = Angle(angle_X,angle_Xref);
temps_x1 = millis();
corrMot1 = p.compute(com1,gyro,(millis()-temps_x2));
temps_x2 = temps_x1;

Nous commençons par le tangage afin de faire une correction et on fait la même chose pour le roulis et le lacet.

wiki/god/mirsi6pi/home.txt · Dernière modification: 2016/09/11 13:14 (modification externe)