Obsah:

Magnetometr Arduino: 5 kroků (s obrázky)
Magnetometr Arduino: 5 kroků (s obrázky)

Video: Magnetometr Arduino: 5 kroků (s obrázky)

Video: Magnetometr Arduino: 5 kroků (s obrázky)
Video: Arduino návody | OLED displej 128x32 SSD1306 I2C 2024, Listopad
Anonim
Magnetometr Arduino
Magnetometr Arduino

Co stavíme?

Lidé nemohou detekovat magnetická pole, ale my používáme zařízení, která se na magnety neustále spoléhají. Například motory, kompasy, rotační senzory a větrné turbíny vyžadují k provozu magnety. Tento tutoriál popisuje, jak vytvořit magnetometr na bázi Arduina, který snímá magnetické pole pomocí tří senzorů s Hallovým efektem. Vektor magnetického pole v místě je zobrazen na malé obrazovce pomocí izometrické projekce.

Co je to Arduino?

Arduino je malý uživatelsky přívětivý mikrokontrolér s otevřeným zdrojovým kódem. Má digitální vstupní a výstupní piny. Má také analogové vstupní kolíky, které jsou užitečné pro čtení vstupu ze senzorů. K dispozici jsou různé modely Arduino. Tento tutoriál popisuje, jak používat Arduino Uno nebo Arduino MKR1010. Lze však použít i jiné modely.

Než začnete s tímto výukovým programem, stáhněte si vývojové prostředí Arduino a také všechny knihovny potřebné pro váš konkrétní model. Vývojové prostředí je k dispozici na adrese https://www.arduino.cc/en/main/software a pokyny k instalaci jsou k dispozici na

Co je to magnetické pole?

Permanentní magnety vyvíjejí síly na jiné permanentní magnety. Proudové vodiče vyvíjejí síly na jiné proudové vodiče. Permanentní magnety a vodiče přenášející proud působí na sebe také silou. Tato síla na jednotku testovacího proudu je magnetické pole.

Pokud změříme objem objektu, dostaneme jedno skalární číslo. Magnetismus je však popsán vektorovým polem, komplikovanější veličinou. Za prvé se mění s polohou v celém prostoru. Například magnetické pole jeden centimetr od permanentního magnetu bude pravděpodobně větší než magnetické pole vzdálené deset centimetrů.

Dále je magnetické pole v každém bodě prostoru reprezentováno vektorem. Velikost vektoru představuje sílu magnetického pole. Směr je kolmý jak na směr síly, tak na směr zkušebního proudu.

Magnetické pole na jednom místě si můžeme představit jako šipku. Magnetické pole v celém prostoru si můžeme představit pomocí řady šipek na různých místech, případně různých velikostí a ukazujících různými směry. Pěkná vizualizace je k dispozici na https://www.falstad.com/vector3dm/. Magnetometr, který stavíme, zobrazuje magnetické pole v místě senzorů jako šipku na displeji.

Co je snímač Hallova jevu a jak funguje?

Senzor Hallova jevu je malé, levné zařízení, které měří sílu magnetického pole v určitém směru. Je vyroben z kusu polovodiče dopovaného přebytečnými náboji. Výstupem některých snímačů s Hallovým efektem je analogové napětí. Ostatní senzory s Hallovým efektem mají integrovaný komparátor a produkují digitální výstup. Další senzory s Hallovým efektem jsou integrovány do větších přístrojů, které měří průtok, rychlost otáčení nebo jiné veličiny.

Fyzika za Hallovým efektem je shrnuta v Lorentzově silové rovnici. Tato rovnice popisuje sílu na pohybující se náboj v důsledku vnějšího elektrického a magnetického pole.

obraz
obraz

Níže uvedený obrázek ilustruje Hallův efekt. Předpokládejme, že chceme změřit sílu magnetického pole ve směru modré šipky. Jak je znázorněno na levé části obrázku, aplikujeme proud kusem polovodiče kolmo na směr měřeného pole. Proud je tok nábojů, takže náboj v polovodiči se pohybuje určitou rychlostí. Tento náboj pocítí sílu způsobenou vnějším polem, jak ukazuje střední část obrázku. Náboje se budou vlivem síly pohybovat a hromadí se na hranách polovodiče. Náboje se hromadí, dokud síla způsobená nahromaděnými náboji nevyrovná sílu způsobenou vnějším magnetickým polem. Můžeme změřit napětí na polovodiči, jak ukazuje pravá část obrázku. Naměřené napětí je úměrné síle magnetického pole a je ve směru kolmém na proud a směru magnetického pole.

obraz
obraz

Co je to izometrická projekce?

V každém bodě prostoru je magnetické pole popsáno trojrozměrným vektorem. Náš displej je však dvourozměrný. Trojrozměrný vektor můžeme promítnout do dvourozměrné roviny, abychom jej mohli nakreslit na obrazovku. Existuje několik způsobů, jak toho dosáhnout, například izometrická projekce, ortografická projekce nebo šikmá projekce.

V izometrické projekci jsou osy x, y a z od sebe vzdáleny 120 stupňů a vypadají stejně zkráceny. Další informace o izometrické projekci a potřebné vzorce najdete na stránce Wikipedie k tomuto tématu.

Krok 1: Shromážděte zásoby

Arduino a kabel

Arduino je mozkem magnetometru. Tyto pokyny popisují, jak používat Arduino Uno nebo Arduino MKR1010. V obou případech je k připojení k počítači potřeba kabel.

Možnost 1: Arduino Uno a 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 a 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 displej

TFT je zkratka pro Thin Film Transistor. Tento 1,44 displej obsahuje 128 x 128 pixelů. Je malý, jasný a barevný. Dodává se připevněný k odlamovací desce. Piny záhlaví jsou však oddělené, takže je musíte pájet. (Páječka a páječka jsou potřeboval.)

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

    obraz
    obraz
  • Analogové snímače s Hallovým efektem

Jsou vyžadovány tři senzory s Hallovým efektem. Níže uvedený odkaz je pro číslo dílu Allegro A1324LUA-T. U tohoto senzoru je pin 1 napájecím napětím, pin 2 je uzemněn a pin 3 je výstup. Fungovat by měly i ostatní Hallovy senzory, ale ujistěte se, že jsou analogové, nikoli digitální. Pokud používáte jiný snímač, zkontrolujte vývod a v případě potřeby upravte zapojení. (Ve skutečnosti jsem pro účely testování použil jiný snímač od stejné společnosti. Ten, který jsem použil, je však zastaralý a tento senzor je jeho náhradou.)

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

Malé prkénko a drát

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

Permanentní magnety pro testování

Magnety na lednici budou fungovat dobře.

Krok 2: Zapojení

Elektrické vedení
Elektrické vedení

Pájejte záhlaví na displeji.

obraz
obraz

Umístěte senzory na jeden konec prkénka a na opačný konec umístěte displej a Arduino. Proud v vodičích v Arduinu a displeji generuje magnetická pole, která nechceme, aby senzory četly. Kromě toho můžeme chtít umístit senzory do blízkosti permanentních magnetů, které by mohly nepříznivě ovlivnit proud ve vodičích displeje a senzoru. Z těchto důvodů chceme senzory daleko od displeje a Arduina. Také z těchto důvodů by měl být tento magnetometr držen mimo velmi silná magnetická pole.

Umístěte senzory navzájem kolmo, ale co nejblíže k sobě. Senzory jemně ohněte, aby byly kolmé. Každý kolík každého senzoru musí být v samostatné řadě prkénka, aby jej bylo možné samostatně připojit.

obraz
obraz

Zapojení mezi MKR1010 a Uno se mírně liší ze dvou důvodů. Nejprve Arduino a displej komunikují pomocí SPI. Různé modely Arduino mají různé vyhrazené piny pro určité řady SPI. Za druhé, analogové vstupy Uno mohou přijímat až 5 V, zatímco analogové vstupy MKR1010 mohou přijímat pouze až 3,3 V. Doporučené napájecí napětí pro snímače s efektem Hall je 5 V. Výstupy senzorů jsou připojeny k analogovým vstupům Arduino, a ty mohou být stejně velké jako napájecí napětí. Pro Uno použijte doporučené 5 V napájení pro senzory. U MKR1010 použijte 3,3 V, aby analogový vstup Arduina nikdy neviděl napětí větší, než dokáže zvládnout.

Postupujte podle níže uvedených diagramů a pokynů pro Arduino, které používáte.

Zapojení s Arduino Uno

obraz
obraz

Displej má 11 pinů. Připojte je k Arduino Uno následujícím způsobem. (NC znamená nepřipojeno.)

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

Připojte Vin senzorů k 5V Arduina. Připojte uzemnění senzoru k zemi Arduina. Připojte výstup senzorů k analogovým vstupům A1, A2 a A3 Arduina.

obraz
obraz

Zapojení s Arduino MKR1010

obraz
obraz

Displej má 11 pinů. Připojte je k Arduinu následujícím způsobem. (NC znamená nepřipojeno.)

  • 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

Připojte Vin senzorů k Vcc Arduina. Tento pin je na 3,3 V, ne na 5 V. Připojte uzemnění senzoru k zemi Arduina. Připojte výstup senzorů k analogovým vstupům A1, A2 a A3 Arduina.

obraz
obraz

Krok 3: Otestujte displej

Začněme pracovat s TFT displejem. Naštěstí má Adafruit několik uživatelsky přívětivých knihoven a vynikající výukový program. Tyto pokyny pečlivě dodržujte výukový program

Otevřete vývojové prostředí Arduino. Přejděte do Nástroje → Spravovat knihovny. Nainstalujte si knihovny Adafruit_GFX, Adafruit_ZeroDMA a Adafruit_ST7735. Restartujte vývojové prostředí Android.

Příklad graphstest je součástí knihoven. Otevři to. Soubor → Příklady → Knihovna Adafruit ST7735 a ST7789 → grafický test. Chcete -li vybrat 1,44 displej s komentářem, řádek 95 a odkomentujte řádek 98.

Originální verze:

94 // Tento inicializátor použijte, pokud používáte 1,8 TFT obrazovku:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S chip, black tab 96 97 // NEBO použijte tento inicializátor (odkomentujte), pokud používáte 1,44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, zelená záložka

Správná verze pro 1,44 displej:

94 // Tento inicializátor použijte, pokud používáte 1,8 TFT obrazovku:

95 //tft.initR(INIT_BLACKTAB); // Init ST7735S chip, black tab 96 97 // NEBO použijte tento inicializátor (odkomentujte), pokud používáte 1,44 TFT: 98 tft.initR (INITR_144GREENTAB); // Init SST35R chip, zelená karta

Displej komunikuje pomocí SPI a různé modely Arduinos používají pro některé komunikační linky různé vyhrazené piny. Příklad Graphicstest je nastaven tak, aby fungoval s piny Uno. Pokud používáte MKR1010, přidejte mezi řádky 80 a 81 následující řádky.

Opravy pro 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ý příklad grafického testu. Pokud jste tak dosud neučinili, připojte Arduino k počítači. Přejděte do Nástroje → Deska a Nástroje → Port a ověřte, že počítač dokáže najít Arduino. Přejděte na Skica → Nahrát. Pokud příklad funguje, na displeji se zobrazí čáry, obdélníky, text a kompletní ukázka. Kurz Adafruit poskytuje více podrobností, pokud je potřeba řešení potíží.

Krok 4: Kód magnetometru

Stáhněte si přiložený kód a otevřete jej ve vývojovém prostředí Arduino.

Tento program využívá šest funkcí:

Setup () inicializuje zobrazení

Loop () obsahuje hlavní smyčku programu. Zčerná obrazovku, nakreslí osy, přečte vstupy a nakreslí šipku představující vektor magnetického pole. Má obnovovací frekvenci jednu sekundu, kterou lze změnit změnou řádku 127

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

DrawArrow3d () má vstup x, y a z v rozsahu od 0 do 1023. Z těchto hodnot vypočítá koncové body šipky v prostoru. Dále používá funkce izometricxx () a izometricyy () k výpočtu koncových bodů na obrazovce. Nakonec nakreslí šipku a vytiskne napětí ve spodní části obrazovky

Isometricxx () najde souřadnici x izometrické projekce. Převezme souřadnice bodu x, y a z a vrátí odpovídající umístění x pixelu na obrazovce

Isometricyy () najde souřadnici y izometrické projekce. Zaujme souřadnice bodu x, y a z a vrátí odpovídající umístění v pixelech na obrazovce

Před spuštěním kódu musíme určit, které piny použít pro komunikaci SPI s displejem, a musíme určit zdrojové napětí pro snímače. Pokud používáte MKR1010, okomentujte řádky 92-96 a také řádek 110. Poté odkomentujte řádky 85-89 a také řádek 108. Pokud používáte Uno, okomentujte řádky 85-89 a také řádek 108 Potom odkomentujte řádky 92-96 a také řádek 110.

Nahrajte kód, Skica → Nahrát.

Osy x, y a z byste měli vidět červeně. Zelená šipka s modrým kruhem na špičce představuje vektor magnetického pole na senzorech. Hodnoty napětí se zobrazují vlevo dole. Když přiblížíte magnet k senzorům, hodnoty napětí by se měly změnit a velikost šipky by se měla zvětšit.

obraz
obraz

Krok 5: Budoucí práce

Budoucí práce
Budoucí práce

Dalším krokem by byla kalibrace zařízení. Datový list senzoru poskytuje informace o tom, jak převést nezpracované hodnoty napětí senzoru na sílu magnetického pole. Kalibraci lze ověřit porovnáním s přesnějším magnetometrem.

Permanentní magnety interagují s vodiči vedoucími proud. Dráty poblíž displeje a v Arduinu generují magnetická pole, která by mohla ovlivnit hodnoty senzorů. Pokud se navíc toto zařízení používá k měření v blízkosti silného permanentního magnetu, magnetické pole z testovaného zařízení bude interagovat s, vnášet do něj šum a případně poškodit Arduino a displej. Stínění by mohlo tento magnetometr učinit robustnějším. Arduino může odolat větším magnetickým polím, pokud je stíněno v kovové krabici, a pokud jsou stíněné kabely připojeny k senzorům místo holých vodičů, bude docházet k menšímu šumu.

Magnetické pole je funkcí polohy, takže je v každém bodě prostoru jiné. Toto zařízení používá tři senzory, jeden k měření složky magnetického pole x, y a z v bodě. Senzory jsou blízko sebe, ale ne v jednom bodě, což omezuje rozlišení magnetometru. Bylo by skvělé uložit hodnoty magnetického pole v různých bodech a poté je zobrazit jako pole šipek na odpovídajících místech. To je však projekt na další den.

Reference

Informace o grafických knihovnách Adafruit Arduino

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

Vizualizace magnetického pole

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

Informace o senzorech s Hallovým efektem a Hallovým efektem

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

Informace o izometrické projekci

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

Doporučuje: