Мазмуну:

HMC5883 жана Arduino Nano колдонуу менен магниттик талааны өлчөө: 4 кадам
HMC5883 жана Arduino Nano колдонуу менен магниттик талааны өлчөө: 4 кадам

Video: HMC5883 жана Arduino Nano колдонуу менен магниттик талааны өлчөө: 4 кадам

Video: HMC5883 жана Arduino Nano колдонуу менен магниттик талааны өлчөө: 4 кадам
Video: Lesson 65: Controlling two channel Solid State Relay with push button switches 2024, Июль
Anonim
Image
Image

HMC5883-төмөн талаадагы магниттик сезүү үчүн иштелип чыккан санариптик компас. Бул аппараттын магнит талаасынын кенен диапазону +/- 8 Oe жана чыгаруу ылдамдыгы 160 Гц. HMC5883 сенсоруна автоматтык түрдө ажыратуучу драйверлер, офсеттин жокко чыгарылышы жана компастын багытынын 1 °-2 ° тактыгын камсыз кылган 12 биттик ADC кирет. Бардык I²C Mini модулдары 5VDCде иштөө үчүн иштелип чыккан.

Бул үйрөткүчтө, биз HMC5883 Arduino нано менен деталдуу иштешин түшүндүрөбүз.

1 -кадам: Аппараттык камсыздоо талап кылынат:

Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат

Максатыбызга жетүү үчүн бизге керектүү материалдар төмөнкү аппараттык компоненттерди камтыйт:

1. HMC5883

2. Ардуино Нано

3. I2C кабели

4. Arduino Nano үчүн I2C Shield

2 -кадам: Аппараттык туташуу:

Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу

Аппараттык туташуу бөлүмү негизинен сенсор менен arduino нанонун ортосунда талап кылынган зым байланыштарын түшүндүрөт. Туура туташууларды камсыздоо каалаган өндүрүш үчүн кандайдыр бир системада иштеп жатканда негизги зарылчылык болуп саналат. Ошентип, керектүү байланыштар төмөнкүлөр:

HMC5883 I2C үстүндө иштейт. Бул жерде сенсордун ар бир интерфейсин кантип зым менен жабуу керектигин көрсөтүүчү зымдардын схемасы келтирилген.

Кутудан тышкары, такта I2C интерфейси үчүн конфигурацияланган, андыктан эгер сиз агностиксиз болсоңуз, анда бул байланышты колдонууну сунуштайбыз. Сизге болгону төрт зым керек!

Vcc, Gnd, SCL жана SDA төөнөгүчтөрүнө төрт гана туташуу керек жана алар I2C кабелинин жардамы менен туташкан.

Бул байланыштар жогорудагы сүрөттөрдө көрсөтүлгөн.

3 -кадам: Магниттик талаанын интенсивдүүлүгүн өлчөө үчүн Arduino коду:

Магниттик талаанын интенсивдүүлүгүн өлчөө үчүн Arduino коду
Магниттик талаанын интенсивдүүлүгүн өлчөө үчүн Arduino коду
Магниттик талаанын интенсивдүүлүгүн өлчөө үчүн Arduino коду
Магниттик талаанын интенсивдүүлүгүн өлчөө үчүн Arduino коду

Келгиле, азыр Arduino коду менен баштайлы.

Arduino менен сенсор модулун колдонуп жатып, биз Wire.h китепканасын кошобуз. "Wire" китепканасы сенсор менен Arduino тактасынын ортосундагы i2c байланышын жеңилдетүүчү функцияларды камтыйт.

Колдонуучунун ыңгайлуулугу үчүн бүт Arduino коду төмөндө келтирилген:

#кошуу

// HMC5883 I2C дареги 0x1E (30)

#define Addr 0x1E

жараксыз орнотуу ()

{

// I2C байланышын MASTER катары баштаңыз

Wire.begin ();

// Сериялык байланышты баштоо, байдын ылдамдыгын орнотуу = 9600

Serial.begin (9600);

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// А регистрин конфигурациялоону тандаңыз

Wire.write (0x00);

// Кадимки өлчөө конфигурациясын орнотуңуз, маалыматтын чыгуу ылдамдыгы = 0,75 Гц

Wire.write (0x60);

// I2C берүүнү токтотуу

Wire.endTransmission ();

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Режимди тандаңыз

Wire.write (0x02);

// Үзгүлтүксүз өлчөөнү коюңуз

Wire.write (0x00);

// I2C берүүнү токтотуу

Wire.endTransmission ();

кечигүү (300);

}

боштук цикл ()

{

кол коюлбаган int маалыматтары [6];

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Маалымат реестрин тандоо

Wire.write (0x03);

// I2C берүүнү токтотуу

Wire.endTransmission ();

// 6 байт маалымат сураңыз

Wire.requestFrom (Addr, 6);

// 6 байт маалыматтарды окуңуз

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

эгер (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

маалымат [3] = Wire.read ();

data [4] = Wire.read ();

маалымат [5] = Wire.read ();

}

кечигүү (300);

// Маалыматты конвертациялоо

int xMag = ((маалымат [0] * 256) + маалымат [1]);

int zMag = ((маалыматтар [2] * 256) + маалыматтар [3]);

int yMag = ((маалыматтар [4] * 256) + маалыматтар [5]);

// Маалыматтарды сериялык мониторго чыгаруу

Serial.print ("X огунда магнит талаасы:");

Serial.println (xMag);

Serial.print ("Y огунда магнит талаасы:");

Serial.println (yMag);

Serial.print ("Z огунда магнит талаасы:");

Serial.println (zMag);

кечигүү (300);

}

Зымдык китепканада Wire.write () жана Wire.read () командаларды жазуу жана сенсордун чыгышын окуу үчүн колдонулат. Коддун кийинки бөлүгү сенсордун чыгышын көрсөтөт.

// Окуунун 6 байт маалыматы // 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 (); маалымат [3] = Wire.read (); data [4] = Wire.read (); маалымат [5] = Wire.read (); }

Serial.print () жана Serial.println () Arduino IDE сериялык мониторунда сенсордун чыгарылышын көрсөтүү үчүн колдонулат.

Сенсордун чыгышы жогорудагы сүрөттө көрсөтүлгөн.

4 -кадам: Тиркемелер:

Колдонмолор
Колдонмолор

HMC5883-бул төмөн баалуу компас жана магнитометрия сыяктуу колдонмолор үчүн санарип интерфейси бар, аз талаадагы магниттик сезүү үчүн иштелип чыккан, көп чиптүү модуль. Анын бирден эки даражага чейин жогорку деңгээлдеги тактык жана тактык жөө навигацияны жана LBS тиркемелерин иштетет.

Сунушталууда: