Obsah:
- Krok 1: Požadovaný hardware:
- Krok 2: Připojení hardwaru:
- Krok 3: Arduino kód pro měření intenzity magnetického pole:
- Krok 4: Aplikace:
Video: Měření magnetického pole pomocí HMC5883 a Arduino Nano: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
HMC5883 je digitální kompas určený pro magnetické snímání v nízkém poli. Toto zařízení má široký rozsah magnetického pole +/- 8 Oe a výstupní rychlost 160 Hz. Senzor HMC5883 obsahuje automatické ovladače demagnetizačních popruhů, zrušení offsetu a 12bitový ADC, který umožňuje přesnost směru kompasu 1 ° až 2 °. Všechny moduly I²C Mini jsou navrženy pro provoz při 5 V DC.
V tomto tutoriálu vysvětlíme detailní práci HMC5883 s Arduino nano.
Krok 1: Požadovaný hardware:
Materiály, které potřebujeme k dosažení našeho cíle, zahrnují následující hardwarové komponenty:
1. HMC5883
2. Arduino Nano
3. Kabel I2C
4. I2C štít pro Arduino Nano
Krok 2: Připojení hardwaru:
Sekce zapojení hardwaru v zásadě vysvětluje zapojení kabelů požadovaná mezi senzorem a arduino nano. Zajištění správného připojení je základní nutností při práci na jakémkoli systému pro požadovaný výstup. Požadovaná připojení jsou tedy následující:
HMC5883 bude fungovat přes I2C. Zde je příklad schématu zapojení, které ukazuje, jak zapojit jednotlivá rozhraní senzoru.
Po vybalení je deska nakonfigurována pro rozhraní I2C, proto doporučujeme tuto přípojku použít, pokud jste jinak agnostik. Vše, co potřebujete, jsou čtyři dráty!
Jsou vyžadována pouze čtyři připojení Vcc, Gnd, SCL a SDA piny a ty jsou spojeny pomocí kabelu I2C.
Tato spojení jsou ukázána na obrázcích výše.
Krok 3: Arduino kód pro měření intenzity magnetického pole:
Začněme nyní kódem Arduino.
Při používání senzorového modulu s Arduinem jsme zahrnuli knihovnu Wire.h. Knihovna „Wire“obsahuje funkce, které usnadňují komunikaci i2c mezi senzorem a deskou Arduino.
Celý kód Arduino je pro pohodlí uživatele uveden níže:
#zahrnout
// Adresa I2C HMC5883 je 0x1E (30)
#define Addr 0x1E
neplatné nastavení ()
{
// Inicializujte komunikaci I2C jako MASTER
Wire.begin ();
// Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600
Serial.begin (9600);
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte konfigurovat registr A
Wire.write (0x00);
// Nastavení normální konfigurace měření, rychlost výstupu dat = 0,75 Hz
Wire.write (0x60);
// Zastavte přenos I2C
Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte režim Registrovat
Wire.write (0x02);
// Nastavení kontinuálního měření
Wire.write (0x00);
// Zastavte přenos I2C
Wire.endTransmission ();
zpoždění (300);
}
prázdná smyčka ()
{
nepodepsaná int data [6];
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte datový registr
Wire.write (0x03);
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 6 bajtů dat
Wire.requestFrom (Addr, 6);
// Přečíst 6 bajtů dat
// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb
pokud (Wire.available () == 6)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
data [4] = Wire.read ();
data [5] = Wire.read ();
}
zpoždění (300);
// Převod dat
int xMag = ((data [0] * 256) + data [1]);
int zMag = ((data [2] * 256) + data [3]);
int yMag = ((data [4] * 256) + data [5]);
// Výstup dat na sériový monitor
Serial.print ("Magnetické pole v ose X:");
Serial.println (xMag);
Serial.print ("Magnetické pole v ose Y:");
Serial.println (yMag);
Serial.print ("Magnetické pole v ose Z:");
Serial.println (zMag);
zpoždění (300);
}
V drátové knihovně Wire.write () a Wire.read () slouží k zápisu příkazů a čtení výstupu senzoru. Následující část kódu ukazuje čtení výstupu snímače.
// Přečíst 6 bytů dat // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); data [1] = Wire.read (); data [2] = Wire.read (); data [3] = Wire.read (); data [4] = Wire.read (); data [5] = Wire.read (); }
Serial.print () a Serial.println () se používá k zobrazení výstupu senzoru na sériovém monitoru Arduino IDE.
Výstup snímače je zobrazen na obrázku výše.
Krok 4: Aplikace:
HMC5883 je vícečipový modul pro povrchovou montáž navržený pro magnetické snímání s nízkým polem s digitálním rozhraním pro aplikace, jako je levný kompas a magnetometrie. Jeho přesnost a přesnost jeden až dva stupně umožňuje pěší navigaci a aplikace LBS.
Doporučuje:
Měření magnetického pole pomocí HMC5883 a Raspberry Pi: 4 kroky
Měření magnetického pole pomocí HMC5883 a Raspberry Pi: HMC5883 je digitální kompas určený pro magnetické snímání v nízkém poli. Toto zařízení má široký rozsah magnetického pole +/- 8 Oe a výstupní rychlost 160 Hz. Senzor HMC5883 obsahuje ovladače odmagnetovacích popruhů, zrušení offsetu a
Měření magnetického pole pomocí HMC5883 a fotonu částic: 4 kroky
Měření magnetického pole pomocí HMC5883 a fotonu částic: HMC5883 je digitální kompas určený pro magnetické snímání v nízkém poli. Toto zařízení má široký rozsah magnetického pole +/- 8 Oe a výstupní rychlost 160 Hz. Senzor HMC5883 obsahuje ovladače odmagnetovacích popruhů, zrušení offsetu a
Měření tlaku pomocí CPS120 a Arduino Nano: 4 kroky
Měření tlaku pomocí CPS120 a Arduino Nano: CPS120 je vysoce kvalitní a levný kapacitní snímač absolutního tlaku s plně kompenzovaným výstupem. Spotřebovává velmi málo energie a skládá se z ultra malého mikroelektronického mechanického senzoru (MEMS) pro měření tlaku. Sigma-delta založená
Měření teploty pomocí STS21 a Arduino Nano: 4 kroky
Měření teploty pomocí STS21 a Arduino Nano: Digitální teplotní senzor STS21 nabízí vynikající výkon a prostorově úspornou stopu. Poskytuje kalibrované linearizované signály v digitálním formátu I2C. Výroba tohoto senzoru je založena na technologii CMOSens, která připisuje vynikající
3osý snímač magnetického pole: 10 kroků (s obrázky)
3osý snímač magnetického pole: Bezdrátové systémy přenosu energie jsou na dobré cestě k nahrazení konvenčního kabelového nabíjení. Od malých biomedicínských implantátů až po bezdrátové dobíjení velkých elektrických vozidel. Nedílnou součástí výzkumu bezdrátového napájení je