Tartalomjegyzék:

Arduino magnetométer: 5 lépés (képekkel)
Arduino magnetométer: 5 lépés (képekkel)

Videó: Arduino magnetométer: 5 lépés (képekkel)

Videó: Arduino magnetométer: 5 lépés (képekkel)
Videó: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, Szeptember
Anonim
Arduino magnetométer
Arduino magnetométer

Mit építünk?

Az emberek nem tudják érzékelni a mágneses mezőket, de olyan eszközöket használunk, amelyek állandóan mágnesekre támaszkodnak. A motorok, iránytűk, forgásérzékelők és szélturbinák például mágneseket igényelnek a működéshez. Ez az oktatóanyag leírja, hogyan kell felépíteni egy Arduino -alapú magnetométert, amely három Hall -effektus segítségével érzékeli a mágneses mezőt. A mágneses mező vektor adott helyen egy kis képernyőn jelenik meg izometrikus vetítéssel.

Mi az Arduino?

Az Arduino egy kisméretű, nyílt forráskódú, felhasználóbarát mikrokontroller. Digitális bemeneti és kimeneti csapokkal rendelkezik. Analóg bemeneti csapokkal is rendelkezik, amelyek hasznosak az érzékelők bemenetének leolvasásához. Különböző Arduino modellek állnak rendelkezésre. Ez az oktatóanyag leírja az Arduino Uno vagy az Arduino MKR1010 használatát. Azonban más modellek is használhatók.

Mielőtt elkezdené ezt az oktatóanyagot, töltse le az Arduino fejlesztői környezetet, valamint az adott modellhez szükséges könyvtárakat. A fejlesztői környezet a https://www.arduino.cc/en/main/software címen, a telepítési utasítások pedig a https://www.arduino.cc/en/main/software címen érhetők el.

Mi az a mágneses mező?

Az állandó mágnesek erőhatást gyakorolnak más állandó mágnesekre. Az áramvezető vezetékek erőt gyakorolnak más áramvezető vezetékekre. Az állandó mágnesek és az áramvezető vezetékek egymásra is erőt fejtenek ki. Ez az egységnyi tesztáramra ható erő mágneses mező.

Ha egy objektum térfogatát mérjük, egyetlen skaláris számot kapunk. A mágnesességet azonban egy vektormező írja le, egy bonyolultabb mennyiség. Először is, az egész tér helyzetétől függően változik. Például az állandó mágnestől egy centiméterre lévő mágneses mező valószínűleg nagyobb, mint a tíz centiméterre lévő mágneses mező.

Ezután a mágneses mezőt a tér minden pontján vektor jeleníti meg. A vektor nagysága a mágneses mező erősségét jelzi. Az irány merőleges mind az erő irányára, mind a vizsgálati áram irányára.

A mágneses mezőt egyetlen helyen ábrázolhatjuk nyílként. A mágneses mezőt az egész térben egy nyíl tömb segítségével tudjuk elképzelni különböző helyeken, esetleg különböző méretűek és különböző irányokba mutatva. Egy szép megjelenítés elérhető a https://www.falstad.com/vector3dm/ oldalon. Az általunk épített magnetométer nyílként jeleníti meg a mágneses mezőt az érzékelők helyén.

Mi a Hall -effektus érzékelő és hogyan működik?

A Hall -effektus érzékelő egy kicsi, olcsó eszköz, amely egy adott irányban méri a mágneses mező erősségét. Ez egy félvezető darabból készül, amelyet felesleges töltésekkel adalékolnak. Néhány Hall -hatású érzékelő kimenete analóg feszültség. Más Hall effekt érzékelők beépített összehasonlítóval rendelkeznek, és digitális kimenetet produkálnak. Más Hall effekt érzékelők nagyobb műszerekbe vannak beépítve, amelyek az áramlási sebességet, a forgási sebességet vagy más mennyiségeket mérnek.

A Hall -effektus mögött álló fizikát a Lorentz -erő -egyenlet foglalja össze. Ez az egyenlet a külső elektromos és mágneses mező hatására a mozgó töltésre kifejtett erőt írja le.

Kép
Kép

Az alábbi ábra a Hall -effektust szemlélteti. Tegyük fel, hogy meg akarjuk mérni a mágneses mező erősségét a kék nyíl irányában. Amint az ábra bal oldalán látható, áramot alkalmazunk a mérendő mező irányára merőleges félvezető darabon keresztül. Az áram a töltések áramlása, ezért a félvezető töltése bizonyos sebességgel mozog. Ez a töltés erőt fog érezni a külső mező hatására, amint az az ábra középső részén látható. A töltések az erő hatására elmozdulnak és felhalmozódnak a félvezető szélein. A töltések addig halmozódnak fel, amíg a felhalmozódott töltések miatti erő kiegyensúlyozza a külső mágneses mező hatását. Meg tudjuk mérni a feszültséget a félvezetőn, az ábra jobb oldalán látható módon. A mért feszültség arányos a mágneses mező erősségével, és az áramra merőleges irányban és a mágneses tér irányában van.

Kép
Kép

Mi az izometrikus vetítés?

A tér minden pontján a mágneses mezőt háromdimenziós vektor írja le. A kijelzőnk azonban kétdimenziós. A háromdimenziós vektort kétdimenziós síkba vetíthetjük, így rajzolhatjuk a képernyőre. Ennek számos módja van, például izometrikus vetítés, ortográfiai vetítés vagy ferde vetítés.

Izometrikus vetítésben az x, y és z tengelyek egymástól 120 fokos távolságban vannak, és ugyanolyan rövidre vannak írva. Az izometrikus vetítéssel kapcsolatos további információk, valamint a szükséges képletek a Wikipédia témakörben található oldalán találhatók.

1. lépés: Gyűjtse össze a kellékeket

Arduino és kábel

Az Arduino a magnetométer agya. Ezek az utasítások leírják az Arduino Uno vagy az Arduino MKR1010 használatát. Mindkét esetben kábel szükséges a számítógéphez való csatlakoztatáshoz.

1. lehetőség: Arduino Uno és USB AB kábel

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

2. lehetőség: Arduino MKR1010 és microUSB kábel

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 kijelző

A TFT a vékony film tranzisztor rövidítése. Ez az 1,44 hüvelykes kijelző 128 x 128 képpontot tartalmaz. Kicsi, fényes és színes. Kikapcsolási táblához van csatolva. A fejlécek azonban külön -külön érkeznek, ezért be kell forrasztani őket. (Forrasztó és forrasztópáka szükséges.)

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

    Kép
    Kép
  • Analóg Hall Effect érzékelők

Három Hall effekt érzékelő szükséges. Az alábbi link az A1324LUA-T számú Allegro-alkatrészt tartalmazza. Ennél az érzékelőnél az 1. tüske a tápfeszültség, a 2. érintkező földelt, a 3. tüske pedig a kimenet. Más Hall -érzékelőknek is működniük kell, de győződjön meg arról, hogy analóg, nem pedig digitális. Ha másik érzékelőt használ, ellenőrizze a csatlakozót, és szükség esetén állítsa be a vezetékeket. (Valójában ugyanazon cégtől eltérő érzékelőt használtam tesztelésre. Azonban az általam használt elavult, és ez az érzékelő a cseréje.)

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

Kis kenyértábla és huzal

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

Állandó mágnesek a teszteléshez

A hűtőmágnesek jól működnek.

2. lépés: Kábelezés

Vezeték
Vezeték

Forrasztja a fejléceket a kijelzőn.

Kép
Kép

Helyezze az érzékelőket a kenyértábla egyik végére, a kijelzőt és az Arduino -t pedig a másik végére. Az Arduino és a kijelző vezetékeiben lévő áram mágneses mezőket generál, amelyeket nem szeretnénk, ha az érzékelők olvasnának. Ezenkívül érdemes lehet az érzékelőket állandó mágnesek közelébe helyezni, ami hátrányosan befolyásolhatja a kijelző és az érzékelő vezetékeiben lévő áramot. Ezen okok miatt szeretnénk, ha az érzékelők távol lennének a kijelzőtől és az Arduino -tól. Ezen okok miatt is ezt a magnetométert távol kell tartani a nagyon erős mágneses mezőktől.

Helyezze az érzékelőket egymásra merőlegesen, de a lehető legközelebb egymáshoz. Óvatosan hajlítsa meg az érzékelőket, hogy merőlegesek legyenek. Az egyes érzékelők minden tűjének a kenyérlap külön sorában kell lennie, így külön csatlakoztatható.

Kép
Kép

A vezetékek némileg eltérnek az MKR1010 és az Uno között két okból. Először is, az Arduino és a kijelző SPI -n keresztül kommunikál. A különböző Arduino modellek különböző dedikált csapokkal rendelkeznek bizonyos SPI vonalakhoz. Másodszor, az Uno analóg bemenetei legfeljebb 5 V -ot, míg az MKR1010 analóg bemenetei legfeljebb 3,3 V -ot fogadhatnak el. A Hall -effektusok ajánlott tápfeszültsége 5 V. Az érzékelő kimenetek Arduino analóg bemenetekhez vannak csatlakoztatva, és ezek akkoraak lehetnek, mint a tápfeszültségek. Az Uno esetében használja az érzékelőkhöz ajánlott 5 V -os tápegységet. Az MKR1010 esetén használjon 3,3 V -ot, hogy az Arduino analóg bemenete soha ne látjon nagyobb feszültséget, mint amennyit képes kezelni.

Kövesse az alábbi diagramokat és utasításokat a használt Arduino számára.

Kábelezés az Arduino Uno -val

Kép
Kép

A kijelző 11 érintkezővel rendelkezik. Csatlakoztassa őket az Arduino Uno -hoz az alábbiak szerint. (Az NC azt jelenti, hogy nincs csatlakoztatva.)

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

Csatlakoztassa az érzékelők Vin -jét az Arduino 5V -hoz. Csatlakoztassa az érzékelő földjét az Arduino földjéhez. Csatlakoztassa az érzékelők kimenetét az Arduino A1, A2 és A3 analóg bemenetéhez.

Kép
Kép

Kábelezés az Arduino MKR1010 készülékkel

Kép
Kép

A kijelző 11 érintkezővel rendelkezik. Csatlakoztassa őket az Arduino -hoz az alábbiak szerint. (Az NC azt jelenti, hogy nincs csatlakoztatva.)

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

Csatlakoztassa az érzékelők Vinjét az Arduino Vcc -jéhez. Ez a tüske 3.3V, nem 5V. Csatlakoztassa az érzékelő földjét az Arduino földjéhez. Csatlakoztassa az érzékelők kimenetét az Arduino A1, A2 és A3 analóg bemenetéhez.

Kép
Kép

3. lépés: Tesztelje a kijelzőt

Működtessük a TFT kijelzőt. Szerencsére az Adafruit rendelkezik néhány felhasználóbarát könyvtárral és kiváló oktatóanyaggal. Ezek az utasítások szorosan követik az oktatóanyagot, Nyissa meg az Arduino fejlesztői környezetet. Lépjen az Eszközök → Könyvtárak kezelése menüpontra. Telepítse az Adafruit_GFX, Adafruit_ZeroDMA és Adafruit_ST7735 könyvtárakat. Indítsa újra az Android fejlesztői környezetet.

A grafikus teszt példája szerepel a könyvtárakban. Nyisd ki. Fájl → Példák → Adafruit ST7735 és ST7789 Könyvtár → graphicstest. Az 1,44 -os kijelző 95. megjegyzés sorának és a 98 megjegyzés megszüntetése sorának kiválasztásához.

Eredeti verzió:

94 // Ezt az inicializálót használja, ha 1,8 hüvelykes TFT képernyőt használ:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S chip, fekete fül 96 97 // VAGY használja ezt az inicializálót (megjegyzés nélkül), ha 1,44 TFT: 98 //tft.initR (INITR_144GREENTAB); // Init ST7735R chip, zöld lap

Az 1,44 -os kijelző helyes verziója:

94 // Ezt az inicializálót használja, ha 1,8 hüvelykes TFT képernyőt használ:

95 //tft.initR (INIT_BLACKTAB); // Init ST7735S chip, fekete fül 96 97 // VAGY használja ezt az inicializálót (megjegyzés nélkül), ha 1,44 TFT -t használ: 98 tft.initR (INITR_144GREENTAB); // Init SST35R chip, zöld lap

A kijelző SPI használatával kommunikál, és a különböző Arduinos modellek különböző kommunikációs vonalakhoz különböző dedikált csapokat használnak. A grafikus teszt példa az Uno csapokkal való együttműködésre van beállítva. Ha az MKR1010 készüléket használja, adja hozzá a következő sorokat a 80. és 81. sor között.

Az MKR1010 javításai:

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_RST); 81 úszó p = 3,1415926;

Mentse a módosított graphicstest példát. Csatlakoztassa az Arduino -t a számítógéphez, ha még nem tette meg. Lépjen az Eszközök → Tábla és Eszközök → Port menübe, és ellenőrizze, hogy a számítógép megtalálja -e az Arduino -t. Lépjen a Vázlat → Feltöltés menüpontra. Ha a példa működik, a kijelzőn sorok, téglalapok, szöveg és a teljes bemutató jelenik meg. Az Adafruit oktatóanyag részletesebb tájékoztatást nyújt, ha hibaelhárításra van szükség.

4. lépés: A magnetométer kódja

Töltse le a mellékelt kódot, és nyissa meg az Arduino fejlesztői környezetben.

Ez a program hat funkciót használ:

A Setup () inicializálja a kijelzőt

A Loop () tartalmazza a program fő ciklusát. Elfeketíti a képernyőt, megrajzolja a tengelyeket, leolvassa a bemeneteket, és rajzolja a mágneses mező vektorát jelző nyilat. Egy másodperces frissítési gyakorisággal rendelkezik, amelyet a 127 -es sor megváltoztatásával lehet megváltoztatni

A DrawAxes3d () rajzolja és címkézi az x, y és z tengelyt

A DrawArrow3d () x, y és z bemenetet vesz fel 0 és 1023 között. Ezekből az értékekből kiszámítja a nyíl végpontjait a térben. Ezután az isometricxx () és isometricyy () függvényeket használja a képernyő végpontjainak kiszámításához. Végül megrajzolja a nyilat, és kinyomtatja a feszültségeket a képernyő aljára

Az Isometricxx () megkeresi az izometrikus vetület x koordinátáját. Egy pont x, y és z koordinátáit veszi fel, és visszaadja a megfelelő x pixelhelyet a képernyőn

Az Isometricyy () megkeresi az izometrikus vetület y koordinátáját. Beveszi egy pont x, y és z koordinátáit, és visszaadja a megfelelő y képpont helyét a képernyőn

A kód futtatása előtt meg kell adnunk, hogy mely érintkezőket kell használni a kijelzővel való SPI kommunikációhoz, és meg kell adnunk az érzékelők forrásfeszültségét. Ha az MKR1010-et használja, írja le a 92-96. Sort és a 110. sort. Ezután törölje a 85-89. És a 108. sort. Ha az Uno-t használja, írja le a 85-89.. Ezután törölje a 92-96. És a 110. sor megjegyzéseit.

Töltse fel a kódot, Vázlat → Feltöltés.

Látnia kell az x, y és z tengelyt pirossal. A zöld nyíl kék körrel a hegyen jelzi a mágneses mező vektorát az érzékelőknél. A feszültség leolvasása megjelenik a bal alsó sarokban. Amint közelebb visz egy mágnest az érzékelőkhöz, a feszültségértékeknek meg kell változniuk, és a nyíl méretének növekednie kell.

Kép
Kép

5. lépés: Jövőbeli munka

Jövőbeli munka
Jövőbeli munka

A következő lépés az eszköz kalibrálása lenne. Az érzékelő adatlapja információkat tartalmaz arról, hogyan lehet a nyers érzékelő feszültségértékeit mágneses térerőssé alakítani. A kalibrációt egy pontosabb magnetométerrel összehasonlítva ellenőrizhetjük.

Az állandó mágnesek kölcsönhatásba lépnek az áramvezető vezetékekkel. A kijelző közelében és az Arduino -ban lévő vezetékek mágneses mezőket hoznak létre, amelyek befolyásolhatják az érzékelő leolvasását. Ezenkívül, ha ezt az eszközt erős állandó mágnes közelében mérik, akkor a vizsgált eszköz mágneses mezője kölcsönhatásba lép, zajt vezet be, és esetleg károsítja az Arduino -t és a kijelzőt. Az árnyékolás robusztusabbá teheti ezt a magnetométert. Az Arduino ellenáll a nagyobb mágneses mezőknek, ha fémdobozba van árnyékolva, és kevesebb zaj keletkezik, ha árnyékolt kábelek kötik össze az érzékelőket a csupasz vezetékek helyett.

A mágneses mező a pozíció függvénye, ezért a tér minden pontján más. Ez az eszköz három érzékelőt használ, az egyik a mágneses mező x, y és z komponensének mérésére egy ponton. Az érzékelők közel vannak egymáshoz, de nem egy ponton, és ez korlátozza a magnetométer felbontását. Jó lenne elmenteni a mágneses mező leolvasásait különböző pontokon, majd nyilak tömbjeként megjeleníteni a megfelelő helyeken. Ez azonban egy másik nap projektje.

Hivatkozások

Információk az Adafruit Arduino Graphics könyvtárairól

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

Mágneses mező megjelenítése

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

Információk a Hall -effektusról és a Hall -effektus -érzékelőkről

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

Információk az izometrikus vetítésről

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

Ajánlott: