Turinys:

„Arduino“magnetometras: 5 žingsniai (su nuotraukomis)
„Arduino“magnetometras: 5 žingsniai (su nuotraukomis)

Video: „Arduino“magnetometras: 5 žingsniai (su nuotraukomis)

Video: „Arduino“magnetometras: 5 žingsniai (su nuotraukomis)
Video: GY-271. Цифровой магнитометр и Ардуино. Делаем компас 2024, Lapkritis
Anonim
Arduino magnetometras
Arduino magnetometras

Ką mes statome?

Žmonės negali aptikti magnetinių laukų, tačiau mes naudojame prietaisus, kurie visada priklauso nuo magnetų. Pavyzdžiui, varikliams, kompasams, sukimosi jutikliams ir vėjo turbinoms reikalingi magnetai. Šioje pamokoje aprašoma, kaip sukurti „Arduino“pagrindu veikiantį magnetometrą, kuris juttų magnetinį lauką, naudojant tris „Hall“efekto jutiklius. Magnetinio lauko vektorius tam tikroje vietoje rodomas mažame ekrane, naudojant izometrinę projekciją.

Kas yra Arduino?

„Arduino“yra mažas atviro kodo patogus mikrovaldiklis. Jame yra skaitmeniniai įvesties ir išvesties kaiščiai. Jis taip pat turi analoginius įvesties kaiščius, kurie yra naudingi skaitant įvestį iš jutiklių. Galimi įvairūs „Arduino“modeliai. Šioje pamokoje aprašoma, kaip naudoti „Arduino Uno“arba „Arduino MKR1010“. Tačiau gali būti naudojami ir kiti modeliai.

Prieš pradėdami šią mokymo programą, atsisiųskite „Arduino“kūrimo aplinką ir visas jūsų konkrečiam modeliui reikalingas bibliotekas. Kūrimo aplinką rasite adresu https://www.arduino.cc/en/main/software, o diegimo instrukcijas -

Kas yra magnetinis laukas?

Nuolatiniai magnetai daro jėgas kitiems nuolatiniams magnetams. Srovę nešantys laidai daro jėgas kitiems srovę nešiojantiems laidams. Nuolatiniai magnetai ir srovę nešantys laidai taip pat veikia vienas kitą. Ši jėga vienetinei bandymo srovei yra magnetinis laukas.

Jei matuojame objekto tūrį, gauname vieną skaliarinį skaičių. Tačiau magnetizmą apibūdina vektorinis laukas, sudėtingesnis kiekis. Pirma, jis skiriasi priklausomai nuo padėties visoje erdvėje. Pavyzdžiui, magnetinis laukas, esantis vieno centimetro atstumu nuo nuolatinio magneto, greičiausiai bus didesnis nei magnetinis laukas, esantis už dešimties centimetrų.

Toliau magnetinis laukas kiekviename erdvės taške pavaizduotas vektoriu. Vektoriaus dydis parodo magnetinio lauko stiprumą. Kryptis yra statmena tiek jėgos, tiek bandymo srovės krypčiai.

Magnetinį lauką vienoje vietoje galime pavaizduoti kaip rodyklę. Magnetinį lauką erdvėje galime pavaizduoti rodyklių masyvu skirtingose vietose, galbūt skirtingo dydžio ir skirtingomis kryptimis. Gražią vizualizaciją galite rasti adresu https://www.falstad.com/vector3dm/. Mūsų sukurtas magnetometras rodo magnetinį lauką jutiklių vietoje kaip rodyklė ekrane.

Kas yra „Hall“efekto jutiklis ir kaip jis veikia?

Halės efekto jutiklis yra mažas, nebrangus prietaisas, matuojantis magnetinio lauko stiprumą tam tikra kryptimi. Jis pagamintas iš puslaidininkio gabalo, pridėto su papildomais krūviais. Kai kurių Hall efekto jutiklių išėjimas yra analoginė įtampa. Kiti „Hall“efekto jutikliai turi integruotą lygintuvą ir sukuria skaitmeninę išvestį. Kiti Hall efekto jutikliai yra integruoti į didesnius prietaisus, kurie matuoja srautą, sukimosi greitį ar kitus kiekius.

Halės efekto fiziką apibendrina Lorentzo jėgos lygtis. Ši lygtis apibūdina jėgą judančiam krūviui dėl išorinio elektrinio ir magnetinio lauko.

Vaizdas
Vaizdas

Žemiau pateiktas paveikslas iliustruoja Hall efektą. Tarkime, kad norime išmatuoti magnetinio lauko stiprumą mėlynos rodyklės kryptimi. Kaip parodyta kairėje paveikslo dalyje, per puslaidininkio gabalėlį, statmeną matuojamo lauko krypčiai, mes įjungiame srovę. Srovė yra krūvių srautas, todėl puslaidininkio krūvis juda tam tikru greičiu. Šis krūvis pajus jėgą dėl išorinio lauko, kaip parodyta paveikslo vidurinėje dalyje. Įkrovos judės dėl jėgos ir kaupsis ant puslaidininkio kraštų. Įkrovos kaupiasi tol, kol jėga dėl sukauptų krūvių subalansuoja jėgą, atsirandančią dėl išorinio magnetinio lauko. Mes galime išmatuoti puslaidininkio įtampą, kaip parodyta dešinėje paveikslo dalyje. Išmatuota įtampa yra proporcinga magnetinio lauko stiprumui ir yra statmena srovei ir magnetinio lauko krypčiai.

Vaizdas
Vaizdas

Kas yra izometrinė projekcija?

Kiekviename erdvės taške magnetinį lauką apibūdina trimatis vektorius. Tačiau mūsų ekranas yra dvimatis. Trimatį vektorių galime projektuoti į dvimatę plokštumą, kad galėtume nupiešti jį ekrane. Yra keli būdai, kaip tai padaryti, pavyzdžiui, izometrinė projekcija, ortografinė projekcija arba įstrižinė projekcija.

Izometrinėje projekcijoje x, y ir z ašys yra 120 laipsnių viena nuo kitos ir atrodo vienodai sutrumpintos. Papildomos informacijos apie izometrinę projekciją, taip pat reikalingas formules galima rasti Vikipedijos puslapyje šia tema.

1 žingsnis: Surinkite reikmenis

Arduino ir kabelis

„Arduino“yra magnetometro smegenys. Šiose instrukcijose aprašoma, kaip naudoti „Arduino Uno“arba „Arduino MKR1010“. Bet kuriuo atveju, norint prijungti jį prie kompiuterio, reikia kabelio.

1 variantas: „Arduino Uno“ir USB AB kabelis

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

2 variantas: „Arduino MKR1010“ir „microUSB“kabelis

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

TFT ekranas

TFT reiškia plonų plėvelių tranzistorius. Šiame 1,44 colių įstrižainės ekrane yra 128 x 128 pikselių. Jis yra mažas, ryškus ir spalvingas. Jis pridedamas prie pertraukimo plokštės. Tačiau antraštės kaiščiai yra atskirai, todėl turite juos lituoti. (Lituoklis ir lituoklis yra reikia.)

www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830

    Vaizdas
    Vaizdas
  • Analoginiai salės efekto jutikliai

Reikalingi trys „Hall“efekto jutikliai. Žemiau esanti nuoroda skirta „Allegro“dalies numeriui A1324LUA-T. Šio jutiklio 1 kaištis yra maitinimo įtampa, 2 kaištis yra įžemintas, o 3 kaištis yra išėjimas. Kiti „Hall“jutikliai taip pat turėtų veikti, tačiau įsitikinkite, kad jie yra analoginiai, o ne skaitmeniniai. Jei naudojate kitą jutiklį, patikrinkite kontaktą ir, jei reikia, sureguliuokite laidus. (Iš tikrųjų bandymams naudoju kitą tos pačios įmonės jutiklį. Tačiau tas, kurį naudoju, yra pasenęs, ir šis jutiklis yra jo pakeitimas.)

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Maža duonos lenta ir viela

www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929

Nuolatiniai magnetai testavimui

Šaldytuvo magnetai veiks gerai.

2 žingsnis: laidų prijungimas

Laidai
Laidai

Lituokite antraštes ekrane.

Vaizdas
Vaizdas

Padėkite jutiklius viename duonos lentos gale, o ekraną ir „Arduino“- kitame gale. Srovė „Arduino“ir ekrano laiduose sukuria magnetinius laukus, kurių nenorime, kad jutikliai skaitytų. Be to, galbūt norime jutiklius pastatyti šalia nuolatinių magnetų, o tai gali neigiamai paveikti srovę ekrano ir jutiklio laiduose. Dėl šių priežasčių mes norime, kad jutikliai būtų toli nuo ekrano ir „Arduino“. Taip pat dėl šių priežasčių šį magnetometrą reikia laikyti atokiau nuo labai stiprių magnetinių laukų.

Padėkite jutiklius statmenai vienas kitam, bet kuo arčiau vienas kito. Švelniai sulenkite jutiklius, kad jie būtų statmeni. Kiekvienas kiekvieno jutiklio kaištis turi būti atskiroje duonos lentos eilėje, kad jį būtų galima prijungti atskirai.

Vaizdas
Vaizdas

„MKR1010“ir „Uno“laidai šiek tiek skiriasi dėl dviejų priežasčių. Pirma, „Arduino“ir ekranas bendrauja SPI. Skirtingi „Arduino“modeliai turi skirtingus tam tikrų SPI linijų kaiščius. Antra, analoginiai „Uno“įėjimai gali priimti iki 5 V, o MKR1010 analoginiai įėjimai - tik iki 3,3 V. Rekomenduojama „Hall“efekto jutiklių maitinimo įtampa yra 5 V. Jutiklių išėjimai yra prijungti prie analoginių „Arduino“įėjimų, ir jie gali būti tokie dideli kaip maitinimo įtampa. „Uno“naudokite rekomenduojamą 5 V maitinimo šaltinį jutikliams. Jei naudojate MKR1010, naudokite 3,3 V, kad analoginis „Arduino“įėjimas niekada nematytų didesnės įtampos, nei gali atlaikyti.

Vadovaukitės toliau pateiktomis jūsų naudojamo „Arduino“schemomis ir instrukcijomis.

Laidai su „Arduino Uno“

Vaizdas
Vaizdas

Ekranas turi 11 kaiščių. Prijunkite juos prie „Arduino Uno“taip. (NC reiškia neprisijungus.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TKS → 10
  • RST → 9
  • D/C → 8
  • CCS → NC
  • Paprastas → NC

Prijunkite jutiklių „Vin“prie „Arduino“5 V įtampos. Prijunkite jutiklio įžeminimą prie „Arduino“įžeminimo. Prijunkite jutiklių išvestį prie „Arduino“analoginių įėjimų A1, A2 ir A3.

Vaizdas
Vaizdas

Laidai su „Arduino MKR1010“

Vaizdas
Vaizdas

Ekranas turi 11 kaiščių. Prijunkite juos prie „Arduino“taip. (NC reiškia neprisijungus.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TKS → 5
  • RST → 4
  • D/C → 3
  • CCS → NC
  • Paprastas → NC

Prijunkite jutiklių „Vin“prie „Arduino“Vcc. Šis kaištis yra 3.3V, o ne 5V. Prijunkite jutiklio įžeminimą prie „Arduino“įžeminimo. Prijunkite jutiklių išvestį prie „Arduino“analoginių įėjimų A1, A2 ir A3.

Vaizdas
Vaizdas

3 žingsnis: išbandykite ekraną

Pradėkime veikti TFT ekranas. Laimei, „Adafruit“turi keletą patogių bibliotekų ir puikią mokymo programą. Šios instrukcijos atidžiai seka vadovėlį, Atidarykite „Arduino“kūrimo aplinką. Eikite į Įrankiai → Tvarkyti bibliotekas. Įdiekite Adafruit_GFX, Adafruit_ZeroDMA ir Adafruit_ST7735 bibliotekas. Iš naujo paleiskite „Android“kūrimo aplinką.

Grafinis testas pateikiamas kartu su bibliotekomis. Atidarykite jį. Failas → Pavyzdžiai → Adafruit ST7735 ir ST7789 biblioteka → graphicstest. Norėdami pasirinkti 1,44 colio ekrano komentaro 95 eilutę ir 98 komentaro eilutę.

Originali versija:

94 // Naudokite šį inicializatorių, jei naudojate 1,8 colio TFT ekraną:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S mikroschema, juodas skirtukas 96 97 // ARBA naudokite šį inicializatorių (nekomentuokite), jei naudojate 1,44 TFT: 98 //tft.initR (INITR_144GREENTAB); // Init ST7735R lustas, žalias skirtukas

Tinkama 1,44 colio ekrano versija:

94 // Naudokite šį inicializatorių, jei naudojate 1,8 colio TFT ekraną:

95 //tft.initR (INIT_BLACKTAB); // Init ST7735S mikroschema, juodas skirtukas 96 97 // ARBA naudokite šį inicializatorių (nekomentuokite), jei naudojate 1,44 TFT: 98 tft.initR (INITR_144GREENTAB); // Init SST35R mikroschema, žalias skirtukas

Ekranas bendrauja naudodamas SPI, o skirtingo modelio „Arduinos“kai kurioms ryšio linijoms naudoja skirtingus kaiščius. Grafinis bandymo pavyzdys yra nustatytas dirbti su „Uno“kaiščiais. Jei naudojate MKR1010, pridėkite šias eilutes tarp 80 ir 81 eilučių.

MKR1010 pataisymai:

80

#define TFT_CS 5 #define TFT_RST 4 #define TFT_DC 3 #define TFT_MOSI 8 #define TFT_SCLK 9 Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); 81 plūdė p = 3,1415926;

Išsaugokite pakeistą grafinio testo pavyzdį. Prijunkite „Arduino“prie kompiuterio, jei to dar nepadarėte. Eikite į Įrankiai → Lenta ir Įrankiai → Prievadas, kad patikrintumėte, ar kompiuteris gali rasti „Arduino“. Eikite į Eskizas → Įkelti. Jei pavyzdys veikia, ekrane bus rodomos linijos, stačiakampiai, tekstas ir visa demonstracinė versija. „Adafruit“pamokoje pateikiama daugiau informacijos, jei reikia pašalinti trikčių šalinimo būdą.

4 žingsnis: magnetometro kodas

Atsisiųskite pridėtą kodą ir atidarykite jį „Arduino“kūrimo aplinkoje.

Ši programa naudoja šešias funkcijas:

Sąranka () inicijuoja ekraną

„Loop“() yra pagrindinė programos kilpa. Jis užtemdo ekraną, piešia ašis, skaito įvestis ir piešia magnetinio lauko vektorių vaizduojančią rodyklę. Jo atnaujinimo dažnis yra viena sekundė, kurį galima pakeisti pakeičiant 127 eilutę

DrawAxes3d () piešia ir žymi x, y ir z ašis

DrawArrow3d () naudoja x, y ir z įvestį nuo 0 iki 1023. Iš šių verčių apskaičiuoja rodyklės pabaigos taškus erdvėje. Toliau ji naudoja funkcijas isometricxx () ir isometricyy (), kad apskaičiuotų galutinius taškus ekrane. Galiausiai jis piešia rodyklę ir spausdina įtampą ekrano apačioje

Isometricxx () nustato izometrinės projekcijos x koordinatę. Jis paima taško x, y ir z koordinates ir grąžina atitinkamą x pikselių vietą ekrane

Isometricyy () nustato izometrinės projekcijos y koordinatę. Jis paima taško x, y ir z koordinates ir grąžina atitinkamą y pikselio vietą ekrane

Prieš paleisdami kodą, turime nurodyti, kuriuos kaiščius naudoti SPI ryšiui su ekranu, ir nurodyti jutiklių šaltinio įtampą. Jei naudojate MKR1010, pakomentuokite 92–96 ir 110 eilutes. Tada panaikinkite 85–89 ir 108. eilutes. Jei naudojate „Uno“, komentuokite 85–89 ir 108 eilutes.. Tada atmeskite 92–96 ir 110 eilutes.

Įkelkite kodą, Eskizas → Įkelti.

Turėtumėte matyti raudonas x, y ir z ašis. Žalia rodyklė su mėlynu apskritimu antgaliui žymi magnetinio lauko vektorių prie jutiklių. Įtampos rodmenys rodomi apatiniame kairiajame kampe. Priartinus magnetą prie jutiklių, įtampos rodmenys turėtų pasikeisti ir rodyklės dydis turėtų padidėti.

Vaizdas
Vaizdas

5 žingsnis: būsimas darbas

Būsimas darbas
Būsimas darbas

Kitas žingsnis būtų įrenginio kalibravimas. Jutiklių duomenų lape pateikiama informacija, kaip neapdorotas jutiklio įtampos vertes paversti magnetinio lauko stiprumu. Kalibravimą galima patikrinti lyginant su tikslesniu magnetometru.

Nuolatiniai magnetai sąveikauja su srove. Laidai šalia ekrano ir „Arduino“sukuria magnetinius laukus, kurie gali turėti įtakos jutiklių rodmenims. Be to, jei šis prietaisas naudojamas matuoti šalia stipraus nuolatinio magneto, bandomo prietaiso magnetinis laukas sąveikaus su juo, sukels triukšmą ir galbūt sugadins „Arduino“bei ekraną. Ekranas gali padaryti šį magnetometrą tvirtesnį. „Arduino“gali atlaikyti didesnius magnetinius laukus, jei yra ekranuotas metalinėje dėžutėje, ir mažiau triukšmo, jei ekranuoti kabeliai prijungs jutiklius, o ne plikus laidus.

Magnetinis laukas yra padėties funkcija, todėl kiekviename erdvės taške jis yra skirtingas. Šiame prietaise naudojami trys jutikliai, vienas matuoja magnetinio lauko x, y ir z komponentą tam tikrame taške. Jutikliai yra arti vienas kito, bet ne viename taške, ir tai riboja magnetometro skiriamąją gebą. Būtų šaunu išsaugoti magnetinio lauko rodmenis skirtinguose taškuose, tada rodyti juos kaip rodyklių masyvą atitinkamose vietose. Tačiau tai yra kitos dienos projektas.

Nuorodos

Informacija apie „Adafruit Arduino“grafikos bibliotekas

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Magnetinio lauko vizualizacija

https://www.falstad.com/vector3dm/

Informacija apie „Hall“efektą ir „Hall“efekto jutiklius

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

Informacija apie izometrinę projekciją

  • https://en.wikipedia.org/wiki/3D_projection
  • https://en.wikipedia.org/wiki/Isometric_projection

Rekomenduojamas: