Articles Taggés ‘HMC5843’

5 – Tilt Compensation Azimuth ? with Pitch Ø et le Roll ?

19 septembre 2010

Post to Twitter

A) Introduction

Il est nécessaire pour mon voilier de calculer son Azimuth ? ou cap. Selon Wikipedia, le cap d’un mobile est la direction vers laquelle il est orienté (ou dans le cas d’un navire, la direction où pointe son étrave). C’est l’angle exprimé en degrés (de 0 à 360°), dans le sens des aiguilles d’une montre, entre sa ligne de foi (son axe longitudinal) et le nord.Cet angle se mesure à l’aide d’une boussole, d’un compas magnétique ou gyroscopique.

Les composants que j’ai choisie pour calculer mon Azimuth :

La boussole magnétique HMC5843 est un magnétomètre trois axes. Il permet d’identifier l’angle de rotation par rapport au nord magnétique de la Terre avec une résolution de 7 milli-gauss.

L’accéléromètre AXL335 délivres des tensions proportionnelles aux accélérations avec une sensibilité :+/- 3 g.

B) Calculer l’Azimuth ? sans aucune compensation :

\psi = (180 *(\frac{atan2(-1 * YMagneto, XMagneto)}{pi}))+180;

Avec cette équation, les valeurs ne sont correctes que si le HMC5843 est à plat.

ps : Attention sous Excel, il faut inverser les valeurs pour atan2, ça peut vous faire gagner du temps….

Vous pouvez télécharger un exemple de programme fournit ci-dessous qui montre comment lire les HMC5843 sur un microcontrôleur ATMEGA328
Download : ici

C) Les angles Pitch Ø et le Roll ? pour un accéléromètre deux axes ou trois axes :

Grâce à l’accéléromètre ADXL335 , il est possible de calculer le Pitch Ø et le Roll ? pour corriger notre azimuth ?. Voici un schéma pour visualiser les angles du bateau.


Pour un accéléromètre deux axes voici l’équation :

\theta=\arcsin(Xaccel)*\frac{180}{pi}

\phi= \arcsin(Yaccel)*\frac{180}{pi}

Pour un accéléromètre trois axes comme le HMC5843 voici l’équation :

\theta= \dfrac {atan(-Xaccel)} {\sqrt(Yaccel^2+Zaccell^2))}*\frac{180}{pi}

\phi= \dfrac {atan(Yaccel)}{\sqrt(Xaccel^2+Zaccel^2))}*\frac{180}{pi}

D) Azimuth ? tilt compensation :

Le HMC5843 donne des valeurs correctes s’il est à plat. Donc, chaque fois que mon bateau va être incliné l’angle de rotation par rapport au nord magnétique donné par le compas ne sera plus correct. Il est possible de compenser cette erreur (Tilt compensation) en utilisant les valeurs du compas et d’un accéléromètre.

C’est compensation est aussi possible pour les compas deux axes avec l’algorithme de Seong Yun Cho et Chan Gook Park qui permet grâce au Dip Angle de faire une estimation du troisième axe . Vous pouvez télécharger ci-dessous leurs travaux :
Download : TiltCompensation.pdf

Pour un magnétomètre deux axes vous devez calculer le dip angle pour faire une approximation du troisième axe Z.

Pour le calculer :

\delta = \dfrac{1}{tan(2*tan(Latitude)}

ex:  \delta = \dfrac{1}{tan(2*tan(48.86213)} ) = 25.0112° ou 48.86213° coïncide avec ma latitude.

Pour les compas deux axes, il est nécessaire de faire une approximation du troisième axe Z grâce à la valeur du DIP angle

Zmagneto = \dfrac {sin(\theta)+Xmc*sin(\theta)-Ymc*cos(\theta)*sin(\phi)} {cos(\phi)*cos(\theta) }

Cependant, pour avoir des valeurs plus précises, il vaut mieux utiliser un compas trois axes comme le HMC5843.

Pour calculer l’azimut avec compensation :

Vecteur horizontal : xh = x*cos(\theta)+y*sin(\phi)-z*cos(\theta)*sin(\theta);

Vecteur verticale : yh= y*cos(\phi)+z*sin(\phi);

Heading : \psi= arctan(-yh/xh)

FoxBoard G20 :

?????Il faut prendre un soin tout particulier avec la fox Board G20 pour utiliser ce composant car elle génère un champ électromagnétique puissant qui perturbe le compas dans un rayon d’environ 3 cm. J’ai aussi constaté le même phénomène pour mon GPS. Il est donc prudent d’isoler les composants sensibles ou de les éloigner.Cette boussole a une interface IC2 qui permet d’interroger ses registres.

Un peu de vocabulaire :

Azimuth = angle de rotation par rapport au nord magnétique

Le gauss (symbole G) est l’unité CGS « électromagnétique » à trois dimensions d’induction magnétique. Il est défini comme étant 1 maxwell par centimètre carré (Mx/cm²).

Liens :

http://fr.wikipedia.org/wiki/Cap_%28navigation%29

3- Les composants retenus

10 janvier 2010

Post to Twitter

A) Les composants retenus :

La FOX Board G20 est le cœur de mon système embarqué, c’est elle qui va être chargée de collecter l’ensemble des informations des capteurs, mais aussi d’effectuer les calculs et d’envoyer les ordres aux servomoteurs[1]. Cette carte est basée sur un processeur ARM. Cette architecture est couramment utilisée dans les systèmes embarqués car elle a une très faible consommation. On la retrouve par exemple très souvent dans nos téléphones portables. Le processeur ARM inclus est nommé SAM9G20, il est cadencé à la fréquence de 400Mhz. Il embarque une vaste gamme de périphériques comme un hôte USB, un port Ethernet 10/100mbit, mais aussi quatre ADC de 10-bit, un bus de données SPI[2], des ports séries, des GPIO[3], des sorties PWM.

Ses caractéristiques :

Alimentation + 5

Volts

Consommation 60 mA
Processeur ARM9™ AT91SAM9G20400 MHz d’Atmel™
Mémoire 64mbyte@ 32bit 133MHZ
I/0 – 28 ports d’entrées/sorties

– 2 ports série (niveau 3,3 V)

– 4 entrées de conversion « A/N »

– bus I2C™ / SPI™

– Sortie PWM

Le microcontrôleur Atmel a été choisi pour son prix, mais aussi car il fait partie des cartes Open Source. De plus, Il dispose d’une documentation riche et de nombreux logiciels pour le programmer et le déboguer. Le rôle du microcontrôleur est de récupérer l’information de la girouette mais aussi de générer les signaux PWM.

Atmel vend plusieurs versions dont en voici deux :

Nom commercial Nombre d’E/S Analogique/Numérique Consommation Aperçu
ATmega328

(5V / 20Mhz)

14 (dont 6 pouvant générer des signaux PWM output) 6 40 mA
ATmega2560 (5V 16Mhz) 54 (dont 14 pouvant générer des signaux PWM) 16 50 mA et 40 mA par E/S

Le choix s’est porté sur l’ATmega328 qui avait suffisamment d’E/S mais aussi pour son faible encombrement.

Pour le magnétomètre, le choix s’est porté sur le HMC5843 3 axes d’Honeywell pour son interface I2C et sa consommation très faible et sa haute résolution.

Ses caractéristiques :

Dimensions 12.7×12.7mm
Axes 3 axes
Consommation 10 mA
7 milli-gauss résolution
Alimentation 2.5 de 3.3V

Pour l’accéléromètre le choix s’est porté sur l’ADXL335 pour sa sensibilité (+/- 3 g) et sa consommation très faible.

Ses caractéristiques :

Dimensions 4 mm × 4 mm × 1.45 mm LFCSP
Axes 3 axes
Consommation 350 µA
1.8 V to 3.6 V

Pour le GPS, le choix s’est porté sur le GPS GS407. Ce récepteur 50 canaux est basé sur un chipset u-BLOX 5H™ associé à une antenne omni-directionnelle Geo-helix SL1206 active Sarantel™. Bénéficiant d’une excellente sensibilité, il est prévu pour fonctionner sous 3,3 Vcc

Ses caractéristiques :

Dimensions 47 x 22,9 mm
Alimentation 3,3 V / 75 mA
Canaux 50
Hot Start < 1 sec.
Warm Start 29 sec.
Cold Start 29 sec.
Signal de sortie Supporte protocoles NMEA et UBX 9600 bds

Pour la communication, le choix s’est porté sur les modules XBee de la société Digi, Il permet de faire communiquer des circuits à plusieurs kilomètres de distance. Ce composant est idéal pour les connexions point à point. Ce système avec des antennes à gain permet des communications longue distance jusqu’à 10 km. Il fonctionne à 3.3V et consomme 210mA pour puissance de sortie de +17dBm

Alimentation

+ 3.3

Volts

Consommation

210 mA

Puissance

50 mW

(+17 dBm) power output

Point-to-multipointnetworking ideal for low-latency applications

Support for large, dense networks128-bit AES encryption

RPSMA connector

Industrial temperature rating

(-40° C to +85° C)

Advanced mesh networking and low-power modes supported

La girouette fait partie des éléments clés du projet, c’est elle qui va être chargée de déterminer la direction du vent et de permettre de calculer l’allure à adopter. Mon premier choix s’était porté sur une girouette à ultrason qui permet d’améliorer la robustesse est la fiabilité comme les capteurs CV7. Comme décrit dans l’étude de l’art, ce type de girouette a été adopté par exemple avec le projet Beagle-B de l’université d’Aberystwyth mais aussi de l’ENSIETA. Cependant, le coût de ce type de girouette à ultrason est d’environ 500 € ne pouvant investir autant d’argent, j’ai choisir de concevoir ma girouette avec d’autres techniques. La girouette de mon voilier est construite autour d’un encodeur magnétique analogique 10 bits. Il est donc possible d’encoder 1024 par révolution à 1KHz sa précision est de 0,1°.


[2] Une liaison SPI (pour Serial Peripheral Interface) est un bus de données série synchrone qui opère en Full Duplex. Les circuits communiquent selon un schéma maître-esclaves, où le maître s’occupe totalement de la communication. Plusieurs esclaves peuvent coexister sur un bus, la sélection du destinataire se fait par une ligne dédiée entre le maître et l’esclave appelée chip select. http://fr.wikipedia.org/wiki/Serial_Peripheral_Interface

[3] Les ports GPIO (General Purpose Input/Output, c’est-à-dire entrée/sortie pour un usage général) sont des ports d’entrée/sortie très utilisés dans le monde des microcontrôleurs, en particulier dans le domaine de l’électronique embarquée. Selon la configuration, ces ports peuvent fonctionner aussi bien en entrée qu’en sortie. http://fr.wikipedia.org/wiki/GPIO

1- Présentation du projet

9 décembre 2009

Post to Twitter

Introduction

Je travaille sur la conception d’un voilier autonome ou AUSV (Autonomous Unmanned Surface Vehicle) de type modèle réduit. Ce projet est constitué de plusieurs capteurs, tel qu’un GPS, un magnétomètre, un accéléromètre, un anémomètre, une girouette, un panneau solaire). L’objectif à terme est de déposer par exemple le voilier à Saint Malo puis de le laisser naviguer seul jusqu’à Dinard.

Mise à jour le 24 janvier 2011:

Depuis janvier 2011, ce projet est devenu le sujet de mon mémoire de fin d’études de Master 2 à Paris-Dauphine voici ma problématique :

  • Dans quelle mesure est-il possible d’automatiser les processus de navigation d’un voilier ?

Le contexte
Un des défis majeurs de notre décennie concerne la réduction de notre dépendance vis-à-vis des énergies fossiles. Cette réduction passe peut être par une meilleur utilisation des ressources mises à disposition par la nature, à savoir par exemple les énergies solaire, éolienne et hydraulique. Il est possible qu’un des moyens pour réduire notre dépendance soit d’utiliser massivement la technologie et plus particulièrement l’informatique pour automatiser les processus.

Dans le cas de la navigation, le pilotage automatique ou à partir du sol permettent d’envisager des navigations de très longue durée avec une utilisation plus optimale possible de l’énergie éolienne. Les voiliers qui se déplacent grâce à l’énergie éolienne consomment très peu d’énergie électrique ou fossile. Le transport maritime avec les énergies fossiles n’est pas viable à long terme. On peut envisager que les voiliers autonomes dans la prochaine décennie puissent transporter des conteneurs de marchandises grâce au vent avec un ratio de consommation d’énergie dans un temps acceptable.Le développement d’un voilier autonome est un vecteur de développement durable sur deux facteurs (économique et écologique).J’ai commencé à développer ce projet en Septembre 2009 sur mon temps libre. J’ai aujourd’hui une vision claire du budget, du temps et des compétences nécessaires. Pour démontrer la faisabilité, après avoir sollicité des sponsors, j’ai commencé à réaliser le POC (Proof of Concept) d’un voilier autonome de type modèle réduit. Ce projet est constitué de plusieurs capteurs, tels qu’un GPS, un magnétomètre, un accéléromètre, un anémomètre, une girouette, etc.). L’objectif du POC est de déposer par exemple le voilier à Saint Malo puis de laisser naviguer seul jusqu’à Dinard.

Les raisons du choix du sujet :

Ce projet relève pour moi du défi et d’une envie d’apprendre. Selon moi, se lancer des défis c’est progresser. J’ai des connaissances limitées en électronique, ce projet sera pour moi l’opportunité de les développer et d’affiner mes connaissances en informatique. De plus, la conception d’un projet de cette envergure va renforcer ma persévérance, et ma rigueur qui est indispensable à la pratique de mon métier. De plus, les systèmes embarqués me passionnent, je souhaiterais travailler dans ce domaine. La rédaction d’un mémoire traitant de la conception d’un voilier autonome peut me permettre de me donner une visibilité au monde professionnel par la création d’un site internet. Cette rédaction sera aussi l’occasion de mettre en avant l’investissement que j’ai consacré sur mon temps personnel à la réalisation de ce projet.

Le traitement classique du problème consiste à indiquer de manière fixe les paramètres de navigation, par exemple l’allure, qui correspond à l’angle entre le cap du voilier et le lit du vent réel. En voile,
il existe plusieurs allures :
– De près (angle petit)
– De travers (perpendiculairement à la direction du vent)
– Au portant (angle supérieure à 90°)
Je pense qu’il est possible d’affiner automatiquement les valeurs du pilotage du voilier. Je souhaite implémenter un algorithme de type apprentissage par renforcement. L’apprentissage par renforcement fait référence à une classe de problèmes d’apprentissage automatique, dont le but est d’apprendre, à partir d’expériences, ce qu’il convient de faire en différentes situations, de façon à optimiser une récompense numérique au cours du temps.

Estimation Budget du projet : 600€

Mise à jour le 28 mars 2011:
Le budget est plutôt de 700€

Vous voulez m’aider ? Vous avez une idée , des conseils,.. ? N’hésitez pas à contacter : mail

Jean-Emile DARTOIS

Mise à jour le 14 juin 2011

Première mise à l’eau, un constat, il ne coule pas ! Le comportement du voilier est correcte, au notera qu’il est légèrement déséquilibré à l’avant, il faudra améliorer le lest. J’ai problème avec le GPS (MediaTek MT3329), il fonctionne parfaitement en terrestre mais sur une étendue d’eau, il ne s’actualise plus. Je pense que le problème est lié à des trajets multiples des ondes qui causent une erreur sur le pseudo-temps de parcours. Il semble qu’une des solutions pour éviter les erreurs de réflexion consiste à utiliser une antenne hélicoïdale. Il est aussi possible de filtrer les ondes qui ont un temps de parcours plus long. Enfin, on peut utiliser un plan de masse pour isoler le composant, je vais planifier des tests rapidement.

Twitter links powered by Tweet This v1.8.1, a WordPress plugin for Twitter.