|
|
|
|||
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 | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
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 :
| ||||||||||||||||||||||||||
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 :
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
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 | ||||||||||||||||||||||||||