Turinys:

Magnetinio lauko matavimas naudojant HMC5883 ir Raspberry Pi: 4 žingsniai
Magnetinio lauko matavimas naudojant HMC5883 ir Raspberry Pi: 4 žingsniai

Video: Magnetinio lauko matavimas naudojant HMC5883 ir Raspberry Pi: 4 žingsniai

Video: Magnetinio lauko matavimas naudojant HMC5883 ir Raspberry Pi: 4 žingsniai
Video: Автомобильный генератор BMW 12 В 180 А к генератору с помощью зарядного устройства для ноутбука 2024, Lapkritis
Anonim
Image
Image

HMC5883 yra skaitmeninis kompasas, skirtas mažo lauko magnetiniam jutimui. Šis prietaisas turi platų magnetinio lauko diapazoną +/- 8 Oe ir išėjimo dažnį 160 Hz. „HMC5883“jutiklyje yra automatinio diržo šalinimo juostų tvarkyklės, poslinkio atšaukimas ir 12 bitų ADC, leidžiantis tikslumą nuo 1 ° iki 2 °. Visi „I²C“mini moduliai yra skirti veikti esant 5 V nuolatinei įtampai.

Šioje pamokoje mes paaiškinsime išsamų HMC5883 darbą su „Raspberry pi“ir jo programavimą naudojant „Java“programavimo kalbą.

1 veiksmas: reikalinga aparatūra:

Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra

Techninė įranga, reikalinga užduočiai atlikti, yra tokia:

1. HMC5883

2. Raspberry Pi

3. I2C kabelis

4. „I2C Shield For Raspberry Pi“

5. Ethernet kabelis

2 veiksmas: prijungimas prie aparatūros:

Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas

Techninės įrangos prijungimo skyriuje iš esmės paaiškinamos reikalingos laidų jungtys tarp jutiklio ir aviečių pi. Užtikrinti teisingas jungtis yra pagrindinė būtinybė dirbant su bet kuria norimos išvesties sistema. Taigi, būtinos jungtys yra šios:

HMC5883 veiks per I2C. Čia yra elektros instaliacijos schemos pavyzdys, parodantis, kaip prijungti kiekvieną jutiklio sąsają.

Iš karto plokštė sukonfigūruota I2C sąsajai, todėl rekomenduojame naudoti šį prijungimą, jei esate kitaip agnostikas. Viskas, ko jums reikia, yra keturi laidai!

Reikia tik keturių jungčių „Vcc“, „Gnd“, „SCL“ir „SDA“kaiščių, kurie yra prijungti naudojant I2C kabelį.

Šie ryšiai parodyti aukščiau esančiose nuotraukose.

3 žingsnis: „Java“kodas magnetinio lauko intensyvumui matuoti:

„Java“kodas magnetinio lauko intensyvumui matuoti
„Java“kodas magnetinio lauko intensyvumui matuoti
„Java“kodas magnetinio lauko intensyvumui matuoti
„Java“kodas magnetinio lauko intensyvumui matuoti

„Raspberry pi“naudojimo pranašumas yra tas, kad programavimo kalba, kuria norite programuoti plokštę, yra lanksti, kad būtų galima su ja susieti jutiklį. Pasinaudodami šiuo šios plokštės pranašumu, mes parodome, kad tai programavimas „Java“. „HMC5883“„Java“kodą galima atsisiųsti iš mūsų „Github“bendruomenės, kuri yra „Dcube Store“.

Be vartotojų patogumo, mes taip pat paaiškiname kodą čia:

Kaip pirmąjį kodavimo žingsnį, „Java“atveju turite atsisiųsti „pi4j“biblioteką, nes ši biblioteka palaiko kode naudojamas funkcijas. Taigi, norėdami atsisiųsti biblioteką, galite apsilankyti šioje nuorodoje:

pi4j.com/install.html

Taip pat galite nukopijuoti šio jutiklio darbinį „Java“kodą:

importuoti com.pi4j.io.i2c. I2CBus;

importuoti com.pi4j.io.i2c. I2CDevice;

mport com.pi4j.io.i2c. I2CFactory;

importuoti java.io. IOException; viešoji klasė HMC5883

{

public static void main (String args ) metimai Išimtis

{

// Sukurti I2C magistralę

I2CBus magistralė = I2CFactory.getInstance (I2CBus. BUS_1);

// Gauti I2C įrenginį, HMC5883 I2C adresas yra 0x1E (30)

I2CDevice device = Bus.getDevice (0x1E);

// Pasirinkite konfigūracijos registrą A

// Įprasta matavimo konfigūracija, duomenų perdavimo sparta o/p = 0,75 Hz

device.write (0x00, (baitas) 0x60);

// Pasirinkite režimo registrą

// Nuolatinio matavimo režimas

device.write (0x02, (baitas) 0x00);

Siūlai.miegoti (500);

// Perskaitykite 6 baitus duomenų iš 0x03 (3)

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

baitas duomenys = naujas baitas [6];

device.read (0x03, duomenys, 0, 6);

// Konvertuoti duomenis

int xMag = ((duomenys [0] ir 0xFF) * 256 + (duomenys [1] ir 0xFF));

jei (xMag> 32767)

{

xMag -= 65536;

}

int zMag = ((duomenys [2] ir 0xFF) * 256 + (duomenys [3] ir 0xFF));

jei (zMag> 32767)

{

zMag -= 65536;

}

int yMag = ((duomenys [4] ir 0xFF) * 256 + (duomenys [5] ir 0xFF));

jei (yMag> 32767)

{

yMag -= 65536;

}

// Išvesti duomenis į ekraną

System.out.printf ("Magnetinis laukas X ašyje: %d %n", xMag);

System.out.printf ("Magnetinis laukas Y ašyje: %d %n", yMag);

System.out.printf ("Magnetinis laukas Z ašyje: %d %n", zMag);

}

}

Rašymo () ir skaitymo () funkcijos naudojamos komandoms rašyti ir jutiklio išėjimui skaityti. Tolesnė dalis iliustruoja magnetinio lauko reikšmių nuskaitymą.

// Perskaitykite 6 baitus duomenų iš 0x03 (3)

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

baitas duomenys = naujas baitas [6];

device.read (0x03, duomenys, 0, 6);

Išvestis parodyta aukščiau esančiame paveikslėlyje.

4 žingsnis: programos:

Programos
Programos

„HMC5883“yra ant paviršiaus montuojamas kelių lustų modulis, skirtas mažo lauko magnetiniam jutimui, turintis skaitmeninę sąsają, skirtą tokioms programoms kaip mažos kainos kompasavimas ir magnetometrija. Jo vieno ar dviejų laipsnių aukšto lygio tikslumas ir tikslumas leidžia navigaciją pėstiesiems ir LBS programas.

Rekomenduojamas: