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, Rujan
Anonim
Arduino magnetometar
Arduino magnetometar

Što gradimo?

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

Što je Arduino?

Arduino je mali open-source user-friendly mikrokontroler. Ima digitalne ulazne i izlazne pinove. Također ima analogne ulazne pinove koji su korisni za čitanje ulaza sa senzora. Dostupni su različiti modeli Arduino. 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 razvojno okruženje Arduino, kao i sve knjižnice potrebne za vaš model. Razvojno okruženje dostupno je na https://www.arduino.cc/en/main/software, a upute za instalaciju dostupne su na

Što je magnetsko 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 je opisan 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 toč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 jednom mjestu možemo zamisliti kao strelicu. Magnetsko polje u svemiru možemo zamisliti nizom strelica na različitim mjestima, 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 mjestu senzora kao strelica na zaslonu.

Što 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 osjetnika Hall efekta je analogni napon. Ostali Hallovi senzori imaju integrirani usporednik i proizvode digitalni izlaz. Ostali Hall -ovi senzori 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.

Slika
Slika

Donja slika ilustrira Hallov efekt. Pretpostavimo da želimo izmjeriti jakost 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 zbog akumuliranih naboja ne uravnoteži silu nastalu zbog vanjskog magnetskog polja. Možemo izmjeriti napon na poluvodiču, kao što je prikazano u desnom dijelu slike. Izmjereni napon proporcionalan je jačini magnetskog polja, a smjer je okomit na struju i smjer magnetskog polja.

Slika
Slika

Što je izometrijska projekcija?

U svakoj točki prostora magnetsko polje je opisano trodimenzionalnim vektorom. Međutim, naš zaslon je dvodimenzionalan. Trodimenzionalni vektor možemo projicirati 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 međusobno su udaljene 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 koristiti Arduino Uno ili Arduino MKR1010. U oba slučaja potreban je kabel za povezivanje s računalom.

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 zaslon

TFT znači Thin Film Transistor. Ovaj 1,44 -inčni zaslon ima 128 x 128 piksela. Mali je, svijetao i šaren. Dolazi pričvršćen 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

    Slika
    Slika
  • Analogni osjetnici Hall efekta

Potrebna su tri senzora Hall efekta. Donja veza je za Allegro broj dijela A1324LUA-T. Za ovaj senzor, pin 1 je opskrbni napon, pin 2 je uzemljen, a pin 3 je izlaz. Trebali bi raditi i drugi Hall senzori, ali provjerite jesu li 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 tvrtke. Međutim, onaj koji sam koristio je zastario i ovaj je senzor njegova zamjena.)

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

Mala pločica i žica

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

Trajni magneti za ispitivanje

Magneti za hladnjak će dobro raditi.

Korak 2: Ožičenje

Ožičenje
Ožičenje

Lemite zaglavlja na zaslonu.

Slika
Slika

Senzore postavite na jedan kraj ploče, a zaslon i Arduino na suprotni kraj. Struja u žicama u Arduinu i na zaslonu 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. Također iz ovih razloga, ovaj magnetometar treba držati podalje od vrlo jakih magnetskih polja.

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

Slika
Slika

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 upotrijebite preporučeno napajanje od 5 V za senzore. Za MKR1010 upotrijebite 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

Slika
Slika

Zaslon 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.

Slika
Slika

Ožičenje s Arduinom MKR1010

Slika
Slika

Zaslon 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 Arduina. 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.

Slika
Slika

Korak 3: Isprobajte zaslon

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

Primjer grafičkog testa uključen je u knjižnice. Otvori. Datoteka → Primjeri → Knjižnica Adafruit ST7735 i ST7789 → grafički test. Za odabir 1,44 -inčnog zaslona za komentar iz reda 95 i redaka za uklanjanje komentara 98.

Originalna verzija:

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

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

Ispravna verzija za 1,44 zaslon:

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

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 -ja, a različiti modeli Arduinosa koriste različite namjenske pinove za neke komunikacijske linije. Primjer grafičkog testa postavljen je za rad s Uno pinovima. Ako koristite MKR1010, dodajte sljedeće retke između redaka 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_SCLK), TFT_SCLK; 81 plovak p = 3,1415926;

Spremite izmijenjeni primjer grafičkog testa. Uključite Arduino u računalo 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č 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 () inicijalizira prikaz

Loop () sadrži glavnu petlju programa. Zatamnjuje zaslon, crta 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 točke strelice u prostoru. Zatim koristi funkcije isometricxx () i isometricyy () za izračun krajnjih točaka na ekranu. Na kraju, iscrtava strelicu i ispisuje napone na dnu zaslona

Isometricxx () pronalazi x koordinatu izometrijske projekcije. Uzima koordinate x, y i z točke i vraća odgovarajuće mjesto x piksela na zaslonu

Isometricyy () pronalazi y koordinatu izometrijske projekcije. Uzima koordinate x, y i z točke i vraća odgovarajuće mjesto y piksela na zaslonu

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

Učitajte kôd, Skica → Prenesi.

Osi x, y i z trebali biste vidjeti crvenom bojom. Zelena strelica s plavim krugom za vrh predstavlja vektor magnetskog polja na senzorima. Očitanja napona prikazana su u donjem lijevom kutu. Kako približavate magnet senzorima, očitanja napona bi se trebala promijeniti, a veličina strelice bi trebala rasti.

Slika
Slika

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 trajnog magneta, magnetsko polje iz testiranog uređaja ć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 u svakoj točki prostora različito. Ovaj uređaj koristi tri senzora, jedan za mjerenje x, y i z komponente magnetskog polja u jednoj točki. Senzori su blizu jedan drugome, ali ne u jednoj točki, što ograničava razlučivost magnetometra. Bilo bi super spremiti očitanja magnetskog polja na različite točke, a zatim ih prikazati kao niz strelica na odgovarajućim mjestima. Međutim, to je projekt za još jedan dan.

Reference

Informacije o knjižnicama grafike Adafruit Arduino

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

Vizualizacija magnetskog polja

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

Podaci 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čeni: