Application à un modèle réduit


Dans le cadre de ce projet, il est évident que nous ne pouvons pas réaliser nos essais sur un avion grandeur, le support est donc un Bixler produit par HobbyKing, un avion de début. C'est une plateforme à bas coût qui résiste bien aux chocs (important pour les premiers essais !) qui par sa stabilité et facilité de pilotage est idéal pour l'installation d'un pilote automatique. Pour des raisons de sécurité, nous avons décidé de ne pas commander le moteur, de manière à assurer un retour au sol rapide et sans danger en cas de problème.

Objectif : asservir le modèle afin de maintenir une position

    - Attitude (sur axes de tangage/roulis)

          - Altitude

Moyen : association de capteurs,

relais et calculateur Arduino Mega

I. Structure générale adaptée au modèle réduit

Chaîne d'information, chaîne d'énergie

 

  • Acquisition de l'attitude

Accéléromètre/Gyroscope: le premier détecte les accélérations sur 3 axes, permettant d'estimer l'inclinaison sur ces axes de l'appareil notamment en statique, grâce à la seule accélération qui s'exerce alors, la pesanteur. En revanche, ces données ne sont pas suffisantes lors du vol car de nombreuses accélérations s'exercent sur l'avion. Un gyroscope, qui capte les vitesses de rotation sur les 3 axes permet à partir d'une position de référence d'estimer par intégration les inclinaisons relatives de l'avion. Ces données sont insuffisantes exploitées seules car le gyroscope, sans référence aura tendance à dériver. Le couplage de ces deux instruments permet alors d'obtenir l'inclinaison de l'avion sur chaque axe de façon pertinente.

MPU 6050
MPU 6050
  • Alimentation d'énergie: 3-5v (Régulateur interne de décrochage basse) 
  • Modes de communication : protocole standard de communication IIC 
  • Convertisseur intégré 16 bit AD de puce, sortie de données 16 bits 
  • Gamme de gyroscope: ° ± 250 500 1000 2000 / s 
  • Plage d'accélération: ± 8 ± 2 ± 4 16g
  • Acquisition de l'altitude

 

Capteur de pression et de température: la pression évolue en fonction de l'altitude et de la température, selon des lois déterminées en physique. L'acquisition de la pression et de la température permettent donc d'estimer la variation d'altitude de l'avion, que ce soit par rapport à son site de départ ou par rapport au niveau de la mer.

BMP 180
BMP 180
  • Vin: 3 to 5VDC
  • Logic: 3 to 5V compliant
  • Pressure sensing range: 300-1100 hPa (9000m to -500m above sea level)
  • Up to 0.03hPa / 0.25m resolution
  • -40 to +85°C operational range, +-2°C temperature accuracy
  • This board/chip uses I2C 7-bit address 0x77.
  • Alimenter le système

Nous utilisons un modèle réduit électrique. Pour en améliorer les performances, ceux-ci utilisent des accumulateurs Lipo. Nous avons le choix d'alimenter indépendamment ou non le pilote automatique et l'appareil.

 

Avec une seule batterie:

  • Gain de poids
  • Facilité de centrage
  • Faire attention en fin de batterie (alimenter en priorité l'appareil)

Avec 2 batteries:

  • Poids plus élevé
  • Centrage à corriger
  • Moins de risques avec 2 alimentations
  • Envoyer les signaux aux actionneurs

Les signaux transmis par défaut sont ceux de la radiocommande qui dès leur arrivée au récepteur sont envoyés aux actionneurs. L'objectif est d'envoyer les signaux calculés par le module arduino lors de l'utilisation du pilote automatique.

 

Relais: c'est cette solution que nous avons adoptée. En reliant le signal de commande du servo au signal calculé par le pilote automatique ou par le récepteur, il permet via un interrupteur sur la radio de commander les différents asservissements.

Contraintes

Emission/Réception et particularité des signaux

 

Un modèle réduit est piloté grâce à un couple d'émetteur/récepteur. Le pilotage s'effectue grâce à une radio exploitant souvent des ondes en 2.4GHz ou encore 41 MHz. Ses consignes sont lues par le récepteur et envoyées aux servo-moteurs et moteurs qui modifient alors la trajectoire de l'appareil. Ces signaux sont en PWM (Pulse WidthModulation). Il s'agira donc, à partir d'informations analogiques ou numériques délivrées par le calculateur, la radio, les capteurs d'obtenir en sortie un signal en PWM commandant les servo-moteurs.

 

Le module Arduino devra donc envoyer ses consignes de manière prioritaire à ces actionneurs lorsque le pilotage automatique sera requis.

 

Précision et perturbations

 

Asservir la position d'un système suppose d'envoyer des consignes en fonctions de données envoyées par des capteurs. Ils doivent donc être précis et être transmis correctement. Dans un modèle réduit, les vibrations et les circuits électriques dans un espace restreint peuvent créer des interférences qui altèrent les signaux transmis, il est donc nécessaire de choisir et placer les éléments de manière pertinente pour ne pas subir ces déconvenues. Nous constaterons par la suite que malgré ces efforts, des perturbations ont été rencontrées lors des essais. On peut heureusement y remédier.

 

Commander l'asservissement

 

Il s'agit d'activer le pilote automatique à distance, c'est à dire depuis le sol. En effet, il joue dans le cadre de ce projet un rôle secondaire, l'objectif étant d'alléger la charge de travail du pilote, pas de le remplacer. 

La solution adoptée a été de commander le pilote automatique par les interrupteurs situés sur la radio.

 

Avantages:

- Système moins complexe à mettre en oeuvre

- Coût (on a pas besoin de modules supplémentaires)

Inconvénients:

- Système peu modulable, notamment pour un éventuel retour des informations au sol par télémétrie plus tard.

 

Données techniques sur l'avion utilisé

Il est important de préciser que nous ne disposons pas avec nos moyens de données sur les caractéristiques aérodynamiques de l'aéronef.

II. Asservissement

Nous avons décidé afin d'obtenir les meilleures performances d'utiliser un PID. Il permet à la fois de contrôler la position de l'avion mais aussi son altitude. En effet, la différence d'altitude avec l'altitude consigne et son évolution au cours du temps vont permettre de définir une consigne en position de l'avion de manière à l'atteindre.

III. Programmation sur Arduino

Une fois la structure du système déterminée, la programmation représente une grande partie du projet. Nous utilisons l'interface proposé par Arduino. Ce type de programmation (en C) est dit séquentiel: on déclare les variables, on initialise - void setup() - puis on lit en boucle - void loop() - les instructions.

On voit ci-dessus l'architecture des 2 programmes utilisés lors des essais: le premier permet d'asservir l'altitude de l'appareil sans enregistrer les données en vol, quand le second permet d'asservir la position de l'appareil et d'enregistrer les données en vol. Des contraintes informatiques n'ont pas permis d'obtenir un seul programme sans risque de surcharge mémoire.

Installation pour les premiers essais
Installation pour les premiers essais