Carte ArduPilot

Descriptif

Nos recherches préliminaires sur les nouveaux composants nous ont amené vers l'ArduPilot. Cette carte de prototypage rapide est basée sur un Arduino Mega 2560. Dans sa dernière révision(2.5), l'ArduPilot se compose d'une seule carte (plusieurs shields auparavant) intégrant les composants nécessaires au vol d'un avion ou d'un hélicoptère comme une centrale inertielle 6 axes (3 gyroscopes, 3 accéléromètre),d'une boussole 3 axes, d'un baromètre et d'une puce GPS. Cet ensemble étant rassemblé sur une seule et même carte permet d'optimiser la place nécessaire sur le drone et diminue les câblages.
Cette carte possède de nombreuses entrées/sorties et ports:
  • 8 entrées PWM
  • 8 sorties PWM/PPM
  • 9 entrées/sorties analogiques
  • 4 ports séries(UART0 : USB et Xbee par défaut, UART1 : GPS, UART2: Xbee après modification, UART3 : ...)
  • 1 port I2C pour des circuits externes
  • 1 port SPI

Pour toutes les entrées/sorties, les broches se composent de 3 pins, un pin +5V,GND et un dernier pour le signal.

Modifications apportées.

Afin de permettre une alimentation de l’ArduPilot par les moteurs à la place de l’USB, un dispositif a été mis en place par les concepteurs. Il a suffit de placer un cavalier sur les broches JP1 comme montré sur le schéma ci-dessous.
Cette modification permet alors d’avoir l’alimentation par les moteurs et de pouvoir rester connecter en USB.
Chevalier JP1

Pour la mise en place des communications série, nous devions utiliser un port série libre. Le port 0 étant réservé à l’USB, le port 1 pour le GPS, nous avons décidé d’utiliser le port 2, initialement prévu pour la communication Xbee, et qui disposait déjà d’un connecteur.
Initialement, ce connecteur était relié au port 0, le même que le port USB. Il a donc fallu modifier la carte pour fixer le port 2 à cette connectique.
Pour cela des soudures et des coupures de pistes étaient nécessaires (comme indiqué sur le schéma ci-dessous), ces interventions furent réalisées par M. KAUFFMANN.

Schéma de montage

Schéma de montage

Centrale inertielle, MPU-6000

La MPU-6000, fabriquée par Invensense, fait partie des meilleurs composants utilisés dans les tablettes, smartphones et différents capteurs. Elle est très appréciée car elle a un faible coût, une faible consommation et de hautes performances.

C'est une centrale inertielle 6 axes, c'est-à-dire qu'elle associe selon les axes X,Y,Z: 3 gyroscopes (vitesse angulaire) et 3 accéléromètres (accélérations). Cette génération intègre un DMP (Digital Motion Processor) afin d'ajouter 3 axes supplémentaires avec l'utilisation de magnétomètres externes dans le but de corriger la dérive des mesures. Pour communiquer, elle peut utiliser 2 systèmes de bus: I2C et SPI. De plus, on peut configurer leur sensibilité que cela soit pour les gyroscopes et les accéléromètres.

Désormais intégrée à la carte ArduPilot, nous avons utilisée la bibliothèque mise à disposition qui utilise la communication SPI pour récupérer les valeurs des capteurs.. Une tache future possible sera de réécrire cette bibliothèque.

Puce GPS, MediaTek MT3329


Cette puce fabriquée par MediaTek fait partie des composants les plus utilisés dans les systèmes de localisation. Sa faible consommation et sa haute précision, même dans les milieux urbains (<3m dans 50% des cas), sont des atouts majeurs.

Son taux de rafraichissement peut varier de 1 à 10 kHz, et il lui faut au plus 35 secondes à froid pour se localiser. Par défaut on utilise le port avec une vitesse de 38400 bauds.

Détecteurs d'obstacles et altitude, Sonar SRF-04


Afin de permettre à notre drone de voler sans dommage, nous avons choisi d'utiliser de multiples sonars afin de détecter les obstacles environnants. Nous avons pris les sonar SRF-04 que nous utilisons en TP. Ces composants conçu par la société Devantech permettent de mesurer des distances entre 3cm et 3m. Notre drone possèdera 5 sonars, 1 situé dessous pour nous donner son altitude (dans le cas de faibles hauteurs) et 1 entre chaque bras du quadricoptère, cela permettant d'éviter un obstacle qui passerait entre les bras. Le spectre de ce sonar n'étant pas trop large (cf. diagramme ci-contre), les bras n'entraineront pas de perturbations dans les mesures.

Ce capteur peut être utilisé avec une communication I2C ou par des entrées/sorties analogiques. Nous utilisons cette dernière.
Pour cela, nous avons 4 broches :
  • 5V
  • ECHO
  • TRIGGER
  • Ground (Masse)

Son fonctionnement est assez simple, comme le montre le diagramme ci dessous.

On envoie une impulsion pendant au moins 10µs sur le TRIGGER pour démarrer la mesure. Ensuite il envoie 8 cycles d'ultrasons à 40 kHz et met la voie ECHO au niveau haut. Il écoute alors et dès que l'écho revient, il la passe au niveau bas. L'écho est donc une pulsation proportionnelle à la distance de l'objet. Si rien n'est détecté alors le SRF04 baissera sa voie ECHO de toute façon après 36ms d'attente.

Voici un code d'exemple pour l'arduino:
Code Sonar

Nous pensions utiliser le même port TRIGGER pour les différents sonars afin d'économiser le nombre de broches, mais dans ce cas nous risquions d'avoir des interférences; car chaque sonar émettrait son signal et on ne saurait donc pas si c'est bien le bon qu'on reçoit.

Sonde de température

Afin de contrôler la température de la batterie, nous avons décidé d'utiliser la sonde utilisée en TP. En cas de surchauffe, la température

Bilan sur ce choix.

Par la qualité de ces composants, les nombreuses entrées/sorties et sa facile prise en main, le choix de l'ArduPilot semble incontestable. Lors de son acquisition, une idée supplémentaire était évoquée, c'était de faire du retro engineering sur le code fourni avec, mais la complexité et l’obscurité de ce dernier n'ont pas permis de le faire. Pour les successeurs, réécrire les bibliothèques pourrait être une nouvelle piste de travail.
Au final, nous utiliserons cette carte comme un macro-capteur intelligent qui enverra simplement les valeurs de ses capteurs au RX62T par le port série UART2.


Dernière mise à jour : 24/03/2013 15h02
Auteur : Pierre GUINAULT

srf_04_face.jpg (62.3 KB) Pierre Guinault, 03/05/2013 04:40 PM

timing.gif (5.92 KB) Pierre Guinault, 03/05/2013 04:42 PM

srf_conect.jpg (32.4 KB) Pierre Guinault, 03/05/2013 04:43 PM

beam.gif (5.36 KB) Pierre Guinault, 03/05/2013 04:43 PM

APM_2_5.jpg (128 KB) Pierre Guinault, 03/05/2013 04:48 PM

APM2_JP1.jpg - Chevalier JP1 (51.6 KB) Pierre Guinault, 03/24/2013 02:46 PM

montage_sicopter.jpg - Schéma de montage (331 KB) Pierre Guinault, 03/24/2013 02:48 PM

MT3329-01-2.jpg (18.1 KB) Pierre Guinault, 03/24/2013 02:58 PM

code_sonar.PNG - Code Sonar (5.94 KB) Pierre Guinault, 03/24/2013 02:59 PM