Satura rādītājs:

Arduino magnetometrs: 5 soļi (ar attēliem)
Arduino magnetometrs: 5 soļi (ar attēliem)

Video: Arduino magnetometrs: 5 soļi (ar attēliem)

Video: Arduino magnetometrs: 5 soļi (ar attēliem)
Video: Pakistan education system what a beautiful environment WOW🤣🤣 2024, Septembris
Anonim
Arduino magnetometrs
Arduino magnetometrs

Ko mēs būvējam?

Cilvēki nevar noteikt magnētiskos laukus, bet mēs izmantojam ierīces, kas visu laiku paļaujas uz magnētiem. Piemēram, motoru, kompasu, rotācijas sensoru un vēja turbīnu darbībai nepieciešami magnēti. Šajā apmācībā ir aprakstīts, kā izveidot uz Arduino balstītu magnetometru, kas uztver magnētisko lauku, izmantojot trīs Hall efekta sensorus. Magnētiskā lauka vektors noteiktā vietā tiek parādīts nelielā ekrānā, izmantojot izometrisko projekciju.

Kas ir Arduino?

Arduino ir mazs atvērtā pirmkoda lietotājam draudzīgs mikrokontrolleris. Tam ir digitālās ieejas un izejas tapas. Tam ir arī analogās ieejas tapas, kas noder sensoru ievades nolasīšanai. Ir pieejami dažādi Arduino modeļi. Šajā apmācībā ir aprakstīts, kā lietot Arduino Uno vai Arduino MKR1010. Tomēr var izmantot arī citus modeļus.

Pirms sākat šo apmācību, lejupielādējiet Arduino izstrādes vidi, kā arī visas jūsu konkrētajam modelim nepieciešamās bibliotēkas. Izstrādes vide ir pieejama vietnē https://www.arduino.cc/en/main/software, un instalēšanas instrukcijas ir pieejamas vietnē

Kas ir magnētiskais lauks?

Pastāvīgie magnēti iedarbojas uz citiem pastāvīgajiem magnētiem. Strāvas vadi iedarbina spēkus uz citiem strāvas vadiem. Pastāvīgie magnēti un strāvas vadi iedarbojas arī viens pret otru. Šis spēks uz testa strāvas vienību ir magnētiskais lauks.

Ja mēs izmērām objekta tilpumu, mēs iegūstam vienu skalāru skaitli. Tomēr magnētismu raksturo vektoru lauks, sarežģītāks daudzums. Pirmkārt, tas mainās atkarībā no atrašanās vietas visā telpā. Piemēram, magnētiskais lauks vienu centimetru no pastāvīgā magnēta, visticamāk, būs lielāks nekā magnētiskais lauks desmit centimetru attālumā.

Tālāk magnētisko lauku katrā telpas punktā attēlo vektors. Vektora lielums atspoguļo magnētiskā lauka stiprumu. Virziens ir perpendikulārs gan spēka virzienam, gan testa strāvas virzienam.

Mēs varam attēlot magnētisko lauku vienā vietā kā bultiņu. Mēs varam attēlot magnētisko lauku visā telpā ar bultu masīvu dažādās vietās, iespējams, dažāda lieluma un vērstus dažādos virzienos. Jauka vizualizācija ir pieejama vietnē https://www.falstad.com/vector3dm/. Mūsu veidotais magnetometrs parāda magnētisko lauku sensoru vietā kā bultiņa displejā.

Kas ir Halles efekta sensors un kā tas darbojas?

Halles efekta sensors ir maza, lēta ierīce, kas mēra magnētiskā lauka stiprumu noteiktā virzienā. Tas ir izgatavots no pusvadītāju gabala, kas leģēts ar pārmērīgiem lādiņiem. Dažu Hall efekta sensoru izeja ir analogs spriegums. Citiem Hall efekta sensoriem ir integrēts salīdzinātājs, un tie rada digitālu izeju. Citi Hall efekta sensori ir integrēti lielākos instrumentos, kas mēra plūsmas ātrumu, rotācijas ātrumu vai citus daudzumus.

Halles efekta fiziku apkopo Lorenca spēka vienādojums. Šis vienādojums apraksta kustīgā lādiņa spēku ārējā elektriskā un magnētiskā lauka ietekmē.

Attēls
Attēls

Zemāk redzamais attēls ilustrē Halles efektu. Pieņemsim, ka vēlamies izmērīt magnētiskā lauka stiprumu zilās bultiņas virzienā. Kā parādīts attēla kreisajā daļā, mēs pielietojam strāvu caur pusvadītāja gabalu, kas ir perpendikulārs mērāmā lauka virzienam. Strāva ir lādiņu plūsma, tāpēc lādiņš pusvadītājā pārvietojas ar zināmu ātrumu. Šis lādiņš jutīs spēku ārējā lauka ietekmē, kā parādīts attēla vidusdaļā. Spēka ietekmē lādiņi pārvietosies un uzkrāsies pusvadītāja malās. Lādiņi uzkrājas, līdz uzkrāto lādiņu radītais spēks līdzsvaro ārējā magnētiskā lauka radīto spēku. Mēs varam izmērīt spriegumu pusvadītājā, kā parādīts attēla labajā daļā. Izmērītais spriegums ir proporcionāls magnētiskā lauka stiprumam, un tas ir virzienā, kas ir perpendikulārs strāvai un magnētiskā lauka virzienam.

Attēls
Attēls

Kas ir izometriskā projekcija?

Katrā telpas punktā magnētisko lauku raksturo trīsdimensiju vektors. Tomēr mūsu displejs ir divdimensiju. Mēs varam projicēt trīsdimensiju vektoru divdimensiju plaknē, lai mēs varētu to uzzīmēt uz ekrāna. Ir vairāki veidi, kā to izdarīt, piemēram, izometriska projekcija, ortogrāfiska projekcija vai slīpa projekcija.

Izometriskajā projekcijā x, y un z asis atrodas 120 grādu attālumā viena no otras, un tās izskatās vienādi saīsinātas. Papildu informāciju par izometrisko projekciju, kā arī nepieciešamās formulas var atrast Vikipēdijas lapā par šo tēmu.

1. darbība: apkopojiet materiālus

Arduino un kabelis

Arduino ir magnetometra smadzenes. Šajos norādījumos ir aprakstīts, kā lietot Arduino Uno vai Arduino MKR1010. Jebkurā gadījumā, lai to savienotu ar datoru, ir nepieciešams kabelis.

1. iespēja: Arduino Uno un 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. iespēja: Arduino MKR1010 un 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 displejs

TFT nozīmē plānas plēves tranzistors. Šis 1,44 collu displejs satur 128 x 128 pikseļus. Tas ir mazs, spilgts un krāsains. Tas ir piestiprināts pie sadalīšanas paneļa. Tomēr galvenes tapas ir atsevišķi, tāpēc jums tās ir jālodē. (Lodēt un lodāmurs ir nepieciešams.)

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

    Attēls
    Attēls
  • Analogie zāles efekta sensori

Nepieciešami trīs Halles efekta sensori. Zemāk esošā saite attiecas uz Allegro daļas numuru A1324LUA-T. Šim sensoram 1. tapa ir barošanas spriegums, 2. tapa ir iezemēta, un 3. tapa ir izeja. Arī citiem Hall sensoriem vajadzētu darboties, taču pārliecinieties, vai tie ir analogie, nevis digitālie. Ja izmantojat citu sensoru, pārbaudiet kontaktu un, ja nepieciešams, noregulējiet vadu. (Es faktiski testēšanai izmantoju citu sensoru no tā paša uzņēmuma. Tomēr tas, ko izmantoju, ir novecojis, un šis sensors ir tā nomaiņa.)

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

Mazs maizes dēlis un stieple

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

Pastāvīgie magnēti testēšanai

Ledusskapja magnēti darbosies labi.

2. solis: elektroinstalācija

Elektroinstalācija
Elektroinstalācija

Lodējiet galvenes displejā.

Attēls
Attēls

Novietojiet sensorus maizes dēļa vienā galā un displeju un Arduino pretējā galā. Strāva vados Arduino un displejā rada magnētiskos laukus, kurus mēs nevēlamies, lai sensori nolasītu. Turklāt, iespējams, vēlēsimies novietot sensorus pastāvīgo magnētu tuvumā, kas var nelabvēlīgi ietekmēt strāvu displeja un sensora vados. Šo iemeslu dēļ mēs vēlamies, lai sensori būtu tālu no displeja un Arduino. Arī šo iemeslu dēļ šis magnetometrs jāglabā prom no ļoti spēcīgiem magnētiskajiem laukiem.

Novietojiet sensorus perpendikulāri viens otram, bet pēc iespējas tuvāk viens otram. Viegli salieciet sensorus, lai tie būtu perpendikulāri. Katram sensora tapam jābūt atsevišķā maizes dēļa rindā, lai to varētu atsevišķi savienot.

Attēls
Attēls

Elektroinstalācija nedaudz atšķiras starp MKR1010 un Uno divu iemeslu dēļ. Pirmkārt, Arduino un displejs sazinās, izmantojot SPI. Dažādiem Arduino modeļiem ir atšķirīgas tapas noteiktām SPI līnijām. Otrkārt, Uno analogās ieejas var pieņemt līdz 5 V, savukārt MKR1010 analogās ieejas var pieņemt tikai līdz 3,3 V. Ieteicamais Hall efekta sensoru barošanas spriegums ir 5 V. Sensora izejas ir savienotas ar Arduino analogo ieeju, un tie var būt tik lieli kā barošanas spriegumi. Uno ierīcēm izmantojiet ieteicamo 5 V barošanu sensoriem. Lai izmantotu MKR1010, izmantojiet 3,3 V, lai Arduino analogā ieeja nekad neredzētu spriegumu, kas ir lielāks nekā tas spēj izturēt.

Izpildiet tālāk norādītās diagrammas un norādījumus par jūsu izmantoto Arduino.

Elektroinstalācija ar Arduino Uno

Attēls
Attēls

Displejam ir 11 tapas. Savienojiet tos ar Arduino Uno šādi. (NC nozīmē, ka nav pievienots.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TKS → 10
  • RST → 9
  • D/C → 8
  • CCS → NC
  • Vienkāršs → NC

Savienojiet sensoru Vin ar Arduino 5V. Savienojiet sensora zemi ar Arduino zemi. Savienojiet sensoru izeju ar Arduino analogo ieeju A1, A2 un A3.

Attēls
Attēls

Elektroinstalācija ar Arduino MKR1010

Attēls
Attēls

Displejam ir 11 tapas. Savienojiet tos ar Arduino šādi. (NC nozīmē, ka nav pievienots.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TKS → 5
  • RST → 4
  • D/C → 3
  • CCS → NC
  • Vienkāršs → NC

Savienojiet sensoru Vinu ar Arduino Vcc. Šī tapa ir pie 3.3V, nevis 5V. Savienojiet sensora zemi ar Arduino zemi. Savienojiet sensoru izeju ar Arduino analogo ieeju A1, A2 un A3.

Attēls
Attēls

3. darbība: pārbaudiet displeju

Ļaujiet TFT displejam darboties. Par laimi, Adafruit ir dažas lietotājam draudzīgas bibliotēkas un lieliska apmācība. Šie norādījumi rūpīgi seko apmācībai, Atveriet Arduino izstrādes vidi. Atveriet Rīki → Pārvaldīt bibliotēkas. Instalējiet bibliotēkas Adafruit_GFX, Adafruit_ZeroDMA un Adafruit_ST7735. Restartējiet Android izstrādes vidi.

Grafiskā testa piemērs ir iekļauts bibliotēkās. Atver to. Fails → Piemēri → Adafruit ST7735 un ST7789 bibliotēka → graphicstest. Lai izvēlētos 1,44 collu displeja komentāru 95. rindu un 98.

Oriģinālā versija:

94 // Izmantojiet šo inicializētāju, ja izmantojat 1,8 collu TFT ekrānu:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S mikroshēma, melna cilne 96 97 // VAI izmantojiet šo inicializatoru (komentārs), ja izmantojat 1,44 collu TFT: 98 //tft.initR (INITR_144GREENTAB); // Init ST7735R mikroshēma, zaļa cilne

Pareiza versija 1,44 collu displejam:

94 // Izmantojiet šo inicializētāju, ja izmantojat 1,8 collu TFT ekrānu:

95 //tft.initR (INIT_BLACKTAB); // Init ST7735S mikroshēma, melna cilne 96 97 // VAI izmantojiet šo inicializētāju (bez komentāriem), ja izmantojat 1,44 collu TFT: 98 tft.initR (INITR_144GREENTAB); // Init SST35R mikroshēma, zaļa cilne

Displejs sazinās, izmantojot SPI, un dažādi Arduinos modeļi dažām sakaru līnijām izmanto dažādas speciālas tapas. Grafiskā testa piemērs ir iestatīts darbam ar Uno tapām. Ja izmantojat MKR1010, pievienojiet šādas rindiņas starp 80. un 81. rindu.

Labojumi MKR1010:

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 pludiņš p = 3,1415926;

Saglabājiet modificētā grafiskā testa piemēru. Pievienojiet Arduino datoram, ja vēl neesat to izdarījis. Atveriet Rīki → Padome un Rīki → Port, lai pārbaudītu, vai dators var atrast Arduino. Dodieties uz Skice → Augšupielādēt. Ja piemērs darbojas, displejā būs redzamas līnijas, taisnstūri, teksts un visa demonstrācija. Adafruit apmācība sniedz sīkāku informāciju, ja ir nepieciešama problēmu novēršana.

4. solis: magnetometra kods

Lejupielādējiet pievienoto kodu un atveriet to Arduino izstrādes vidē.

Šī programma izmanto sešas funkcijas:

Iestatīšana () inicializē displeju

Loop () satur programmas galveno cilpu. Tas aptumšo ekrānu, uzzīmē asis, nolasa ievades datus un uzzīmē bultiņu, kas attēlo magnētiskā lauka vektoru. Tā atsvaidzes intensitāte ir viena sekunde, ko var mainīt, mainot 127. rindu

DrawAxes3d () zīmē un apzīmē x, y un z asis

DrawArrow3d () ievada x, y un z ievadi diapazonā no 0 līdz 1023. No šīm vērtībām tā aprēķina bultiņas beigu punktus telpā. Tālāk tā izmanto funkcijas isometricxx () un isometricyy (), lai aprēķinātu ekrāna beigu punktus. Visbeidzot, tas uzzīmē bultiņu un izdrukā spriegumus ekrāna apakšā

Isometricxx () atrod izometriskās projekcijas x koordinātu. Tas ņem punkta x, y un z koordinātas un atgriež atbilstošo x pikseļa atrašanās vietu ekrānā

Isometricyy () atrod izometriskās projekcijas y koordinātu. Tas ņem punkta x, y un z koordinātas un atgriež atbilstošo y pikseļa atrašanās vietu ekrānā

Pirms koda palaišanas mums jānorāda, kuras tapas izmantot SPI komunikācijai ar displeju, un jānorāda sensoru avota spriegums. Ja izmantojat MKR1010, komentējiet 92.-96. Rindu, kā arī 110. rindiņu. Pēc tam atceliet 85.-89. Rindu, kā arī 108. rindiņu. Ja izmantojat Uno, komentējiet 85.-89. Rindu, kā arī 108. rindiņu.. Pēc tam atceliet 92. – 96. Rindu, kā arī 110. rindu.

Augšupielādējiet kodu, Skice → Augšupielādēt.

Jums vajadzētu redzēt x, y un z asis sarkanā krāsā. Zaļa bultiņa ar zilu apli uzgalim attēlo magnētiskā lauka vektoru pie sensoriem. Sprieguma rādījumi tiek parādīti apakšējā kreisajā stūrī. Pievēršot magnētu tuvāk sensoriem, vajadzētu mainīties sprieguma rādījumiem un palielināties bultiņas izmēram.

Attēls
Attēls

5. solis. Nākotnes darbs

Nākotnes Darbs
Nākotnes Darbs

Nākamais solis būtu ierīces kalibrēšana. Sensora datu lapa sniedz informāciju par to, kā pārveidot sensora sprieguma vērtības magnētiskā lauka stiprumā. Kalibrēšanu var pārbaudīt, salīdzinot ar precīzāku magnetometru.

Pastāvīgie magnēti mijiedarbojas ar strāvas vadiem. Vadi displeja tuvumā un Arduino rada magnētiskos laukus, kas var ietekmēt sensora rādījumus. Turklāt, ja šo ierīci izmanto mērīšanai spēcīga pastāvīgā magnēta tuvumā, pārbaudāmās ierīces magnētiskais lauks mijiedarbosies ar Arduino un displeju, radīs troksni un, iespējams, sabojās. Aizsardzība varētu padarīt šo magnetometru izturīgāku. Arduino var izturēt lielākus magnētiskos laukus, ja tas ir ekranēts metāla kastē, un mazāk trokšņa tiks radīts, ja ekranēti kabeļi savienos sensorus, nevis tukšus vadus.

Magnētiskais lauks ir stāvokļa funkcija, tāpēc katrā telpas punktā tas ir atšķirīgs. Šī ierīce izmanto trīs sensorus, vienu, lai izmērītu magnētiskā lauka x, y un z komponentu kādā punktā. Sensori atrodas tuvu viens otram, bet ne vienā punktā, un tas ierobežo magnetometra izšķirtspēju. Būtu forši saglabāt magnētiskā lauka rādījumus dažādos punktos, pēc tam parādīt tos kā bultu masīvu attiecīgajās vietās. Tomēr tas ir projekts citai dienai.

Atsauces

Informācija par Adafruit Arduino grafikas bibliotēkām

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

Magnētiskā lauka vizualizācija

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

Informācija par Halles efektu un Halles efekta sensoriem

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

Informācija par izometrisko projekciju

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

Ieteicams: