HMC5883L a 3osý magnetometr Arduino

Výukový program ukazuje, jak ovládat digitální magnetometr pomocí Arduina.

Příklad používá následující prvky:

Připojení senzoru k Arduinu:

Modul komunikuje prostřednictvím populární sběrnice I2C. Připojení k Arduinu by tedy mělo být provedeno následovně:

Modul HMC5883L Pin Arduino
VCC 5 V
GND GND
SCL A5
SDA A4

Schéma připojení magnetometru k Arduino Uno.

Program pro Arduino

V příkladu byl použit následující kód:

 #include  // knihovna I2C

#define address 0x1E // adresa modulu HMC5883L pro I2C

void setup () {
  Serial.begin (9600); // inicializuje sériovou komunikaci
  Wire.begin (); // inicializace modulu
  
                                       // Nastavte vhodný režim senzoru
  Wire.beginTransmission (adresa); // otevřená komunikace
  Wire.write (0x02); // vyberte registr režimu         
  Wire.write (0x00); // režim nepřetržitého měření
  Wire.endTransmission ();
}

void loop () {
  
  int x, y, z; // proměnné pro tři osy

                                      // Nastavení adresy pro čtení dat
  Wire.beginTransmission (adresa);
  Wire.write (0x03); // výběr registru 3, registr MSB v ose X.
  Wire.endTransmission ();
  
 
                                     // Číst data pro každou osu, dva registry pro jednu osu
  Wire.requestFrom (adresa, 6);
  if (6 <= Wire.available ()) {
    x = Wire.read () << 8; // MSB osy X.
    x | = Wire.read (); // LSB osy X.
    z = Wire.read () << 8; // MSB osy Z.
    s | = Wire.read (); // LSB osy Z.
    y = Wire.read () << 8; // MSB osy Y.
    y | = Wire.read (); // LSB osy Y.
  }
  
                                                  // Zobrazení dat na sériovém monitoru
  Serial.print ("x:");
  Serial.print (x);
  Serial.print ("y:");
  Sériové výtisky;
  Serial.print ("od:");
  Serial.println (z);
  
  zpoždění (250); // zpoždění mezi měřeními 250 ms
}

Účinky programu můžeme vidět níže:

Screenshot sériového monitoru.

zveme vás ke spolupráci!