Sadržaj:

Arduino magnetometar: 5 koraka (sa slikama)
Arduino magnetometar: 5 koraka (sa slikama)

Video: Arduino magnetometar: 5 koraka (sa slikama)

Video: Arduino magnetometar: 5 koraka (sa slikama)
Video: ПЕРВАЯ СХЕМА НА АРДУИНО [Уроки Arduino #4] 2024, Novembar
Anonim
Arduino magnetometar
Arduino magnetometar

Šta gradimo?

Ljudi ne mogu otkriti magnetska polja, ali mi koristimo uređaje koji se cijelo vrijeme oslanjaju na magnete. Na primjer, motori, kompasi, senzori rotacije i vjetroturbine zahtijevaju magnete za rad. Ovaj vodič opisuje kako izgraditi magnetometar zasnovan na Arduinu koji osjeća magnetsko polje pomoću tri senzora Hall efekta. Vektor magnetskog polja na određenoj lokaciji prikazuje se na malom ekranu pomoću izometrijske projekcije.

Šta je Arduino?

Arduino je mali open-source user-friendly mikrokontroler. Ima digitalne ulazne i izlazne pinove. Takođe ima analogne ulazne pinove, koji su korisni za čitanje ulaza sa senzora. Dostupni su različiti Arduino modeli. Ovaj vodič opisuje kako koristiti Arduino Uno ili Arduino MKR1010. Međutim, mogu se koristiti i drugi modeli.

Prije nego započnete ovaj vodič, preuzmite Arduino razvojno okruženje, kao i sve biblioteke potrebne za vaš određeni model. Razvojno okruženje dostupno je na https://www.arduino.cc/en/main/software, a upute za instalaciju dostupne su na

Šta je magnetno polje?

Trajni magneti djeluju na druge trajne magnete. Žice za nošenje struje djeluju na druge žice za nošenje struje. Trajni magneti i žice za nošenje struje također djeluju jedno na drugo. Ova sila po jedinici ispitne struje je magnetsko polje.

Ako mjerimo volumen objekta, dobivamo jedan skalarni broj. Međutim, magnetizam se opisuje vektorskim poljem, složenijom veličinom. Prvo, varira ovisno o položaju u čitavom prostoru. Na primjer, magnetsko polje udaljeno jedan centimetar od stalnog magneta vjerojatno će biti veće od magnetskog polja udaljenog deset centimetara.

Zatim, magnetsko polje u svakoj tački prostora predstavlja vektor. Veličina vektora predstavlja jakost magnetskog polja. Smjer je okomit i na smjer sile i na smjer ispitne struje.

Magnetno polje na jednoj lokaciji možemo zamisliti kao strelicu. Magnetno polje u svemiru možemo zamisliti nizom strelica na različitim lokacijama, moguće različitih veličina i usmjerenim u različitim smjerovima. Lijepa vizualizacija dostupna je na https://www.falstad.com/vector3dm/. Magnetometar koji gradimo prikazuje magnetsko polje na lokaciji senzora kao strelica na ekranu.

Šta je Hall -ov senzor i kako funkcionira?

Hall -ov senzor je mali, jeftin uređaj koji mjeri jakost magnetskog polja u određenom smjeru. Napravljen je od komada poluvodiča dopiranog s viškom naboja. Izlaz nekih senzora Hall efekta je analogni napon. Ostali Hall -ovi senzori imaju integrirani usporednik i proizvode digitalni izlaz. Drugi senzori Hall efekta integrirani su u veće instrumente koji mjere brzinu protoka, brzinu rotacije ili druge veličine.

Fizika iza Hallovog efekta sažeta je Lorentzovom jednadžbom sile. Ova jednadžba opisuje silu na pokretni naboj zbog vanjskog električnog i magnetskog polja.

Image
Image

Donja slika ilustruje Hallov efekat. Pretpostavimo da želimo izmjeriti jačinu magnetskog polja u smjeru plave strelice. Kao što je prikazano u lijevom dijelu slike, primjenjujemo struju kroz komad poluvodiča okomito na smjer polja koje treba mjeriti. Struja je protok naboja, pa se naboj u poluvodiču kreće određenom brzinom. Ovaj naboj će osjetiti silu zbog vanjskog polja, kao što je prikazano u srednjem dijelu slike. Naboji će se kretati zbog sile i nakupljati se na rubovima poluvodiča. Naboji se stvaraju sve dok sila uslijed akumuliranih naboja ne uravnoteži silu nastalu zbog vanjskog magnetskog polja. Možemo mjeriti napon na poluvodiču, kao što je prikazano u desnom dijelu slike. Izmjereni napon proporcionalan je jačini magnetskog polja i smjer je okomit na struju i smjer magnetskog polja.

Image
Image

Šta je izometrijska projekcija?

U svakoj tački prostora magnetsko polje je opisano trodimenzionalnim vektorom. Međutim, naš ekran je dvodimenzionalan. Možemo projicirati trodimenzionalni vektor u dvodimenzionalnu ravninu tako da ga možemo nacrtati na ekranu. Postoji više načina da se to postigne, poput izometrijske projekcije, ortografske projekcije ili kose projekcije.

U izometrijskoj projekciji, osi x, y i z udaljene su 120 stupnjeva i izgledaju podjednako skraćene. Dodatne informacije o izometrijskoj projekciji, kao i potrebne formule, mogu se pronaći na Wikipedijinoj stranici na tu temu.

Korak 1: Prikupite potrepštine

Arduino i Cable

Arduino je mozak magnetometra. Ove upute opisuju kako se koristi Arduino Uno ili Arduino MKR1010. U oba slučaja potreban je kabel za povezivanje s računarom.

Opcija 1: Arduino Uno i 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

Opcija 2: Arduino MKR1010 i microUSB kabel

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 ekran

TFT znači Thin Film Transistor. Ovaj 1,44 -inčni ekran ima 128 x 128 piksela. Mali je, svijetao i šaren. Priložen je na ploču za razbijanje. Međutim, pinovi zaglavlja se odvajaju pa ih morate lemiti. (Lemljenje i lemilica su potrebno.)

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

    Image
    Image
  • Analogni senzori Hall efekta

Potrebna su tri senzora Hall efekta. Donja veza je za Allegro broj dijela A1324LUA-T. Za ovaj senzor, pin 1 je napon napajanja, pin 2 je uzemljen, a pin 3 je izlaz. Trebali bi raditi i drugi Hall senzori, ali pazite da budu analogni, a ne digitalni. Ako koristite drugi senzor, provjerite pinout i po potrebi prilagodite ožičenje. (Za testiranje sam zapravo koristio drugi senzor iste kompanije. Međutim, onaj koji sam koristio je zastario i ovaj senzor je njegova zamjena.)

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

Mala ploča i žica

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

Trajni magneti za testiranje

Magneti za frižider će dobro raditi.

Korak 2: Ožičenje

Ožičenje
Ožičenje

Lemite zaglavlja na ekranu.

Image
Image

Postavite senzore na jedan kraj ploče, a zaslon i Arduino na suprotni kraj. Struja u žicama u Arduinu i na ekranu generira magnetska polja, koja ne želimo da senzori očitavaju. Osim toga, možda bismo trebali postaviti senzore u blizini stalnih magneta, što bi moglo negativno utjecati na struju u žicama zaslona i senzora. Iz tih razloga želimo senzore daleko od zaslona i Arduina. Iz ovih razloga, ovaj magnetometar treba držati dalje od vrlo jakih magnetskih polja.

Senzore postavite okomito jedan na drugi, ali što bliže jedan drugom. Lagano savijte senzore kako biste ih postavili okomito. Svaki pin svakog senzora mora biti u zasebnom redu matične ploče kako bi se mogao zasebno povezati.

Image
Image

Ožičenje se malo razlikuje između MKR1010 i Uno iz dva razloga. Prvo, Arduino i zaslon komuniciraju putem SPI -a. Različiti Arduino modeli imaju različite namjenske pinove za određene SPI linije. Drugo, analogni ulazi Uno -a mogu prihvatiti do 5 V, dok analogni ulazi MKR1010 mogu prihvatiti samo do 3,3 V. Preporučeni napon napajanja za Hall -ove senzore je 5 V. Izlazi senzora su spojeni na Arduino analogne ulaze, a oni mogu biti veliki koliko i naponi napajanja. Za Uno koristite preporučeno napajanje od 5 V za senzore. Za MKR1010 koristite 3,3 V tako da analogni ulaz Arduina nikada ne vidi napon veći nego što može podnijeti.

Slijedite donje dijagrame i upute za Arduino koji koristite.

Ožičenje s Arduino Uno

Image
Image

Ekran ima 11 pinova. Spojite ih na Arduino Uno na sljedeći način. (NC znači da nije 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

Spojite Vin senzora na 5V Arduina. Spojite masu senzora na masu Arduina. Spojite izlaz senzora na analogne ulaze A1, A2 i A3 Arduina.

Image
Image

Ožičenje s Arduinom MKR1010

Image
Image

Ekran ima 11 pinova. Povežite ih s Arduinom na sljedeći način. (NC znači da nije 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

Spojite Vin senzora na Vcc na Arduinu. Ovaj pin je na 3.3V, a ne na 5V. Spojite masu senzora na masu Arduina. Spojite izlaz senzora na analogne ulaze A1, A2 i A3 Arduina.

Image
Image

Korak 3: Isprobajte ekran

Neka TFT ekran radi. Srećom, Adafruit ima neke biblioteke prilagođene korisnicima i odličan vodič za njih. Ove upute pomno slijede vodič, Otvorite razvojno okruženje Arduino. Idite na Alati → Upravljanje bibliotekama. Instalirajte biblioteke Adafruit_GFX, Adafruit_ZeroDMA i Adafruit_ST7735. Ponovo pokrenite razvojno okruženje Android.

Primjer grafičkog testa uključen je u biblioteke. Otvori. Datoteka → Primjeri → Biblioteka Adafruit ST7735 i ST7789 → graphicstest. Da biste odabrali 1,44 -inčni ekran za komentar iz reda 95 i redak za uklanjanje komentara 98.

Originalna verzija:

94 // Koristite ovaj inicijalizator ako koristite 1,8 -inčni TFT ekran:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S čip, crni jezičak 96 97 // ILI koristite ovaj inicijalizator (uncomment) ako koristite 1.44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R čip, zelena kartica

Tačna verzija za 1,44 -inčni ekran:

94 // Koristite ovaj inicijalizator ako koristite 1.8 TFT ekran:

95 //tft.initR(INIT_BLACKTAB); // Init ST7735S čip, crni jezičak 96 97 // ILI koristite ovaj inicijalizator (uncomment) ako koristite 1.44 TFT: 98 tft.initR (INITR_144GREENTAB); // Init SST35R čip, zelena kartica

Zaslon komunicira pomoću SPI -a, a različiti modeli Arduinosa koriste različite namjenske pinove za neke komunikacijske linije. Primjer grafičkog testa postavljen je za rad sa Uno pinovima. Ako koristite MKR1010, dodajte sljedeće retke između redova 80 i 81.

Ispravke 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); 81 plovak p = 3,1415926;

Spremite izmijenjeni primjer grafičkog testa. Uključite Arduino u računar ako to još niste učinili. Idite na Alati → Ploča i alati → Port kako biste provjerili može li računalo pronaći Arduino. Idite na Sketch → Upload. Ako primjer funkcionira, na zaslonu će se prikazati linije, pravokutnici, tekst i kompletna demonstracija. Vodič za Adafruit pruža više detalja ako je potrebno rješavanje problema.

Korak 4: Kod magnetometra

Preuzmite priloženi kôd i otvorite ga u razvojnom okruženju Arduino.

Ovaj program koristi šest funkcija:

Setup () pokreće prikaz

Loop () sadrži glavnu petlju programa. Zatamnjuje ekran, iscrtava osi, čita ulaze i crta strelicu koja predstavlja vektor magnetskog polja. Ima brzinu osvježavanja od jedne sekunde koja se može promijeniti promjenom linije 127

DrawAxes3d () crta i označava osi x, y i z

DrawArrow3d () prima x, y i z unose u rasponu od 0 do 1023. Iz ovih vrijednosti izračunava krajnje tačke strelice u prostoru. Zatim koristi funkcije isometricxx () i isometricyy () za izračunavanje krajnjih točaka na ekranu. Na kraju, iscrtava strelicu i ispisuje napone na dnu ekrana

Isometricxx () pronalazi x koordinatu izometrijske projekcije. Uzima koordinate x, y i z tačke i vraća odgovarajuću lokaciju x piksela na ekranu

Isometricyy () pronalazi y koordinatu izometrijske projekcije. Uzima koordinate x, y i z tačke i vraća odgovarajuću lokaciju y piksela na ekranu

Prije pokretanja koda, moramo odrediti koje pinove koristiti za SPI komunikaciju s zaslonom, a moramo odrediti i izvorni napon senzora. Ako koristite MKR1010, komentirajte redove 92-96 kao i redak 110. Zatim uklonite komentare na redove 85-89 kao i na red 108. Ako koristite Uno, komentirajte redove 85-89 kao i red 108 Zatim, uklonite komentare na linije 92-96, kao i na liniju 110.

Otpremite kôd, Skica → Otpremi.

Trebali biste vidjeti osi x, y i z u crvenoj boji. Zelena strelica sa plavim krugom za vrh predstavlja vektor magnetskog polja na senzorima. Očitavanja napona prikazana su u donjem lijevom kutu. Kako približavate magnet senzorima, očitavanja napona bi se trebala mijenjati, a veličina strelice bi trebala rasti.

Image
Image

Korak 5: Budući rad

Budući posao
Budući posao

Sljedeći korak bio bi kalibriranje uređaja. Tehnički list senzora pruža informacije o tome kako pretvoriti vrijednosti napona sirovog senzora u jakost magnetskog polja. Kalibracija se može provjeriti usporedbom s preciznijim magnetometrom.

Trajni magneti stupaju u interakciju sa žicama za nošenje struje. Žice u blizini zaslona i u Arduinu stvaraju magnetska polja koja mogu utjecati na očitanja senzora. Osim toga, ako se ovaj uređaj koristi za mjerenje u blizini jakog stalnog magneta, magnetsko polje iz uređaja koji se testira će stupiti u interakciju, unijeti šum u i eventualno oštetiti Arduino i zaslon. Zaštita bi ovaj magnetometar mogla učiniti robusnijim. Arduino može izdržati veća magnetska polja ako je oklopljen u metalnoj kutiji, a manje šuma bit će uvedeno ako oklopljeni kabeli povežu senzore umjesto golih žica.

Magnetsko polje je funkcija položaja, pa je različito u svakoj tački prostora. Ovaj uređaj koristi tri senzora, jedan za mjerenje x, y i z komponente magnetskog polja u jednoj tački. Senzori su blizu jedan drugom, ali ne u jednoj tački, što ograničava rezoluciju magnetometra. Bilo bi super spremiti očitanja magnetskog polja na različitim mjestima, a zatim ih prikazati kao niz strelica na odgovarajućim lokacijama. Međutim, to je projekt za neki drugi dan.

Reference

Informacije o bibliotekama Adafruit Arduino Graphics

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

Vizualizacija magnetnog polja

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

Informacije o Hall -ovom efektu i Hall -ovom senzoru

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

Podaci o izometrijskoj projekciji

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

Preporučuje se: