Projets:Perso:2013:BotCopter

From Electrolab
Revision as of 18:06, 27 August 2013 by Guillaume (Talk | contribs)

Jump to: navigation, search
BotCopter
Auteur Guillaume
Tags du projet quadcopter, quadricopter, arduino
Lieu d'utilisation final anywhere
Utilisateur final divers gens
Type de projet

Projet personnel de Guillaume

Projet BotCopter

Depuis l’avènement des moteurs Brushless et des batteries LiPo, l'aéromodélisme a beaucoup évolué et est devenu plus accessible
financièrement. L’apparition des multicoptères permet aux novices de mettre un pied dans ce monde avec peu de ressources.
Ce projet porte la construction d'un petit quadcoptère (4 moteurs) pour l'utilisation en intérieur, avec un contrôle de vol assisté
par ordinateur et capable de voler plusieurs minutes.



Présentation

  • Objectif principal : Fabriquer un quadcoptère pour les vols en intérieur, en utilisant toutes les ressources open source existante en commande manuelle.
  • Objectif secondaire : Faire du vol en groupe, en commande automatique par une station de base (ordinateur)

Caractéristiques/Whishlist

Un quadcoptère se compose de quatre élément principaux :

  • le châssis : le corps de l'engin comportant la mécanique et les moteurs et supportant l'électronique embarquée
  • l’électronique : les sens de l'engin pour le vol (capteurs), le calcul (micro-contrôleur) et la commande des moteurs (commande de puissance)
  • la commande : on utilise une radio-commande RF avec plusieurs voix (4 minimum pour un appareil volant)
  • l'informatique : le cerveau du quadcoptère, qui permet de définir le comportement de l'engin en vol et de le contrôler

Le projet :

  • Mécanique : utilisation de design du commerce, basé sur les jouets pas cher
  • Électronique : design des toutes les cartes électronique
    • Récepteur : commande des moteurs, gestion RF, gestion des capteurs et micro-contrôleur
    • Émetteur : gestion de la radio-commande, gestion RF, port USB et micro-contrôleur
  • Commande : utilisation d'un radio-commande du commerce et/ou d'un ordinateur pour contrôler le vol
  • Informatique : utilisation du code AeroQuad pour le vol et la commande (code compatible Arduino)

Le châssis

Le but étant de ne pas refaire tout "from scratch", on utilise ici la facilité, car c'est un design du commerce. En cas de casse, il est très aisé de trouver des pièces détachées et le prix est relativement accessible. Il s'agit du modèle Walkera Ladybird QR Series. Les pièces sont achetées à l'unité, car je n'ai pas besoin de télécommande et ni de l'électronique. On se retrouve donc avec ces pièces pour l'achat d'un châssis complet :

  • 2 x moteur rotatif : QR Ladybird-Z-06 (prix indicatif : 2 x 7$)
  • 2 x moteur contre-rotatif : QR Ladybird-Z-05 (prix indicatif : 2 x 7$)
  • 1 x châssis principal : QR Ladybird-Z-03 (prix indicatif : 3$)
  • 1 x pack de 4 hélices : QR Ladybird-Z-01 (prix indicatif : 2$)
  • 1 x chargeur batterie : HM-Mini CP-Z-18 (prix indicatif : 4$)
  • 2 x batterie LiPo 1S : Turnigy Nano-Tech 260mAh 1S 35C (prix indicatif : 2x3$)

Pour environ 43$ (hors frais de port), on a notre châssis ready to fly !

Pièces détachées
Le châssis monté
Taille du châssis
Poids du châssis avec la batterie

Ces articles peuvent se trouver beaucoup de site, les moins chers étant les chinois (par exemple sur www.hobbyking.com). Prendre des pièce de rechange ne fait pas de mal, on casse quand même un peu (sur une centaine de crash, j'ai dû changer 1 moteur, 1 châssis principal et au moins 5 hélices). Cela reste quand même très solide au vu du nombre d'obstacle divers et variés que mes premiers essais de vol ont rencontrés !

Les premiers tests de ce châssis mène à la conclusion suivante :

  • L’électronique qui se loge au centre doit avoir un diamètre maximum de 60mm
  • Les fixations des bras (vis) permettent la fixation de la carte électronique et forment un carré de 20mm de côté
  • Chaque moteur/hélice peut soulever environ 12gr : le poids de toute l'électronique ne peut dépasser les 19gr

L'électronique

Pour le contrôleur, on part sur une base Arduino, parce que c'est facile et que l'on trouve beaucoup de source sur cette plateforme. Une carte Arduino toute faite n'est pas adaptée à notre châssis de base, les contraintes étant d'avoir toute l'électronique sur une surface de 4x4cm. Mon choix s'est porté pour la première version sur l'utilisation d'un AtMega128RFA1, pour plusieurs raison :

  • Compatible Arduino : il existe une Arduino like basée sur ce composant : la ZigDuino. On utilise donc le bootloader de cette carte et les sources disponibles pour l'IDE Arduino.
  • Partie RF intégrée : ce composant est capable de gérer une liaison sans fil ZigBee avec un débit maximal de 2Mb/s.
  • Inconvénient : ce composant nécessitant l'ajout de composants externes haute fréquence (Antenne 2.4GHz et Balast), et donc d'avoir un design de la carte très rigoureux

Conclusion : au vu de la difficulté de la partie RF et après des recherches sur le net, il existe des composants qui intègrent toute la partie RF et le micro-contrôleur. Cette solution permet de s'affranchir de pas mal de problème de design et gagner du temps.


Concernant les capteurs, on a besoin au minimum pour le vol d'un accéléromètre 3 axes et d'un gyroscope 3 axes. Il existe plusieurs composants permettant d'avoir ces fonctions dans un seul package électronique (IMU). On peux ajouter d'autres capteurs optionnels pour l'amélioration du vol : accéléromètre 3 axes, baromètre, GPS, ... Des cartes toute faite comprenant ces composants de base existent et on va pas s'en priver :

  • Carte IMU 10DOF
    • Accéléromètre 3 axes
    • Gyroscope 3 axes
    • Magnétomètre 3 axes
    • Baromètre
    • Données disponibles sur bus I2C


Pour le reste de l'électronique, les caractéristiques suivantes doivent être mises en place sur les cartes

  • Carte émettrice : principales fonctionnalités
    • Interface avec le récepteur RF de la radio-commande
    • Interface USB avec un ordinateur
    • Interface avec un (ou plusieurs) récepteur(s) de quadcoptère (protocole ZigBee à 2Mb/s)
  • Carte réceptrice : principales fonctionnalités
    • Taille inférieure à 60mm de diamètre
    • Trous de fixation compatibles avec le châssis (carré de 20mm de côté)
    • Interface avec carte émettrice (protocole ZigBee à 2Mb/s)
    • Contrôleur moteur de puissance (4 moteurs Coreless)
    • Interface avec les capteurs (I2C)

La commande

Pour contrôler manuellement le quadcoptère, il faut une radio-télécommande avec au minimum 5 voies (Tangage, Roulis, Lacet, Élévation et Mode de pilotage). Le choix s'est porté sur une radio-commande pas trop chère : la WFly WFT07A (environ 100€)

  • Caractéristiques techniques :
    • Radiocommande 7 voies
    • Technologies 2.4 GHz
    • Ecran LCD
    • Trim numérique
    • Fale safe
Radio-commande WFLY WFT07A
Récepteur WFLY WFT07A

Le récepteur radio étant d'une taille et d'un poids trop important pour le châssis, il est nécessaire de faire une carte électronique intermédiaire pour basculer de la liaison radio-commandée à une liaison ZigBee.


Pour contrôler automatiquement le quadcoptère à partir d'une station de base, un port USB doit être ajouter sur la carte électronique intermédiaire.

L'informatique

Le code utilisé pour le contrôle du quadcoptère est basé sur Aeroquad.

Présentation de Aeroquad

AeroQuad est un projet open-source dédié à la construction de multicoptères télécommandés, aussi connu comme quadcoptères ou quadricoptères. La dernière version du logiciel supporte également des configurations multicoptères supplémentaires!

AeroQuad supporte un micro contrôleur Arduino (Mega 2560 ou Uno) avec différents capteurs, tels qu'un accéléromètre, gyroscope, magnétomètre, baromètre, GPS et des capteurs à ultrasons.Ci-dessous on trouve un aperçu des caractéristiques qu'AeroQuad propose :

  • Configurations de vol prises en charge:
    • Quad X, Quad +, Quad Y4
    • Tri, Hex, Hex X +, Hex Y6
    • Octo X, Octo + et Octo X8
  • Options de vols :
    • Tenue de cap avec magnétomètre ou gyroscope
    • Maintien d'altitude avec baromètre
    • Maintien d'altitude avec capteur à ultrasons (meilleur pour la maintien en altitude basse et suivi de terrain)
  • Options de surveillance de la batterie :
    • Active la descente automatique
    • Prise en charge du nombre de cellules
    • Intégration avec affichage sur écran (OSD)
  • Options du récepteur :
    • Jusqu'à 10 voies prises en charge
    • Récepteurs PWM
    • Récepteurs PPM
    • Récepteur Futaba sbus
  • Options de télémétrie :
    • Télémétrie sans fil sur un port série dédié
    • Canal télémétrie Audio
    • utilisation du protocole de base MavLink
  • Prise en charge de la stabilisation :
    • Chaînes d'asservissement dédiées pour roulis, tangage, lacet
    • Possibilité de stabilisation automatique ou manuelle via un voie de l'émetteur
  • Prise en charge d'un OSD pour MAX7456

Aeroquad Configurator

Aeroquad Configurator est un outil permettant à l'utilisateur de configurer AeroQuad avant son premier vol et d'ajuster rapidement les paramètres pour les caractéristiques de vol souhaitées.

L'utilisateur est en mesure d'observer graphiquement le bon fonctionnement des capteurs, des commandes de l'émetteur et le contrôle moteur du multicoptère. En outre, il ya des valeurs programmables par l'utilisateur tels que les valeurs de la boucle de régulation PID et le facteur d'émetteurs qui peuvent être réglés et mémorisés dans l'EEPROM de l'AeroQuad.

Adaptation pour le projet

Le code Aeroquad étant optimisé pour l'utilisation de matériels compatibles Aeroquad, il est nécessaire d'adapter certaines parties du code pour faire fonctionner le BotCopter :

  • Déclaration d'une plateforme matérielle pour le BotCopter
  • Codage de la partie ZigBee (émission et réception)
  • Codage des capteurs non supportés de base
  • Codage de la commande moteur pour des moteurs Coreless (sur Aeroquad, les moteurs supportés sont des Brushless)
  • Séparation du code entre la carte émettrice et réceptrice (sur Aeroquad, le récepteur de la radio-commande est inclus dans le quadcoptère)
  • Ajout de la télémétrie sur la liaison ZigBee


Prototype alpha

Choix des composants

Le micro-contrôleur suivant est utilisé : Dresden Elektronik deRFmega128-22C00

  • Caractéristiques techniques :
    • 30 x 20.5 x 6 mm
    • Puce unique micro-contrôleur ATmega128RFA1 8bit-AVR
    • Transceiver intégré
    • 2.4 GHz
    • Antenne céramique intégrée
    • Portée maximale jusqu'à 200m (vue dégagée)
    • Interfaces disponibles telles que I2C, SPI, UART, ADC
    • Applications: ZigBee, 6LoWPAN et RF4CE
    • Mémoire EEPROM de 1Mb I2C
Dresden Elektronik deRFmega128-22C00
Taille du composant
Poids du composant

La carte capteurs suivante est utilisée : IMU 10DOF

  • Caractéristiques techniques :
    • 22 x 17 mm
    • Accéléromètre 3 axes et Gyroscope 3 axes : MPU-6050
    • Magnétomètre 3 axes : HMC5883L
    • Baromètre : MS5611
    • Tension : 3.3-5V
    • Protocole : I2C (support 3.3-5V)
Carte IMU 10DOF MPU6050+HMC5883L+MS5611

Carte émettrice

Caractérisques principales :

  • PCB double face 1.8mm
  • Micro-contrôleur soudé sur le PCB
  • Port USB intégré au PCB
  • Port AVR-ISP pour programmer le micro-contrôleur
  • E/S micro-contrôleur accessibles part des pins au pas 2.54mm
PCB carte émettrice Top (alpha)
Carte émettrice + récepteur RF (alpha)

Schéma électronique

TODO

Programme

TODO

Carte réceptrice

Caractérisques principales :

  • Taille du PCB principal : 34 x 34mm
  • PCB principal double face 1.8mm
  • Carte 10DOF soudée au dessus du PCB principal
  • Micro-contrôleur relié par des fils (non soudé sur le PCB principal)
  • Port USB intégré au PCB
Taille carte réceptrice (alpha)

Schéma électronique

TODO

Programme

TODO

Configuration

Paramètres des PID dans Aeroquad Configurator :

  • Rate Mode
    • Roll P : 100
    • Roll I : 25
    • Roll D : -350
    • Pitch P : 100
    • Pitch I : 25
    • Pitch D : -350
    • Rotation Speed : 1
  • Attitude Mode
    • Roll Accel P : 3.5
    • Roll Accel I : 0
    • Roll Accel D : 0
    • Picth Accel P : 3.5
    • Picth Accel I : 0
    • Picth Accel D : 0
    • Roll Gyro P : 60
    • Roll Gyro I : 15
    • Roll Gyro D : -150
    • Pitch Gyro P : 60
    • Pitch Gyro I : 15
    • Pitch Gyro D : -150
    • Windup guard : 1000
  • Yaw Configuration
    • Yaw P : 200
    • Yaw I : 5
    • Yaw D : 0
    • Heading P : 3
    • Heading I : 0.1
    • Heading D : 0
    • Heading C : 1

Tests

TODO

Retours d'expérience

Avantages :

  • Le quadricoptère vole
  • La carte émettrice fonctionne parfaitement
  • Le programme Aeroquad marche parfaitement sur un AtMega128RFA1
  • La commande de puissance des moteurs fonctionne sans chauffer

Inconvénients :

  • Le poids total de l'électronique est de 13gr; peu de puissance disponible pour les manoeuvres
  • Temps de vol d'environ 4 minutes (poids trop grand)
  • La liaison ZigBee n'est pas fiable (perte de trames en cas de pertubations RF)
  • Pas de debug possible sans connection en USB à l'ordinateur
  • Difficulté de connaître le statut du quadcopter
  • Les fils pour relier le micro-contrôleur au PCB principal du quacoptère se cassent lors de crash violent
  • Les connecteurs soudés en double face cassent les pistes en cas de choc
  • La carte IMU n'est pas située au centre des hélices et n'est pas protégée des chocs

Budget

TODO

Prototype beta

Améliorations principales à apporter :

  • Diminution du poids de l'électronique
  • Micro-contrôleur soudé sur PCB
  • Fiabilisation de la liaison ZigBee
  • Télémétrie sans fil
  • LED de statut

Choix des composants

Le micro-contrôleur suivant est utilisé : Dresden Elektronik deRFmega128-22C00

  • Caractéristiques techniques :
    • 30 x 20.5 x 6 mm
    • Puce unique micro-contrôleur ATmega128RFA1 8bit-AVR
    • Transceiver intégré
    • 2.4 GHz
    • Antenne céramique intégrée
    • Portée maximale jusqu'à 200m (vue dégagée)
    • Interfaces disponibles telles que I2C, SPI, UART, ADC
    • Applications: ZigBee, 6LoWPAN et RF4CE
    • Mémoire EEPROM de 1Mb I2C
Dresden Elektronik deRFmega128-22C00
Taille du composant
Poids du composant

La carte capteurs suivante est utilisée : IMU 10DOF

  • Caractéristiques techniques :
    • 22 x 17 mm
    • Accéléromètre 3 axes et Gyroscope 3 axes : MPU-6050
    • Magnétomètre 3 axes : HMC5883L
    • Baromètre : MS5611
    • Tension : 3.3-5V
    • Protocole : I2C (support 3.3-5V)
Carte IMU 10DOF MPU6050+HMC5883L+MS5611

Carte émettrice

Schéma électronique

La carte est la même que le prototype alpha.

Programme

TODO

Carte réceptrice

Caractérisques principales :

  • Taille du PCB principal : 40 x 40mm
  • PCB principal simple face 0.5mm
  • Carte 10DOF collée en dessous du PCB principal
  • Micro-contrôleur soudé sur le PCB principal
  • Connecteur pour liaison série
  • 3 LEDs de statut
  • PCB de programmation USB-Série séparé
Carte réceptrice Top (beta)
Carte réceptrice Bottom (beta)
Poids de la carte réceptrice (beta)

Schéma électronique

TODO

Carte UART

Caractérisques principales :

  • Interface USB-TTL 3.3V
  • Bouton de Reset
  • Connecteur pour carte réceptrice
Carte réceptrice Top (beta)

Schéma électronique

TODO

Configuration

Paramètres des PID dans Aeroquad Configurator :

  • Rate Mode
    • Roll P : 100
    • Roll I : 25
    • Roll D : -350
    • Pitch P : 100
    • Pitch I : 25
    • Pitch D : -350
    • Rotation Speed : 1
  • Attitude Mode
    • Roll Accel P : 3.5
    • Roll Accel I : 0
    • Roll Accel D : 0
    • Picth Accel P : 3.5
    • Picth Accel I : 0
    • Picth Accel D : 0
    • Roll Gyro P : 60
    • Roll Gyro I : 15
    • Roll Gyro D : -150
    • Pitch Gyro P : 60
    • Pitch Gyro I : 15
    • Pitch Gyro D : -150
    • Windup guard : 1000
  • Yaw Configuration
    • Yaw P : 200
    • Yaw I : 5
    • Yaw D : 0
    • Heading P : 3
    • Heading I : 0.1
    • Heading D : 0
    • Heading C : 1

Tests

Prototype Beta finalisé
Poids du prototype Beta

TODO

Retours d'expérience

Améliorations par rapport à la version Alpha :

  • Poids de l'électronique diminué de 50%
  • Temps de vol d'environ 7 minutes
  • Réactivité en vol radicalement augmentée
  • Liaison ZigBee fiabilisée
  • LEDs de statut pratique
  • Télémétrie sans fil fonctionnelle
  • Plus de casse de la carte réceptrice

Inconvénients constatés :

  • Le baromètre ne fonctionne pas bien à cause des turbulences
  • En cas de perte de la liaison ZigBee, le quadricoptère reste sur la dernière commande reçue
  • Pas de mode debug de la liaison ZigBee
  • Un seul quadricoptère peut être commandé par la carte émettrice

Budget

TODO


Prototype gamma

Améliorations principales à apporter :

  • Soudage de l'IMU sur le PCB Principal
  • Ajout d'un micro-contrôleur dédié à la gestion de vol
  • Séparation du programme en 2 parties : un programme dédié au vol et un dédié à la liaison ZigBee
  • Possibilité de mettre à jour le code en OTA (Over The Air)
  • Diminution du poids de l'électronique
  • Commande de plusieurs quadcoptères en même temps (utilisation du ZigBee en réseau mesh)

Choix des composants

Le micro-contrôleur suivant est utilisé pour la partie ZigBee : @ANY2400SC-1

  • Caractéristiques techniques :
    • 24 x 13.5 x 3.0 mm
    • Puce unique micro-contrôleur ATmega128RFA1 8bit-AVR
    • Transceiver intégré
    • 2.4 GHz
    • Antenne céramique intégrée
    • Portée maximale jusqu'à 500m (vue dégagée)
    • Interfaces disponibles telles que I2C, SPI, UART, ADC, 30GPIO
    • Applications: ZigBee, 6LoWPAN et RF4CE
A.N. Solutions @ANY2400SC-1

Le micro-contrôleur suivant est utilisé pour la partie vol : ATMega328P

  • Caractéristiques techniques :
    • Package TQFP-32 (9 x 9 x 1.2 mm)
    • 8bit-AVR
    • Overclocké à 16Mhz sous 3.3V
    • 32Ko Flash
    • 2Ko RAM
    • 1Ko EEPROM
    • 6 PWM
    • 8 ADC (10 bits)
    • Interfaces disponibles telles que I2C, SPI, UART, ADC, 23GPIO
    • Applications: ZigBee, 6LoWPAN et RF4CE
ATMega328P

L'IMU suivant est utilisé : MPU-6050

  • Caractéristiques techniques :
    • 4 x 4 x 0.9 mm
    • Accéléromètre 3 axes
    • Gyroscope 3 axes
    • Tension : 3.3V
    • Package : QFN
    • Protocole : I2C (supporte 1.8-3.3V)
IC MPU-6050

Carte émettrice

Schéma électronique

Programme

Carte réceptrice

Schéma électronique

Programme

Configuration

Tests

Retours d'expérience

Budget