Table des matières:

Mesure du champ magnétique à l'aide de HMC5883 et d'Arduino Nano : 4 étapes
Mesure du champ magnétique à l'aide de HMC5883 et d'Arduino Nano : 4 étapes

Vidéo: Mesure du champ magnétique à l'aide de HMC5883 et d'Arduino Nano : 4 étapes

Vidéo: Mesure du champ magnétique à l'aide de HMC5883 et d'Arduino Nano : 4 étapes
Vidéo: Moteurs pas à pas 2024, Juillet
Anonim
Image
Image

Le HMC5883 est une boussole numérique conçue pour la détection magnétique à faible champ. Cet appareil a une large plage de champ magnétique de +/-8 Oe et un taux de sortie de 160 Hz. Le capteur HMC5883 comprend des pilotes de sangle de démagnétisation automatique, une annulation de décalage et un CAN 12 bits qui permet une précision de cap de 1° à 2°. Tous les mini modules I²C sont conçus pour fonctionner à 5VDC.

Dans ce tutoriel, nous allons expliquer le fonctionnement détaillé de HMC5883 avec Arduino nano.

Étape 1: Matériel requis:

Matériel requis
Matériel requis
Matériel requis
Matériel requis
Matériel requis
Matériel requis

Les matériaux dont nous avons besoin pour atteindre notre objectif comprennent les composants matériels suivants:

1. HMC5883

2. Arduino Nano

3. Câble I2C

4. Bouclier I2C pour Arduino Nano

Étape 2: connexion matérielle:

Raccordement matériel
Raccordement matériel
Raccordement matériel
Raccordement matériel

La section de raccordement matériel explique essentiellement les connexions de câblage requises entre le capteur et l'arduino nano. Assurer des connexions correctes est la nécessité de base tout en travaillant sur n'importe quel système pour la sortie souhaitée. Ainsi, les connexions requises sont les suivantes:

Le HMC5883 fonctionnera sur I2C. Voici l'exemple de schéma de câblage, montrant comment câbler chaque interface du capteur.

Prête à l'emploi, la carte est configurée pour une interface I2C, en tant que telle, nous vous recommandons d'utiliser cette connexion si vous êtes par ailleurs agnostique. Tout ce dont vous avez besoin, c'est de quatre fils !

Seules quatre connexions sont nécessaires pour les broches Vcc, Gnd, SCL et SDA et celles-ci sont connectées à l'aide d'un câble I2C.

Ces connexions sont illustrées dans les images ci-dessus.

Étape 3: Code Arduino pour mesurer l'intensité du champ magnétique:

Code Arduino pour mesurer l'intensité du champ magnétique
Code Arduino pour mesurer l'intensité du champ magnétique
Code Arduino pour mesurer l'intensité du champ magnétique
Code Arduino pour mesurer l'intensité du champ magnétique

Commençons maintenant par le code Arduino.

Lors de l'utilisation du module de capteur avec l'Arduino, nous incluons la bibliothèque Wire.h. La bibliothèque "Wire" contient les fonctions qui facilitent la communication i2c entre le capteur et la carte Arduino.

Le code Arduino complet est donné ci-dessous pour la commodité de l'utilisateur:

#comprendre

// L'adresse I2C HMC5883 est 0x1E(30)

#define adresse 0x1E

void setup()

{

// Initialiser la communication I2C en tant que MASTER

Fil.begin();

// Initialiser la communication série, définir le débit en bauds = 9600

Serial.begin(9600);

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Sélectionnez configurer le registre A

Wire.write(0x00);

// Définir la configuration de mesure normale, taux de sortie des données = 0,75 Hz

Wire.write(0x60);

// Arrêter la transmission I2C

Wire.endTransmission();

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de mode

Wire.write(0x02);

// Définir la mesure continue

Wire.write(0x00);

// Arrêter la transmission I2C

Wire.endTransmission();

retard (300);

}

boucle vide()

{

données int non signées[6];

// Démarrer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de données

Wire.write(0x03);

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 6 octets de données

Wire.requestFrom(Adr, 6);

// Lecture de 6 octets de données

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

if(Fil.disponible() == 6)

{

data[0] = Wire.read();

données[1] = Wire.read();

data[2] = Wire.read();

data[3] = Wire.read();

données[4] = Wire.read();

données[5] = Wire.read();

}

retard (300);

// Convertir les données

int xMag = ((données[0] * 256) + données[1]);

int zMag = ((données[2] * 256) + données[3]);

int yMag = ((données[4] * 256) + données[5]);

// Sortie des données vers le moniteur série

Serial.print("Champ magnétique dans l'axe X: ");

Serial.println(xMag);

Serial.print("Champ magnétique dans l'axe Y: ");

Serial.println(yMag);

Serial.print("Champ magnétique dans l'axe Z: ");

Serial.println(zMag);

retard (300);

}

Dans la bibliothèque de fils Wire.write() et Wire.read() sont utilisés pour écrire les commandes et lire la sortie du capteur. La partie suivante du code illustre la lecture de la sortie du capteur.

// Lire 6 octets de données // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if(Wire.available() == 6) { data[0] = Wire.read(); données[1] = Wire.read(); data[2] = Wire.read(); data[3] = Wire.read(); données[4] = Wire.read(); données[5] = Wire.read(); }

Serial.print() et Serial.println() sont utilisés pour afficher la sortie du capteur sur le moniteur série de l'IDE Arduino.

La sortie du capteur est montrée dans l'image ci-dessus.

Étape 4: Candidatures:

Applications
Applications

Le HMC5883 est un module multipuce à montage en surface conçu pour la détection magnétique à faible champ avec une interface numérique pour des applications telles que la boussole et la magnétométrie à faible coût. Sa précision et sa précision de haut niveau d'un à deux degrés permettent la navigation piétonne et les applications LBS.

Conseillé: