Mundarija:

HMC5883 va Arduino Nano yordamida magnit maydon o'lchami: 4 qadam
HMC5883 va Arduino Nano yordamida magnit maydon o'lchami: 4 qadam

Video: HMC5883 va Arduino Nano yordamida magnit maydon o'lchami: 4 qadam

Video: HMC5883 va Arduino Nano yordamida magnit maydon o'lchami: 4 qadam
Video: Трехосевой цифровой компас HMC5883L и Arduino 2024, Iyul
Anonim
Image
Image

HMC5883-past maydonli magnit sezish uchun mo'ljallangan raqamli kompas. Bu qurilma magnit maydonining keng diapazoni +/- 8 Oe va chiqish tezligi 160 Gts. HMC5883 sensori kompas sarlavhasini 1 ° dan 2 ° gacha aniqligini ta'minlaydigan avtomatik uzatish tasmasi drayverlarini, ofsetni bekor qilishni va 12-bitli ADC ni o'z ichiga oladi. Barcha I²C mini -modullari 5VDC da ishlashga mo'ljallangan.

Ushbu qo'llanmada biz HMC5883 ning Arduino nano bilan batafsil ishlashini tushuntirmoqchimiz.

1 -qadam: Uskuna kerak:

Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi

Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:

1. HMC5883

2. Arduino Nano

3. I2C kabeli

4. Arduino Nano uchun I2C qalqoni

2 -qadam: Uskuna ulanishi:

Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi

Uskuna ulanish bo'limi asosan sensor va arduino nano o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:

HMC5883 I2C ustida ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi.

Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, biz ushbu ulanishni ishlatishni maslahat beramiz. Sizga faqat to'rtta sim kerak!

Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan.

Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.

3 -qadam: Magnit maydon intensivligini o'lchash uchun Arduino kodi:

Magnit maydon intensivligini o'lchash uchun Arduino kodi
Magnit maydon intensivligini o'lchash uchun Arduino kodi
Magnit maydon intensivligini o'lchash uchun Arduino kodi
Magnit maydon intensivligini o'lchash uchun Arduino kodi

Keling, Arduino kodidan boshlaylik.

Sensor modulini Arduino bilan ishlatganda, biz Wire.h kutubxonasini o'z ichiga olamiz. "Wire" kutubxonasida sensorlar va Arduino kartalari o'rtasidagi i2c aloqasini osonlashtiradigan funktsiyalar mavjud.

Foydalanuvchining qulayligi uchun butun Arduino kodi quyida keltirilgan:

#qo'shing

// HMC5883 I2C manzili - 0x1E (30)

#aniqlang Addr 0x1E

bo'sh o'rnatish ()

{

// I2C aloqasini MASTER sifatida boshlang

Wire.begin ();

// Serial aloqani ishga tushiring, bod tezligi = 9600

Serial.begin (9600);

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// A registrini sozlashni tanlang

Wire.write (0x00);

// Oddiy o'lchov konfiguratsiyasini o'rnating, ma'lumotlar chiqish tezligi = 0,75 Gts

Wire.write (0x60);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Mode reestrini tanlang

Wire.write (0x02);

// Doimiy o'lchovni o'rnating

Wire.write (0x00);

// I2C uzatishni to'xtating

Wire.endTransmission ();

kechikish (300);

}

bo'sh halqa ()

{

imzosiz int ma'lumotlari [6];

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini tanlang

Wire.write (0x03);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 6 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 6);

// 6 bayt ma'lumotni o'qing

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

agar (Wire.available () == 6)

{

ma'lumotlar [0] = Wire.read ();

ma'lumotlar [1] = Wire.read ();

ma'lumotlar [2] = Wire.read ();

ma'lumotlar [3] = Wire.read ();

ma'lumotlar [4] = Wire.read ();

ma'lumotlar [5] = Wire.read ();

}

kechikish (300);

// Ma'lumotni aylantirish

int xMag = ((ma'lumotlar [0] * 256) + ma'lumotlar [1]);

int zMag = ((ma'lumotlar [2] * 256) + ma'lumotlar [3]);

int yMag = ((ma'lumotlar [4] * 256) + ma'lumotlar [5]);

// Ma'lumotlarni ketma -ket monitorga chiqarish

Serial.print ("X o'qida magnit maydon:");

Serial.println (xMag);

Serial.print ("Y o'qida magnit maydon:");

Serial.println (yMag);

Serial.print ("Z o'qida magnit maydon:");

Serial.println (zMag);

kechikish (300);

}

Tel kutubxonasida Wire.write () va Wire.read () buyruqlarni yozish va sensor chiqishini o'qish uchun ishlatiladi. Kodning keyingi qismida sensor chiqishining o'qilishi ko'rsatilgan.

// 6 bayt ma'lumotni o'qing // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); ma'lumotlar [1] = Wire.read (); ma'lumotlar [2] = Wire.read (); ma'lumotlar [3] = Wire.read (); ma'lumotlar [4] = Wire.read (); ma'lumotlar [5] = Wire.read (); }

Arduino IDE seriyali monitorida sensorning chiqishini ko'rsatish uchun Serial.print () va Serial.println () ishlatiladi.

Sensorning chiqishi yuqoridagi rasmda ko'rsatilgan.

4 -qadam: Ilovalar:

Ilovalar
Ilovalar

HMC5883-bu past narxli kompas va magnitometriya kabi ilovalar uchun raqamli interfeysli past maydonli magnitli sezish uchun mo'ljallangan, sirtga o'rnatiladigan, ko'p chipli modul. Uning birdan ikki darajagacha yuqori aniqlik va aniqligi piyodalar navigatsiyasi va LBS ilovalarini ishga tushiradi.

Tavsiya: