Kazalo:

Arduino magnetometer: 5 korakov (s slikami)
Arduino magnetometer: 5 korakov (s slikami)

Video: Arduino magnetometer: 5 korakov (s slikami)

Video: Arduino magnetometer: 5 korakov (s slikami)
Video: GY-271. Цифровой магнитометр и Ардуино. Делаем компас 2024, September
Anonim
Arduino magnetometer
Arduino magnetometer

Kaj gradimo?

Človek ne more zaznati magnetnih polj, vendar uporabljamo naprave, ki se ves čas opirajo na magnete. Motorji, kompasi, senzorji vrtenja in vetrne turbine na primer za delovanje potrebujejo magnete. Ta vadnica opisuje, kako zgraditi magnetometer na osnovi Arduina, ki zaznava magnetno polje s tremi senzorji Hall učinka. Vektor magnetnega polja na določeni lokaciji je prikazan na majhnem zaslonu z uporabo izometrične projekcije.

Kaj je Arduino?

Arduino je majhen odprtokodni uporabniku prijazen mikrokrmilnik. Ima digitalne vhodne in izhodne zatiče. Ima tudi analogne vhodne zatiče, ki so uporabni za branje vhodov s senzorjev. Na voljo so različni modeli Arduino. Ta vadnica opisuje, kako uporabljati Arduino Uno ali Arduino MKR1010. Lahko pa uporabite tudi druge modele.

Preden začnete s to vadnico, prenesite razvojno okolje Arduino in vse knjižnice, potrebne za vaš model. Razvojno okolje je na voljo na naslovu https://www.arduino.cc/en/main/software, navodila za namestitev pa na naslovu

Kaj je magnetno polje?

Trajni magneti delujejo na druge trajne magnete. Tokovne žice delujejo na druge žice, ki vodijo tok. Trajni magneti in žice za prenos toka delujejo tudi drug na drugega. Ta sila na enoto preskusnega toka je magnetno polje.

Če merimo prostornino predmeta, dobimo eno skalarno število. Magnetizem pa opisuje vektorsko polje, bolj zapletena količina. Prvič, spreminja se glede na položaj v celotnem prostoru. Na primer, magnetno polje en centimeter od stalnega magneta bo verjetno večje od magnetnega polja deset centimetrov stran.

Nato je magnetno polje na vsaki točki vesolja predstavljeno z vektorjem. Velikost vektorja predstavlja jakost magnetnega polja. Smer je pravokotna tako na smer sile kot na smer preskusnega toka.

Magnetno polje na enem mestu si lahko predstavljamo kot puščico. Magnetno polje v vesolju lahko slikamo s puščico na različnih lokacijah, po možnosti različnih velikosti in usmerjenih v različne smeri. Lepa vizualizacija je na voljo na https://www.falstad.com/vector3dm/. Magnetometer, ki ga gradimo, prikazuje magnetno polje na mestu senzorjev kot puščico na zaslonu.

Kaj je Hall -ov senzor in kako deluje?

Hall -ov senzor je majhna, poceni naprava, ki meri jakost magnetnega polja vzdolž določene smeri. Narejen je iz kosa polprevodnika, dopiranega z odvečnimi naboji. Izhod nekaterih senzorjev Hall učinka je analogna napetost. Drugi Hallovi senzorji imajo vgrajen primerjalnik in proizvajajo digitalni izhod. Drugi senzorji Hall učinka so vgrajeni v večje instrumente, ki merijo pretok, hitrost vrtenja ali druge količine.

Fizika za Hallovim učinkom je povzeta z enačbo Lorentzove sile. Ta enačba opisuje silo na premikajoči se naboj zaradi zunanjega električnega in magnetnega polja.

Slika
Slika

Spodnja slika prikazuje Hallov učinek. Recimo, da želimo izmeriti jakost magnetnega polja v smeri modre puščice. Kot je prikazano na levem delu slike, skozi kos polprevodnika pravokotno na smer polja, ki ga merimo, dovajamo tok. Tok je tok nabojev, zato se naboj v polprevodniku premika z določeno hitrostjo. Ta naboj bo čutil silo zaradi zunanjega polja, kot je prikazano v srednjem delu slike. Naboji se zaradi sile premikajo in nabirajo na robovih polprevodnika. Naboji se kopičijo, dokler sila zaradi nakopičenih nabojev ne uravnoteži sile zaradi zunanjega magnetnega polja. Napetost na polprevodniku lahko izmerimo, kot je prikazano na desnem delu slike. Izmerjena napetost je sorazmerna z jakostjo magnetnega polja in je v smeri, pravokotni na tok in smer magnetnega polja.

Slika
Slika

Kaj je izometrična projekcija?

Na vsaki točki vesolja je magnetno polje opisano s tridimenzionalnim vektorjem. Vendar je naš zaslon dvodimenzionalen. Tridimenzionalni vektor lahko projiciramo v dvodimenzionalno ravnino, tako da ga lahko narišemo na zaslon. To lahko storite na več načinov, na primer izometrično, ortografsko ali poševno projekcijo.

V izometrični projekciji so osi x, y in z 120 stopinj narazen in izgledajo enako skrajšane. Dodatne informacije o izometrični projekciji in potrebne formule najdete na strani Wikipedije na to temo.

Korak: Zberite zaloge

Arduino in kabel

Arduino so možgani magnetometra. Ta navodila opisujejo, kako uporabljati Arduino Uno ali Arduino MKR1010. V vsakem primeru je za povezavo z računalnikom potreben kabel.

Možnost 1: Arduino Uno in USB AB kabel

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

Možnost 2: Arduino MKR1010 in kabel microUSB

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 zaslon

TFT pomeni Thin Film Transistor. Ta 1,44 -palčni zaslon vsebuje 128 x 128 slikovnih pik. Majhen je, svetel in barvit. Priložen je na odklopno ploščo. Vendar pa se zatiči glave ločijo, zato ju morate spajkati. (Spajkalnik in spajkalnik sta potrebno.)

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

    Slika
    Slika
  • Analogni senzorji Hallovih učinkov

Potrebni so trije senzorji Hall učinka. Spodnja povezava je za številko dela Allegro A1324LUA-T. Za ta senzor je pin 1 napajalna napetost, pin 2 je ozemljen, pin 3 pa izhod. Morali bi delovati tudi drugi Hallovi senzorji, vendar se prepričajte, da so analogni in ne digitalni. Če uporabljate drug senzor, preverite pinout in po potrebi prilagodite ožičenje. (Pravzaprav sem za namene testiranja uporabil drug senzor istega podjetja. Vendar pa je tisti, ki sem ga uporabil, zastarel in ta senzor je njegova zamenjava.)

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

Majhna plošča in žica

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

Trajni magneti za testiranje

Magneti za hladilnik bodo dobro delovali.

2. korak: Ožičenje

Ožičenje
Ožičenje

Spojite glave na zaslonu.

Slika
Slika

Senzorje postavite na en konec mize, zaslon in Arduino pa na nasprotni konec. Tok v žicah v Arduinu in na zaslonu ustvarja magnetna polja, ki jih senzorji ne želijo prebrati. Poleg tega bi lahko senzorje postavili blizu trajnih magnetov, kar bi lahko negativno vplivalo na tok v žicah zaslona in senzorja. Iz teh razlogov želimo senzorje daleč od zaslona in Arduina. Tudi iz teh razlogov je treba ta magnetometer hraniti ločeno od zelo močnih magnetnih polj.

Senzorje postavite pravokotno drug na drugega, vendar čim bližje drug drugemu. Senzorje nežno upognite, da bodo pravokotni. Vsak zatič vsakega senzorja mora biti v ločeni vrstici mize, da ga je mogoče ločeno priključiti.

Slika
Slika

Ožičenje se med MKR1010 in Uno nekoliko razlikuje iz dveh razlogov. Prvič, Arduino in zaslon komunicirata s SPI. Različni modeli Arduino imajo različne namenske zatiče za določene linije SPI. Drugič, analogni vhodi Uno lahko sprejmejo do 5 V, medtem ko analogni vhodi MKR1010 lahko sprejmejo le do 3,3 V. Priporočena napajalna napetost za Hall -ove senzorje je 5 V. Izhodi senzorjev so priključeni na analogne vhode Arduino, te pa so lahko tako velike kot napajalne napetosti. Za Uno uporabite priporočeno napajanje 5 V za senzorje. Za MKR1010 uporabite 3,3 V, tako da analogni vhod Arduina nikoli ne vidi napetosti, ki je večja, kot jo lahko prenese.

Sledite spodnjim diagramom in navodilom za Arduino, ki ga uporabljate.

Ožičenje z Arduino Uno

Slika
Slika

Zaslon ima 11 zatičev. Povežite jih z Arduino Uno na naslednji način. (NC pomeni, da ni povezan.)

  • Vin → 5V
  • 3,3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TCS → 10
  • RST → 9
  • D/C → 8
  • CCS → NC
  • Lite → NC

Priključite Vin senzorjev na 5V Arduina. Ozemljitev senzorja priključite na ozemljitev Arduina. Izhod senzorjev priključite na analogne vhode A1, A2 in A3 Arduina.

Slika
Slika

Ožičenje z Arduino MKR1010

Slika
Slika

Zaslon ima 11 zatičev. Povežite jih z Arduinom na naslednji način. (NC pomeni, da ni povezan.)

  • Vin → 5V
  • 3,3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TCS → 5
  • RST → 4
  • D/C → 3
  • CCS → NC
  • Lite → NC

Priključite Vin senzorjev na Vcc Arduina. Ta pin je pri 3.3V, ne 5V. Ozemljitev senzorja priključite na ozemljitev Arduina. Izhod senzorjev priključite na analogne vhode A1, A2 in A3 Arduina.

Slika
Slika

3. korak: Preizkusite zaslon

Začnimo delovati z zaslonom TFT. Na srečo ima Adafruit nekaj uporabnikom prijaznih knjižnic in odlično vadbo. Ta navodila natančno sledijo vadnici, Odprite razvojno okolje Arduino. Pojdite v Orodja → Upravljanje knjižnic. Namestite knjižnice Adafruit_GFX, Adafruit_ZeroDMA in Adafruit_ST7735. Znova zaženite razvojno okolje Android.

Primer grafičnega testa je vključen v knjižnice. Odpri. Datoteka → Primeri → Knjižnica Adafruit ST7735 in ST7789 → graphicstest. Če želite izbrati 1,44 -palčni zaslon za komentar, vrstico 95 in vrstico za komentarje 98.

Prvotna različica:

94 // Uporabite ta inicializator, če uporabljate 1,8 -palčni zaslon TFT:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S čip, črni zavihek 96 97 // ALI uporabite ta inicializator (razkomentiraj), če uporabljate 1,44 TFT: 98 //tft.initR(INITR_144GREENTAB); // čip Init ST7735R, zeleni zavihek

Pravilna različica za 1,44 -palčni zaslon:

94 // Uporabite ta inicializator, če uporabljate 1,8 -palčni zaslon TFT:

95 //tft.initR(INIT_BLACKTAB); // čip Init ST7735S, črni zavihek 96 97 // ALI uporabite ta inicializator (razkomentiraj), če uporabljate 1,44 TFT: 98 tft.initR (INITR_144GREENTAB); // čip Init SST35R, zeleni zavihek

Zaslon komunicira s SPI, različni modeli Arduinos pa uporabljajo različne namenske zatiče za nekatere komunikacijske linije. Primer grafičnega testa je nastavljen za delo z zatiči Uno. Če uporabljate MKR1010, med vrstice 80 in 81 dodajte naslednje vrstice.

Popravki za 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_SCRK), TFT_SCLK; 81 plovec p = 3,1415926;

Shranite primer spremenjenega grafičnega testa. Arduino priključite v računalnik, če tega še niste storili. Pojdite v Orodja → Kartica in orodja → Vrata, da preverite, ali računalnik lahko najde Arduino. Pojdite na Skica → Naloži. Če primer deluje, se na zaslonu prikažejo črte, pravokotniki, besedilo in celotna predstavitev. Vadnica Adafruit ponuja več podrobnosti, če je potrebno odpravljanje težav.

4. korak: Koda magnetometra

Prenesite priloženo kodo in jo odprite v razvojnem okolju Arduino.

Ta program uporablja šest funkcij:

Setup () inicializira prikaz

Loop () vsebuje glavno zanko programa. Zatemni zaslon, nariše osi, prebere vnose in nariše puščico, ki predstavlja vektor magnetnega polja. Ima hitrost osveževanja ene sekunde, ki jo lahko spremenite s spremembo vrstice 127

DrawAxes3d () nariše in označi osi x, y in z

DrawArrow3d () sprejme vnos x, y in z v razponu od 0 do 1023. Iz teh vrednosti izračuna končne točke puščice v prostoru. Nato za izračun končnih točk na zaslonu uporabi funkciji isometricxx () in isometricyy (). Nazadnje nariše puščico in natisne napetosti na dnu zaslona

Isometricxx () najde koordinato x izometrične projekcije. Vzame koordinate x, y in z točke in vrne ustrezno mesto x slikovnih pik na zaslonu

Isometricyy () najde koordinato y izometrične projekcije. Vzame koordinate x, y in z točke in vrne ustrezno mesto slikovnih pik y na zaslonu

Pred zagonom kode moramo določiti, katere nožice uporabiti za komunikacijo SPI z zaslonom, določiti pa moramo tudi izvorno napetost senzorjev. Če uporabljate MKR1010, komentirajte vrstice 92-96 in vrstico 110. Nato razkomentirajte vrstice 85-89 in vrstico 108. Če uporabljate Uno, komentirajte vrstice 85-89 in 108.. Nato odkomentirajte vrstici 92-96 in 110.

Naložite kodo, Skica → Naloži.

Osi x, y in z bi morali videti rdeče. Zelena puščica z modrim krogom za konico predstavlja vektor magnetnega polja pri senzorjih. Odčitki napetosti so prikazani v spodnjem levem kotu. Ko približate magnet senzorjem, bi se morali odčitki napetosti spremeniti, velikost puščice pa bi morala naraščati.

Slika
Slika

5. korak: Prihodnje delo

Prihodnje delo
Prihodnje delo

Naslednji korak bi bil umerjanje naprave. Podatkovni list senzorja vsebuje informacije o tem, kako pretvoriti vrednosti surove napetosti senzorja v jakost magnetnega polja. Umerjanje je mogoče preveriti s primerjavo z natančnejšim magnetometrom.

Trajni magneti delujejo z žicami za prenos toka. Žice v bližini zaslona in v Arduinu ustvarjajo magnetna polja, ki lahko vplivajo na odčitke senzorjev. Poleg tega, če se ta naprava uporablja za merjenje v bližini močnega trajnega magneta, bo magnetno polje iz preskušane naprave medsebojno delovalo, vnašalo hrup in morda poškodovalo Arduino in zaslon. Zaščita bi lahko naredila ta magnetometer robustnejši. Arduino lahko prenese večja magnetna polja, če je zaščiten v kovinski škatli, manj hrupa pa bo nastalo, če oklopljeni kabli povežejo senzorje namesto golih žic.

Magnetno polje je funkcija položaja, zato se v vsaki točki prostora razlikuje. Ta naprava uporablja tri senzorje, enega za merjenje x, y in z komponente magnetnega polja na točki. Tipala so blizu drug drugemu, vendar ne na eni točki, kar omejuje ločljivost magnetometra. Odlično bi bilo shraniti odčitke magnetnega polja na različnih točkah in jih nato prikazati v obliki puščic na ustreznih mestih. Vendar je to projekt za drug dan.

Reference

Informacije o grafičnih knjižnicah Adafruit Arduino

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

Vizualizacija magnetnega polja

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

Informacije o Hallovih učinkih in Hall -ovih senzorjih

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

Podatki o izometrični projekciji

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

Priporočena: