Vous êtes ici : Home > Fiches Techniques > Le module boussole CPMS03

LE MODULE BOUSSOLE CMPS03

Ce module boussole conçu par  DEVANTECH Ltd  a été spécifiquement conçu pour les applications liées à la robotique, comme une aide à la navigation.

La boussole utilise les capteurs de champ magnétique KMZ51 de Philips, qui sont assez sensible pour détecter le champ magnétique de la terre. Les deux capteurs sont montés en angle droit entre eux sur le circuit imprimé et leurs sortie sont employées pour calculer l'orientation du module entre 0 et 360° par rapport au Nord magnétique.

 
oConnexion

 

 

 

 + 5 Volts  Alimentation
 SCL  Ligne d’horloge du bus I2C ( 100 KHz standard )
 SDA  Ligne de données du bus I2C
 PWM  Sortie modulée en largeur d’impulsion
 N.C  Non Connectée
 CALIBRATE  Entrée pour le calibrage matériel du module
 50/60 Hz  Entrée de sélection du filtre interne
 N.C

 Non Connectée : en fait, ligne de reset du  microcontrôleur avec une résistance pull-up.   Utilisée lors de la programmation du module. Peut servir pour faire un reset du module  boussole

 0 V  Masse de l’alimentation

 

L’alimentation du module devra être soignée et bien découplée.

La broche 7, qui est une entrée, permet dans une certaine mesure d'annuler l’influence des perturbations liées aux réseaux électrique 50/60 Hz.

Quand cette entrée est mise au niveau haut cela active le filtre de 60Hz, la mise au niveau bas de cette entrée active le filtre de 50Hz.

Le module disposant d’une résistance de forçage au niveau haut sur cette entrée, la broche 7 peut-être laissé en l’air par nos amis anglo-saxon, ce qui fait que le filtre de 60 Hz est le filtre par défaut, mais certainement pas pour nous autres français vu que n’autre réseau de distribution électrique a une fréquence de 50Hz.

Le module dispose de 2 types de sorties :

  • Un signal PWM ( modulation en largeur d’impulsion ) sur la broche 4.
  • Une interface I2C disponible sur  les broches 2 et 3.

 

oLa sortie PWM
 

La sortie PWM est simple à employer. Elle fournit une impulsion dont la durée varie suivant l'angle du module par rapport au Nord magnétique.

La largeur de cette impulsion varie de 1ms  pour un angle de 0º  à 36,99 ms pour un angle de  359,9º. Elle a donc une résolution de 100 µs / º avec en plus +1ms pour l’offset correspondant à 0°.

La durée entre un front descendant et un front montant est de 65 ms, ainsi la période est de 65 ms + la durée de l’impulsion du signal PWM.

La période a donc une durée minimum de 66ms ( pour un angle de 0º ) et de 102  ms maximum ( pour un angle de 359,9º ).

L'impulsion est générée sur 16 bits par le microcontrôleur donnant 1 µs de résolution soit un angle de 0,1°, mais il n’est pas recommandé en pratique de mesurer des directions avec des angles inférieurs à 3 ou 4°.

Le cycle 1 dure au total 66ms avec une largeur W de 1ms. Ceci est l’offset et représente une direction de 0º, le Nord. Le cycle 2 avec une durée totale de 75ms, a une largeur de 10ms. Il s’éloigne de l'offset de 1 ms en laissant une largeur de 9ms qui représente une position de 90º, l’Est. Dans le cycle 3 la durée est de 84ms et d'une largeur de 19ms, qui indique la position du sud à 180º. En conclusion, le cycle 4 avec une durée de 93 ms et une largeur de 28ms, représente une position de 270º, l’Ouest.

Si vous utilisez la sortie PWM, pensez à connecter les broches I2C ( SCL et SDA ) au + 5 volts à l’aide de 2 résistances de 47 Kohms, car ces dernières ne disposent pas de résistances de forçage internes ( pull-up ).

oL'interface I2C
 

L'interface I2C permet de relier le module sur un bus I2C, avec d'autres dispositifs, et d’être ainsi régi par un  microcontrôleur maître. Le protocole utilisé est le même que celui qui est employé avec n'importe quel autre dispositif I2C, notamment l’EEPROM série de type 24C04.

Le protocole de communication est montré sur le schéma ci-dessous.

 

Envoyer pour ce faire un bit de Start, puis l’adresse ( 0xC0 ) du module boussole avec le bit Read/Write au niveau bas, puis le numéro du registre que vous voulez lire.

Ceci devra être suivit par un nouveau bit de Start, puis l’adresse du module boussole avec le bit Read/Write au niveau haut ( 0xC1 ).

Vous pouvez alors lire 1 ou 2 octets ( correspondant au registre 8 ou 16 bits ).

Les octets de poids fort sont lus en premier sur les registres 16 bits.

Voici la liste des registres : 

Registre
Fonction
0 Numéro du logiciel interne à la boussole ( 8 à l’heure de l’écriture )
1 Angle sur un octet, entre 0 et 255, pour un cercle complet de 360°
2et 3 Angle sur un mot entre 0 et 3599 représentant un angle de 0 à 359,9°
4 et 5 Test interne (  Sorties différentielles du capteur 1 : sur 16 bits signé )
6 et 7 Test interne (  Sorties différentielles du capteur 2 : sur 16 bits signé )
8 et 9 Test interne de calibrage 1 ( valeur signé sur 16 bits )
10 et 11 Test interne de calibrage 2 ( valeur signé sur 16 bits )
12 Non utilisé ( lecture à zéro )
13 Non utilisé ( lecture à zéro )
14 Non utilisé ( lecture indéfinie )
15 Commande de calibrage ( écrire 255 pour entrer en mode calibrage )

Le registre 1 est la valeur de la direction convertie de 0 à 255, car il peut être plus simple pour certaine application de bénéficier d’une valeur comprise entre 0 et 255 plutôt qu’entre 0 et 360 qui nécessite alors 2 octets.

Pour les applications nécessitant une plus grande résolution, il conviendra d’utiliser les registres 2 et 3 qui délivrent un nombre compris entre 0 et 3599 pour un angle compris entre 0 et 359,9° ( registre 16 bits avec octet de poids fort en premier ).

Les registres 4 à 11 sont juste utilisés pour des tests internes, il n’est pas nécessaire de les utiliser.

Les registres 12 à 14 sont inutilisés et le registre 15 est utilisé pour calibrer la boussole.

L’interface I2C doit disposer de résistances de forçage pull-up sur les broches 2 et 3 ( un seul jeux de résistance pour tout le bus et pour les lignes SDA et SCL ) de 1,8 Kohms pour une fréquence de travaille du bus de 400 KHz maximum.

Toutefois, le module est conçu en priorité pour fonctionner à la vitesse standard de 100 KHz.

oLe Calibrage
 

Avant de calibrer le module CMPS03 nous devons veiller à le placer horizontalement et parallèle à la surface de la terre avec les composants vers le haut et écarté de n'importe quel objet métallique, particulièrement si il est magnétique ( des tournevis, des ciseaux, etc. ).

Pour calibrer le module boussole vous devrez savoir exactement où ce trouve le Nord, le Sud, l’Est et l’Ouest ( utilisez une boussole standard par exemple ).

Orientez le module boussole plein Nord comme suit :

 

Le calibrage peut être fait de deux manières : par la méthode matériel, à l'aide de l’entrée de calibrage ( broche 6 ) ou par la méthode logiciel, à l'aide du bus I2C.

La méthode matériel

C’est probablement la méthode la plus simple. La broche 6 de calibrage est utilisée. Cette entrée a sa propre résistance de forçage au niveau haut, qui fait qu'elle peut- être laissé en l’air après le calibrage.

La broche 6 doit être connectée à la masse ( niveau bas ) pour entrer en mode de calibrage.

Il est seulement nécessaire de pointer successivement le module sur un des 4 points cardinaux ( dans n’importe quel ordre, du moment que les 4 points sont effectués ), puis de solliciter furtivement l’entrée 6 à la masse. 

Exemple :

Mettez le module boussole plein Nord, puis mettez furtivement l'entrée 6 à la masse, pointez le Sud et mettez furtivement l’entrée 6 à la masse, etc …

Cela peut s’effectuer facilement avec un petit bouton poussoir relié d’un côté à l'entrée 6 et de l'autre à la masse.

Quand le bouton poussoir est ouvert, l'entrée 6 reste au niveau haut ( par la résistance de forçage pull-up sur le module ).

En appuyant sur le bouton poussoir, l’entrée 6 est placée au niveau bas et en le relachant l'entrée 6 revient au niveau haut.

La méthode logiciel

La méthode emploie l'interface I2C, et le protocole correspondant, pour parvenir à calibrer le module.

En effet, il suffit simplement d’écrire la valeur 0xFF ( 255 ) dans le registre interne 0x0F ( registre 15 ) pour chacun des quatre points cardinaux.

Le registre 15 est automatiquement remis à 0 en interne après que chaque point cardinal soit calibré.

Là encore, l'utilisation d'une boussole standard est recommandé pour orienter le module sur chacun des points cardinaux.

Caractéristiques techniques 

 Alimentation  + 5 Volts
 Consommation  15 à 20 mA
 Résolution  0,1°
 Précision  3 à 4°
 Filtrage  50 ou 60 Hz
 Sorties  PWM et I2C
 Dimensions  32 x 35 mm

Le plan de perçage de la carte

Le diagramme suivant montre les positions des trous de support du module CMPS03.

L'ancr tient à remercier l'auteur de cette fiche technique, Frédéric Quesnoy, pour sa contribution.

 

oQuelques liens
oContact
 
Pour toutes questions envoyer moi un mail: frederic.quesnoy@wanadoo.fr