Considérons la connexion du module GY-273 avec la boussole numérique à trois axes Honeywell HMC5883L. Ce microcircuit peut être utilisé pour des mesures magnétométriques, en navigation, si une grande précision de mesure n'est pas requise (avec une erreur de 1 … 2 degrés et la possibilité d'étalonnage). L'appareil est connecté via l'interface I2C.
Nécessaire
- - Boussole numérique HMC5883;
- -Arduino;
- - carte prototype et fils de connexion;
- - ordinateur.
Instructions
Étape 1
Voici les principales caractéristiques d'un compas magnétique:
- Capteur magnétiquement sensible à 3 axes;
- CAN 12 bits avec une résolution de 2 mG (milligauss);
- auto-test intégré;
- basse tension de fonctionnement et faible consommation;
- interface numérique I2C;
- taux d'interrogation élevé - jusqu'à 160 fois par seconde (le temps d'une mesure est d'environ 6 ms);
- la précision de détermination de la direction est de 1°… 2°;
- peut être utilisé dans des champs magnétiques puissants (jusqu'à ± 8 Gauss).
Le schéma de connexion du capteur magnétique HMC5883L à l'Arduino est illustré sur la figure. Il est très compact et simple, car L'interface I2C à deux fils est excellente car elle nécessite peu de connexions. Vous pouvez utiliser une planche à pain.
Étape 2
Cela devrait ressembler à la photo. Je vais également connecter un analyseur logique aux bus SCL et SDA pour surveiller l'échange d'informations entre l'Arduino et le module HMC5883. Ce n'est pas obligatoire.
Étape 3
Comme première connaissance, essayons de lire les registres d'identification 10 (0xA), 11 (0xB) et 12 (0xC) de la boussole numérique HMC5883 et écrivons un tel croquis comme sur la figure. Il est accompagné de commentaires détaillés.
Étape 4
Le signal obtenu avec l'analyseur logique sera comme indiqué dans l'illustration.
Qu'est-ce que ça veut dire? Le premier octet est l'adresse I2C avec laquelle nous (le périphérique maître, Arduino) établissons la communication (7 bits haut 0x1E) et le mode d'écriture (bit bas - 0x0); le nombre est 0x3C. Le deuxième octet est le numéro 0xA, que nous avons écrit pour adresser 0x1E et le bit de confirmation du capteur HMC5883L, qui est l'esclave. Il s'agit du numéro de registre à partir duquel nous commencerons à lire les données. Ceci conclut la première transaction. Le suivant commence. Le troisième octet est une requête de lecture de l'esclave (les 7 bits les plus significatifs sont l'adresse 0x1E, le 8ème bit est l'opération de lecture 0x1; le nombre résultant est 0x3D). Les 3 derniers octets sont la réponse de l'esclave HMC5883L des registres 0xA, 0xB et 0xC, respectivement.
La boussole numérique HMC5883L se déplace indépendamment dans les registres pendant la lecture continue. Ceux. il n'est pas nécessaire (mais pas interdit) de préciser le cas à chaque fois. Par exemple, si au lieu de 0xA nous écrivions 0x3 et lisions 10 fois, nous obtiendrions des valeurs dans 10 registres, en partant du 3ème au 12ème.
Et quels sont ces trois nombres - 0x48, 0x34, 0x33 ? En utilisant à nouveau la fiche technique de la boussole numérique HMC5883L, nous verrons que ce sont les valeurs par défaut pour les trois registres d'identification.
Étape 5
Pour obtenir les données de la boussole numérique sur le champ magnétique, vous devez lire les registres 3 à 8, tout comme nous lisons les registres d'identification. La seule différence est que les données pour chacun des trois axes X, Y et Z sont présentées sous forme de nombres à deux octets. En les convertissant en nombres décimaux, nous obtenons des directions le long de chacun des trois axes.