HMC5883 және бөлшек фотонының көмегімен магниттік өрісті өлшеу: 4 қадам
HMC5883 және бөлшек фотонының көмегімен магниттік өрісті өлшеу: 4 қадам
Anonim
Image
Image

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

Бұл оқулықта біз HMC5883 бөлшектерінің фотонмен толық жұмыс істеуін түсіндіреміз. Бөлшек фотон - бұл Интернет -заттардың (IoT) ең негізгі мүмкіндігін қолдайтын веб -сайттан деректерді жіберуді және алуды жеңілдететін тақта.

1 -қадам: Қажетті жабдық:

Қажетті жабдық
Қажетті жабдық
Қажетті жабдық
Қажетті жабдық
Қажетті жабдық
Қажетті жабдық

Мақсатқа жету үшін бізге қажет материалдар келесі аппараттық компоненттерді қамтиды:

1. HMC5883

2. Фотондық бөлшектер

3. I2C кабелі

4. Бөлшек фотонға арналған I2C қалқаны

2 -қадам: Жабдықты қосу:

Жабдықты қосу
Жабдықты қосу
Жабдықты қосу
Жабдықты қосу

Аппаратты қосу бөлімі негізінен сенсор мен фотон бөлшектері арасындағы сымдық қосылыстарды түсіндіреді. Қажетті шығыс үшін кез келген жүйеде жұмыс істеу кезінде дұрыс қосылуды қамтамасыз ету - бұл негізгі қажеттілік. Сонымен, қажетті байланыстар келесідей:

HMC5883 I2C арқылы жұмыс істейді. Датчиктің әр интерфейсін қалай қосуға болатынын көрсететін электр схемасының мысалы.

Қаптамадан тыс тақта I2C интерфейсі үшін конфигурацияланған, сондықтан егер сіз агностикалық болмасаңыз, осы қосылымды пайдалануды ұсынамыз. Сізге тек төрт сым қажет!

Vcc, Gnd, SCL және SDA түйреуіштеріне тек төрт қосылым қажет және олар I2C кабелінің көмегімен қосылған.

Бұл байланыстар жоғарыдағы суреттерде көрсетілген.

3 -қадам: Магнит өрісінің қарқындылығын өлшейтін код:

Магнит өрісінің интенсивтілігін өлшейтін код
Магнит өрісінің интенсивтілігін өлшейтін код

Енді бөлшектер кодынан бастайық.

Сенсор модулін Arduino -мен бірге қолданған кезде, біз application.h және spark_wiring_i2c.h кітапханасын қосамыз. «application.h» және spark_wiring_i2c.h кітапханасы сенсор мен бөлшек арасындағы i2c байланысын жеңілдететін функцияларды қамтиды.

Пайдаланушыға ыңғайлы болу үшін бөлшектердің толық коды төменде берілген:

#қосу

#қосу

// HMC5883 I2C мекенжайы - 0x1E (30)

#анықтау Addr 0x1E

int xMag = 0, yMag = 0, zMag = 0;

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

{

// Айнымалыны орнатыңыз

Particle.variable («i2cdevice», «HMC5883»);

Particle.variable («xMag», xMag);

Particle.variable («yMag», yMag);

Particle.variable («zMag», zMag);

// 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)

{

деректер [0] = Wire.read ();

деректер [1] = Wire.read ();

деректер [2] = Wire.read ();

деректер [3] = Wire.read ();

деректер [4] = Wire.read ();

деректер [5] = Wire.read ();

}

кешіктіру (300);

// Деректерді түрлендіру

xMag = ((деректер [0] * 256) + деректер [1]);

егер (xMag> 32767)

{

xMag -= 65536;

}

zMag = ((деректер [2] * 256) + деректер [3]);

егер (zMag> 32767)

{

zMag -= 65536;

}

yMag = ((деректер [4] * 256) + деректер [5]);

егер (yMag> 32767)

{

yMag -= 65536;

}

// Деректерді бақылау тақтасына шығару

Particle.publish («X-осіндегі магнит өрісі:», String (xMag));

кешіктіру (1000);

Particle.publish («Y осінде магнит өрісі:», String (yMag));

кешіктіру (1000);

Particle.publish («Z-осіндегі магнит өрісі:», String (zMag));

кешіктіру (1000);

}

Particle.variable () функциясы сенсордың шығысын сақтау үшін айнымалылар жасайды және Particle.publish () функциясы сайттың бақылау тақтасында шығуды көрсетеді.

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

4 -қадам: Өтініштер:

Қолданбалар
Қолданбалар

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

Ұсынылған: