Obsah:

Magnetometer Arduino: 5 krokov (s obrázkami)
Magnetometer Arduino: 5 krokov (s obrázkami)

Video: Magnetometer Arduino: 5 krokov (s obrázkami)

Video: Magnetometer Arduino: 5 krokov (s obrázkami)
Video: How does an Accelerometer work? | 3D Animation 2024, Septembra
Anonim
Magnetometer Arduino
Magnetometer Arduino

Čo staviame?

Ľudia nedokážu odhaliť magnetické polia, ale používame zariadenia, ktoré sa na magnety neustále spoliehajú. Napríklad motory, kompasy, snímače rotácie a veterné turbíny vyžadujú na prevádzku magnety. Tento tutoriál popisuje, ako vytvoriť magnetometer na báze Arduina, ktorý sníma magnetické pole pomocou troch senzorov s Hallovým efektom. Vektor magnetického poľa na mieste je zobrazený na malej obrazovke pomocou izometrickej projekcie.

Čo je to Arduino?

Arduino je malý užívateľsky príjemný mikrokontrolér s otvoreným zdrojovým kódom. Má digitálne vstupné a výstupné kolíky. Má tiež analógové vstupné kolíky, ktoré sú užitočné na čítanie vstupov zo senzorov. K dispozícii sú rôzne modely Arduino. Tento tutoriál popisuje, ako používať Arduino Uno alebo Arduino MKR1010. Môžu sa však použiť aj iné modely.

Predtým, ako začnete s týmto tutoriálom, stiahnite si vývojové prostredie Arduino a všetky knižnice potrebné pre váš konkrétny model. Vývojové prostredie je k dispozícii na https://www.arduino.cc/en/main/software a pokyny na inštaláciu sú k dispozícii na

Čo je to magnetické pole?

Permanentné magnety pôsobia na ostatné permanentné magnety. Prúdové vodiče pôsobia na ostatné prúdové vodiče. Permanentné magnety a vodiče vedúce prúd pôsobia na seba navzájom tiež. Táto sila na jednotku testovacieho prúdu je magnetické pole.

Ak zmeráme objem objektu, dostaneme jedno skalárne číslo. Magnetizmus je však opísaný vektorovým poľom, komplikovanejšou veličinou. Po prvé, mení sa v závislosti od polohy v celom priestore. Napríklad magnetické pole jeden centimeter od permanentného magnetu bude pravdepodobne väčšie ako magnetické pole vzdialené desať centimetrov.

Ďalej je magnetické pole v každom bode priestoru reprezentované vektorom. Veľkosť vektora predstavuje silu magnetického poľa. Smer je kolmý na smer sily aj na smer skúšobného prúdu.

Magnetické pole na jednom mieste si môžeme predstaviť ako šípku. Magnetické pole v celom priestore si môžeme predstaviť pomocou šípky na rôznych miestach, prípadne rôznych veľkostí a smerujúcich rôznymi smermi. Pekná vizualizácia je k dispozícii na https://www.falstad.com/vector3dm/. Magnetometer, ktorý staviame, zobrazuje magnetické pole v mieste senzorov ako šípku na displeji.

Čo je to snímač Hallovho efektu a ako funguje?

Senzor s Hallovým efektom je malé, lacné zariadenie, ktoré meria silu magnetického poľa v určitom smere. Je vyrobený z kusu polovodiča dopovaného prebytočnými nábojmi. Výstup niektorých senzorov s Hallovým efektom je analógové napätie. Ostatné snímače s Hallovým efektom majú integrovaný komparátor a produkujú digitálny výstup. Ostatné snímače s Hallovým efektom sú integrované do väčších prístrojov, ktoré merajú prietok, rýchlosť otáčania alebo iné veličiny.

Fyzika za Hallovým efektom je zhrnutá v Lorentzovej silovej rovnici. Táto rovnica popisuje silu na pohybujúci sa náboj v dôsledku vonkajšieho elektrického a magnetického poľa.

Obrázok
Obrázok

Nasledujúci obrázok ilustruje Hallov efekt. Predpokladajme, že chceme merať silu magnetického poľa v smere modrej šípky. Ako je znázornené v ľavej časti obrázku, aplikujeme prúd cez polovodič kolmo na smer poľa, ktoré sa má merať. Prúd je tok nábojov, takže náboj v polovodiči sa pohybuje určitou rýchlosťou. Tento náboj pocíti silu v dôsledku vonkajšieho poľa, ako je znázornené v strednej časti obrázku. Nálože sa budú vplyvom sily pohybovať a hromadia sa na okrajoch polovodiča. Náboje sa hromadia, kým sila spôsobená nahromadenými nábojmi nevyrovná silu spôsobenú vonkajším magnetickým poľom. Napätie na polovodiči môžeme zmerať, ako je znázornené v pravej časti obrázku. Namerané napätie je úmerné sile magnetického poľa a je v smere kolmom na prúd a smere magnetického poľa.

Obrázok
Obrázok

Čo je to izometrická projekcia?

V každom bode priestoru je magnetické pole popísané trojrozmerným vektorom. Náš displej je však dvojrozmerný. Trojrozmerný vektor môžeme premietnuť do dvojrozmernej roviny, aby sme ho mohli nakresliť na obrazovku. Existuje niekoľko spôsobov, ako to dosiahnuť, napríklad izometrická projekcia, ortografická projekcia alebo šikmá projekcia.

Pri izometrickej projekcii sú osi x, y a z od seba vzdialené 120 stupňov a javia sa rovnako skrátené. Ďalšie informácie o izometrickej projekcii, ako aj potrebné vzorce, nájdete na stránke Wikipedia k tejto téme.

Krok 1: Zhromaždite zásoby

Arduino a kábel

Arduino je mozgom magnetometra. Tieto pokyny popisujú, ako používať Arduino Uno alebo Arduino MKR1010. V každom prípade je na pripojenie k počítaču potrebný kábel.

Možnosť 1: Kábel Arduino Uno a USB AB

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žnosť 2: Arduino MKR1010 a kábel 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 displej

TFT je skratka pre Thin Film Transistor. Tento 1,44 displej obsahuje 128 x 128 pixelov. Je malý, jasný a farebný. Je pripevnený k oddeľovacej doske. Kolíky záhlavia sa však oddeľujú, takže ich musíte spájkovať. (Spájka a spájkovačka sú potrebné.)

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

    Obrázok
    Obrázok
  • Analógové snímače s Hallovým efektom

Vyžadujú sa tri senzory s Hallovým efektom. Nižšie uvedený odkaz je pre číslo dielu Allegro A1324LUA-T. U tohto senzora je pin 1 napájacie napätie, pin 2 je uzemnený a pin 3 je výstup. Fungovať by mali aj ostatné Hallove senzory, uistite sa však, že sú analógové, nie digitálne. Ak používate iný snímač, skontrolujte vývod a v prípade potreby upravte zapojenie. (Na účely testovania som skutočne použil iný snímač od tej istej spoločnosti. Ten, ktorý som použil, je však zastaraný a tento senzor ho nahrádza.)

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

Malá doska a drôt

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

Permanentné magnety na testovanie

Magnety na chladničku budú fungovať dobre.

Krok 2: Zapojenie

Elektrické vedenie
Elektrické vedenie

Spájkujte hlavičky na displeji.

Obrázok
Obrázok

Senzory umiestnite na jeden koniec nepájivej dosky a displej a Arduino umiestnite na opačný koniec. Prúd vo vodičoch v Arduine a displeji generuje magnetické polia, ktoré nechceme, aby senzory čítali. Okrem toho by sme mohli chcieť umiestniť senzory do blízkosti permanentných magnetov, ktoré by mohli nepriaznivo ovplyvniť prúd vo vodičoch displeja a senzora. Z týchto dôvodov chceme, aby boli senzory ďaleko od displeja a Arduina. Aj z týchto dôvodov by mal byť tento magnetometer držaný mimo veľmi silných magnetických polí.

Senzory umiestnite kolmo na seba, ale čo najbližšie k sebe. Senzory jemne ohnite tak, aby boli kolmé. Každý kolík každého senzora musí byť v samostatnom rade nepájivej dosky, aby ho bolo možné samostatne pripojiť.

Obrázok
Obrázok

Zapojenie medzi MKR1010 a Uno sa mierne líši z dvoch dôvodov. Po prvé, Arduino a displej komunikujú prostredníctvom SPI. Rôzne modely Arduino majú rôzne vyhradené piny pre určité rady SPI. Za druhé, analógové vstupy Uno môžu akceptovať až 5 V, zatiaľ čo analógové vstupy MKR1010 môžu prijímať iba až 3,3 V. Odporúčané napájacie napätie pre snímače s Hallovým efektom je 5 V. Výstupy senzorov sú pripojené k analógovým vstupom Arduino, a tie môžu byť také veľké ako napájacie napätie. Pre Uno použite pre senzory odporúčané 5 V napájanie. V prípade MKR1010 používajte 3,3 V, aby analógový vstup Arduina nikdy nevidel napätie väčšie, ako je schopné zvládnuť.

Postupujte podľa nižšie uvedených schém a pokynov pre Arduino, ktoré používate.

Zapojenie s Arduino Uno

Obrázok
Obrázok

Displej má 11 pinov. Pripojte ich k Arduino Uno nasledovne. (NC znamená, že nie je pripojený.)

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

Pripojte Vin senzorov k 5V Arduina. Pripojte uzemnenie senzora k zemi Arduina. Pripojte výstup senzorov k analógovým vstupom A1, A2 a A3 Arduina.

Obrázok
Obrázok

Zapojenie s Arduino MKR1010

Obrázok
Obrázok

Displej má 11 pinov. Pripojte ich k Arduinu nasledovne. (NC znamená, že nie je pripojený.)

  • 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

Pripojte Vin senzorov k Vcc Arduina. Tento kolík je na 3,3 V, nie na 5 V. Pripojte uzemnenie senzora k zemi Arduina. Pripojte výstup senzorov k analógovým vstupom A1, A2 a A3 Arduina.

Obrázok
Obrázok

Krok 3: Otestujte displej

Začnime pracovať s displejom TFT. Našťastie Adafruit má niekoľko používateľsky prívetivých knižníc a výborný návod, ako s nimi pracovať. Tieto pokyny dôsledne dodržiavajú návod, Otvorte vývojové prostredie Arduino. Prejdite na Nástroje → Spravovať knižnice. Nainštalujte knižnice Adafruit_GFX, Adafruit_ZeroDMA a Adafruit_ST7735. Reštartujte vývojové prostredie systému Android.

Príklad grafického testu je súčasťou knižníc. Otvor to. Súbor → Príklady → Knižnica Adafruit ST7735 a ST7789 → grafický test. Ak chcete vybrať 1,44 displej, riadok 95 pre komentár a nekomentujte riadok 98.

Originálna verzia:

94 // Tento inicializátor použite, ak používate 1,8 -palcovú obrazovku TFT:

95 tft.initR (INITR_BLACKTAB); // Čip Init7777S, čierny štítok 96 97 // ALEBO použite tento inicializátor (odkomentujte), ak používate 1,44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Počiatočný čip ST7735R, zelená záložka

Správna verzia pre 1,44 displej:

94 // Tento inicializátor použite, ak používate 1,8 -palcovú obrazovku TFT:

95 //tft.initR(INIT_BLACKTAB); // Čip Init7777S, čierny štítok 96 97 // ALEBO použite tento inicializátor (odkomentujte), ak používate 1,44 TFT: 98 tft.initR (INITR_144GREENTAB); // Čip Init SST35R, zelená záložka

Displej komunikuje pomocou SPI a rôzne modely Arduinos používajú pre niektoré komunikačné linky rôzne vyhradené piny. Príklad grafického testu je nastavený na prácu s kolíkmi Uno. Ak používate MKR1010, medzi riadky 80 a 81 pridajte nasledujúce riadky.

Opravy pre 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_ 81 float p = 3,1415926;

Uložte upravený príklad grafického testu. Ak ste tak ešte neurobili, zapojte Arduino do počítača. Prejdite na Nástroje → Doska a Nástroje → Port a overte, či počítač dokáže nájsť Arduino. Prejdite na položku Skica → Odovzdať. Ak príklad funguje, na displeji sa zobrazia čiary, obdĺžniky, text a úplné demo. Tutoriál Adafruit poskytuje viac podrobností, ak je potrebné riešenie problémov.

Krok 4: Kód magnetometra

Stiahnite si priložený kód a otvorte ho vo vývojovom prostredí Arduino.

Tento program používa šesť funkcií:

Setup () inicializuje zobrazenie

Loop () obsahuje hlavnú slučku programu. Sčernie obrazovku, nakreslí osi, prečíta vstupy a nakreslí šípku predstavujúcu vektor magnetického poľa. Má obnovovaciu frekvenciu jednu sekundu, ktorú je možné zmeniť zmenou riadka 127

DrawAxes3d () nakreslí a označí osi x, y a z

DrawArrow3d () má vstup x, y a z v rozsahu od 0 do 1023. Z týchto hodnôt vypočíta koncové body šípky v priestore. Ďalej používa funkcie izometricxx () a izometricyy () na výpočet koncových bodov na obrazovke. Nakoniec nakreslí šípku a vytlačí napätie v spodnej časti obrazovky

Isometricxx () nájde súradnicu x izometrickej projekcie. Zaujme súradnice bodu x, y a z a vráti zodpovedajúce umiestnenie x pixelov na obrazovke

Izometricia () nájde súradnicu y izometrickej projekcie. Zoberie súradnice bodu x, y a z a vráti zodpovedajúce umiestnenie pixelu y na obrazovku

Pred spustením kódu musíme určiť, ktoré piny sa majú použiť na komunikáciu SPI s displejom, a musíme určiť zdrojové napätie pre snímače. Ak používate MKR1010, komentujte riadky 92-96 a 110. Potom odkomentujte riadky 85-89 a 108. Ak používate Uno, komentujte riadky 85-89 a 108. Potom odkomentujte riadky 92-96 a 110.

Nahrajte kód, Skica → Nahrať.

Osi x, y a z by ste mali vidieť červenou farbou. Zelená šípka s modrým kruhom pre hrot predstavuje vektor magnetického poľa na senzoroch. Hodnoty napätia sa zobrazujú vľavo dole. Keď priblížite magnet k senzorom, hodnoty napätia by sa mali zmeniť a veľkosť šípky by mala rásť.

Obrázok
Obrázok

Krok 5: Budúca práca

Budúca práca
Budúca práca

Ďalším krokom by bola kalibrácia zariadenia. Dátový list senzora poskytuje informácie o tom, ako previesť surové hodnoty napätia senzora na silu magnetického poľa. Kalibráciu je možné overiť porovnaním s presnejším magnetometrom.

Permanentné magnety interagujú s prúdovými vodičmi. Drôty v blízkosti displeja a v Arduine generujú magnetické polia, ktoré môžu ovplyvniť hodnoty senzorov. Navyše, ak sa toto zariadenie používa na meranie v blízkosti silného permanentného magnetu, magnetické pole z testovaného zariadenia bude interagovať so zariadením, vytvárať do neho hluk a pravdepodobne poškodí Arduino a displej. Vďaka tieneniu by mohol byť tento magnetometer robustnejší. Arduino odoláva väčším magnetickým poliam, ak je tienené v kovovej skrinke, a pokiaľ k holým vodičom pripoja senzory tienené káble, bude dochádzať k menšiemu hluku.

Magnetické pole je funkciou polohy, takže je v každom bode priestoru iné. Toto zariadenie používa tri senzory, jeden na meranie zložky magnetického poľa x, y a z v bode. Senzory sú blízko seba, ale nie v jednom bode, čo obmedzuje rozlíšenie magnetometra. Bolo by skvelé uložiť hodnoty magnetického poľa v rôznych bodoch a potom ich zobraziť ako pole šípok na zodpovedajúcich miestach. To je však projekt na ďalší deň.

Referencie

Informácie o grafických knižniciach Adafruit Arduino

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

Vizualizácia magnetického poľa

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

Informácie o snímačoch s Hallovým efektom a Hallovým efektom

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

Informácie o izometrickej projekcii

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

Odporúča: