Cuprins:
- Pasul 1: Strângeți consumabilele
- Pasul 2: Cablare
- Pasul 3: Testați afișajul
- Pasul 4: Codul magnetometrului
- Pasul 5: Munca viitoare
Video: Magnetometru Arduino: 5 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Ce construim?
Oamenii nu pot detecta câmpuri magnetice, dar folosim dispozitive care se bazează tot timpul pe magneți. De exemplu, motoarele, busolele, senzorii de rotație și turbinele eoliene necesită magneți pentru funcționare. Acest tutorial descrie cum se construiește un magnetometru pe bază de Arduino care detectează câmpul magnetic folosind trei senzori de efect Hall. Vectorul câmpului magnetic dintr-o locație este afișat pe un ecran mic folosind proiecția izometrică.
Ce este un Arduino?
Un Arduino este un mic microcontroler open-source ușor de utilizat. Are pini de intrare și ieșire digitale. De asemenea, are pini de intrare analogici, care sunt utili pentru citirea intrărilor de la senzori. Sunt disponibile diferite modele Arduino. Acest tutorial descrie cum să utilizați fie Arduino Uno, fie Arduino MKR1010. Cu toate acestea, pot fi utilizate și alte modele.
Înainte de a începe acest tutorial, descărcați mediul de dezvoltare Arduino, precum și orice biblioteci necesare pentru modelul dvs. particular. Mediul de dezvoltare este disponibil la https://www.arduino.cc/en/main/software, iar instrucțiunile de instalare sunt disponibile la
Ce este un câmp magnetic?
Magneții permanenți exercită forțe asupra altor magneți permanenți. Sârmele de transport curente exercită forțe asupra altor fire de transport curente. Magneții permanenți și firele de transport ale curentului exercită forțe și unul pe celălalt. Această forță pe unitate de curent de testare este un câmp magnetic.
Dacă măsurăm volumul unui obiect, obținem un singur număr scalar. Cu toate acestea, magnetismul este descris de un câmp vector, o cantitate mai complicată. În primul rând, variază în funcție de poziție în tot spațiul. De exemplu, câmpul magnetic la un centimetru de un magnet permanent este probabil să fie mai mare decât câmpul magnetic la zece centimetri distanță.
Apoi, câmpul magnetic din fiecare punct al spațiului este reprezentat de un vector. Mărimea vectorului reprezintă puterea câmpului magnetic. Direcția este perpendiculară atât pe direcția forței, cât și pe direcția curentului de încercare.
Putem imagina câmpul magnetic într-o singură locație ca o săgeată. Putem imagina câmpul magnetic pe tot spațiul printr-o serie de săgeți în diferite locații, posibil de diferite dimensiuni și îndreptate în direcții diferite. O vizualizare frumoasă este disponibilă la https://www.falstad.com/vector3dm/. Magnetometrul pe care îl construim afișează câmpul magnetic la locația senzorilor ca o săgeată pe afișaj.
Ce este un senzor de efect Hall și cum funcționează?
Un senzor de efect Hall este un dispozitiv mic, ieftin, care măsoară puterea câmpului magnetic de-a lungul unei anumite direcții. Este fabricat dintr-o bucată de semiconductor dopată cu sarcini în exces. Ieșirea unor senzori de efect Hall este o tensiune analogică. Alți senzori de efect Hall au un comparator integrat și produc o ieșire digitală. Alți senzori de efect Hall sunt integrați în instrumente mai mari care măsoară debitul, viteza de rotație sau alte cantități.
Fizica din spatele efectului Hall este rezumată prin ecuația forței Lorentz. Această ecuație descrie forța pe o sarcină în mișcare datorată unui câmp electric și magnetic extern.
Figura de mai jos ilustrează efectul Hall. Să presupunem că vrem să măsurăm puterea câmpului magnetic în direcția săgeții albastre. Așa cum se arată în partea stângă a figurii, aplicăm un curent printr-o bucată de semiconductor perpendiculară pe direcția câmpului de măsurat. Curentul este fluxul de sarcini, deci o sarcină din semiconductor se mișcă cu o anumită viteză. Această încărcare va simți o forță datorată câmpului extern, așa cum se arată în partea de mijloc a figurii. Sarcinile se vor mișca datorită forței și se vor acumula pe marginile semiconductorului. Încărcările se acumulează până când forța datorată încărcărilor acumulate echilibrează forța datorată câmpului magnetic extern. Putem măsura tensiunea pe semiconductor, așa cum se arată în partea dreaptă a figurii. Tensiunea măsurată este proporțională cu puterea câmpului magnetic și este în direcția perpendiculară pe curent și direcția câmpului magnetic.
Ce este proiecția izometrică?
În fiecare punct al spațiului, câmpul magnetic este descris de un vector tridimensional. Cu toate acestea, ecranul nostru de afișare este bidimensional. Putem proiecta vectorul tridimensional într-un plan bidimensional, astfel încât să-l putem desena pe ecran. Există mai multe modalități de a realiza acest lucru, cum ar fi proiecția izometrică, proiecția ortografică sau proiecția oblică.
În proiecția izometrică, axele x, y și z sunt la 120 de grade distanță și apar la fel de scurtate. Informații suplimentare despre proiecția izometrică, precum și formulele necesare, pot fi găsite pe pagina Wikipedia pe această temă.
Pasul 1: Strângeți consumabilele
Arduino și cablu
Arduino este creierul magnetometrului. Aceste instrucțiuni descriu modul de utilizare a unui Arduino Uno sau a unui Arduino MKR1010. În ambele cazuri, este necesar un cablu pentru a-l conecta la computer.
Opțiunea 1: Arduino Uno și cablu 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
Opțiunea 2: Arduino MKR1010 și cablu 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
Afișaj TFT
TFT înseamnă Thin Film Transistor. Acest afișaj de 1,44 conține 128 x 128 pixeli. Este mic, luminos și colorat. Este atașat la o placă de rupere. Cu toate acestea, știfturile antetului sunt separate, așa că trebuie să le lipiți. Necesar.)
www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830
- Senzori analogici de efect Hall
Sunt necesari trei senzori de efect Hall. Link-ul de mai jos este pentru numărul piesei Allegro A1324LUA-T. Pentru acest senzor, pinul 1 este tensiunea de alimentare, pinul 2 este împământat, iar pinul 3 este ieșirea. Și alți senzori Hall ar trebui să funcționeze, dar asigurați-vă că sunt analogi, nu digitali. Dacă utilizați un alt senzor, verificați pinout-ul și reglați cablajul, dacă este necesar. (De fapt, am folosit un senzor diferit de aceeași companie în scopuri de testare. Cu toate acestea, cel pe care l-am folosit este învechit, iar acest senzor este înlocuitorul acestuia.)
www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144
Breadboard și sârmă mici
www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929
Magneți permanenți pentru testare
Magneții de frigider vor funcționa bine.
Pasul 2: Cablare
Lipiți anteturile de pe afișaj.
Așezați senzorii la un capăt al panoului și plasați afișajul și Arduino pe capătul opus. Curentul în firele din Arduino și afișajul generează câmpuri magnetice, pe care nu vrem să le citească senzorii. În plus, este posibil să dorim să punem senzorii lângă magneți permanenți, care ar putea avea un impact negativ asupra curentului din firele afișajului și ale senzorului. Din aceste motive, dorim senzorii departe de ecran și Arduino. De asemenea, din aceste motive, acest magnetometru trebuie ținut departe de câmpurile magnetice foarte puternice.
Așezați senzorii perpendiculari unul pe celălalt, dar cât mai aproape unul de celălalt. Îndoiți ușor senzorii pentru a le face perpendiculari. Fiecare pin al fiecărui senzor trebuie să se afle într-un rând separat al panoului pentru a putea fi conectat separat.
Cablajul este ușor diferit între MKR1010 și Uno din două motive. În primul rând, Arduino și afișajul comunică prin SPI. Diferite modele Arduino au pini dedicați diferiți pentru anumite linii SPI. În al doilea rând, intrările analogice ale Uno pot accepta până la 5 V, în timp ce intrările analogice ale MKR1010 pot accepta doar până la 3,3 V. Tensiunea de alimentare recomandată pentru senzorii cu efect Hall este de 5 V. Ieșirile senzorului sunt conectate la intrările analogice Arduino, iar acestea pot fi la fel de mari ca tensiunile de alimentare. Pentru Uno, utilizați sursa de 5 V recomandată pentru senzori. Pentru MKR1010, utilizați 3,3 V, astfel încât intrarea analogică a Arduino să nu vadă niciodată o tensiune mai mare decât poate suporta.
Urmați diagramele și instrucțiunile de mai jos pentru Arduino pe care îl utilizați.
Cablare cu Arduino Uno
Afișajul are 11 pini. Conectați-le la Arduino Uno după cum urmează. (NC înseamnă neconectat.)
- Vin → 5V
- 3.3 → NC
- Gnd → GND
- SCK → 13
- SO → NC
- SI → 11
- TCS → 10
- RST → 9
- D / C → 8
- CCS → NC
- Lite → NC
Conectați Vinul senzorilor la 5V din Arduino. Conectați pământul senzorului la pământul Arduino. Conectați ieșirea senzorilor la intrările analogice A1, A2 și A3 ale Arduino.
Cablare cu Arduino MKR1010
Afișajul are 11 pini. Conectați-le la Arduino după cum urmează. (NC înseamnă neconectat.)
- 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
Conectați Vinul senzorilor la Vcc al Arduino. Acest pin este la 3,3V, nu la 5V. Conectați pământul senzorului la pământul Arduino. Conectați ieșirea senzorilor la intrările analogice A1, A2 și A3 ale Arduino.
Pasul 3: Testați afișajul
Să punem în funcțiune afișajul TFT. Din fericire, Adafruit are câteva biblioteci ușor de utilizat și un tutorial excelent pentru a merge împreună cu ele. Aceste instrucțiuni urmează îndeaproape tutorialul, Deschideți mediul de dezvoltare Arduino. Accesați Instrumente → Gestionați bibliotecile. Instalați bibliotecile Adafruit_GFX, Adafruit_ZeroDMA și Adafruit_ST7735. Reporniți mediul de dezvoltare Android.
Exemplul graphicstest este inclus în biblioteci. Deschidel. Fișier → Exemple → Biblioteca Adafruit ST7735 și ST7789 → graphicstest. Pentru a selecta afișajul de 1.44 afișați linia 95 și decomentați linia 98.
Versiunea originala:
94 // Utilizați acest inițializator dacă utilizați un ecran TFT de 1,8 :
95 tft.initR (INITR_BLACKTAB); // Cip Init ST7735S, filă neagră 96 97 // SAU utilizați acest inițializator (necomentat) dacă utilizați un TFT de 1,44 : 98 //tft.initR(INITR_144GREENTAB); // Cip Init ST7735R, filă verde
Versiune corectă pentru afișajul de 1,44 :
94 // Utilizați acest inițializator dacă utilizați un ecran TFT de 1,8 :
95 //tft.initR(INIT_BLACKTAB); // Cip Init ST7735S, filă neagră 96 97 // SAU utilizați acest inițializator (necomentat) dacă utilizați un TFT de 1,44 : 98 tft.initR (INITR_144GREENTAB); // Cip Init SST35R, filă verde
Afișajul comunică utilizând SPI, iar diferite modele Arduino folosesc pini dedicați diferiți pentru unele linii de comunicație. Exemplul graphicstest este configurat pentru a funcționa cu pinii Uno. Dacă utilizați MKR1010, adăugați următoarele linii între liniile 80 și 81.
Corecții pentru 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_RST) 81 plutitor p = 3,1415926;
Salvați exemplul graphicstest modificat. Conectați Arduino la computer dacă nu ați făcut încă acest lucru. Accesați Instrumente → Placă și Instrumente → Port pentru a verifica dacă computerul poate găsi Arduino. Accesați Schiță → Încărcare. Dacă exemplul funcționează, afișajul va afișa linii, dreptunghiuri, text și demo-ul complet. Tutorialul Adafruit oferă mai multe detalii dacă este necesară depanarea.
Pasul 4: Codul magnetometrului
Descărcați codul atașat și deschideți-l în mediul de dezvoltare Arduino.
Acest program folosește șase funcții:
Setup () inițializează afișajul
Bucla () conține bucla principală a programului. Înnegrește ecranul, desenează axele, citește intrările și desenează săgeata reprezentând vectorul câmpului magnetic. Are o rată de reîmprospătare de o secundă care poate fi modificată modificând linia 127
DrawAxes3d () desenează și etichetează axele x, y și z
DrawArrow3d () preia o intrare x, y și z variind de la 0 la 1023. Din aceste valori, calculează punctele finale ale săgeții în spațiu. Apoi, folosește funcțiile isometricxx () și isometricyy () pentru a calcula punctele finale de pe ecran. În cele din urmă, desenează săgeata și imprimă tensiunile pe partea de jos a ecranului
Isometricxx () găsește coordonata x a proiecției izometrice. Prinde coordonatele x, y și z ale unui punct și returnează locația corespunzătoare x pixel pe ecran
Isometricyy () găsește coordonata y a proiecției izometrice. Prinde coordonatele x, y și z ale unui punct și returnează locația y pixel corespunzătoare pe ecran
Înainte de a rula codul, trebuie să specificăm ce pini să utilizăm pentru comunicarea SPI cu afișajul și trebuie să specificăm tensiunea sursei pentru senzori. Dacă utilizați MKR1010, comentați liniile 92-96, precum și linia 110. Apoi, decomentați liniile 85-89, precum și linia 108. Dacă utilizați Uno, comentați liniile 85-89, precum și linia 108 Apoi, descomentați liniile 92-96, precum și linia 110.
Încărcați codul, Schiță → Încărcați.
Ar trebui să vedeți axele x, y și z în roșu. O săgeată verde cu un cerc albastru pentru vârf reprezintă vectorul câmpului magnetic la senzori. Citirile de tensiune sunt afișate în stânga jos. Pe măsură ce apropiați un magnet de senzori, citirile tensiunii ar trebui să se schimbe, iar dimensiunea săgeții ar trebui să crească.
Pasul 5: Munca viitoare
Următorul pas ar fi calibrarea dispozitivului. Fișa tehnică a senzorului oferă informații despre cum să convertiți valorile brute ale tensiunii senzorului în intensitatea câmpului magnetic. Calibrarea poate fi verificată comparând cu un magnetometru mai precis.
Magneții permanenți interacționează cu firele de transport curente. Sârmele din apropierea afișajului și din Arduino generează câmpuri magnetice care ar putea afecta citirile senzorilor. În plus, dacă acest dispozitiv este utilizat pentru a măsura în apropierea unui magnet permanent puternic, câmpul magnetic de la dispozitivul supus testului va interacționa cu, va introduce zgomot și, eventual, va deteriora Arduino și afișajul. Protecția ar putea face acest magnetometru mai robust. Arduino poate rezista la câmpuri magnetice mai mari dacă este protejat într-o cutie metalică și va fi introdus mai puțin zgomot dacă cablurile ecranate conectează senzorii în loc de fire goale.
Câmpul magnetic este o funcție de poziție, deci este diferit în fiecare punct al spațiului. Acest dispozitiv utilizează trei senzori, unul pentru a măsura componenta x, y și z a câmpului magnetic într-un punct. Senzorii sunt aproape unul de altul, dar nu într-un singur punct, iar acest lucru limitează rezoluția magnetometrului. Ar fi bine să salvați citirile câmpului magnetic în diferite puncte, apoi să le afișați ca o serie de săgeți în locațiile corespunzătoare. Cu toate acestea, acesta este un proiect pentru o altă zi.
Referințe
Informații despre bibliotecile de grafică Adafruit Arduino
https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview
Vizualizare câmp magnetic
https://www.falstad.com/vector3dm/
Informații despre senzorii de efect Hall și senzori de efect Hall
- https://sensing.honeywell.com/index.php?ci_id=47847
- https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx
Informații despre proiecția izometrică
- https://en.wikipedia.org/wiki/3D_projection
- https://en.wikipedia.org/wiki/Isometric_projection
Recomandat:
Cum: Instalarea Raspberry PI 4 Headless (VNC) cu Rpi-imager și imagini: 7 pași (cu imagini)
Cum: Instalarea Raspberry PI 4 Headless (VNC) cu Rpi-imager și Pictures: Plănuiesc să folosesc acest Rapsberry PI într-o grămadă de proiecte distractive din blogul meu. Simțiți-vă liber să o verificați. Am vrut să mă întorc să folosesc Raspberry PI, dar nu aveam tastatură sau mouse în noua mea locație. A trecut ceva timp de când am configurat un Raspberry
Magnetometru portabil: 7 pași (cu imagini)
Magnetometru portabil: Un magnetometru, numit uneori și Gaussmeter, măsoară puterea câmpului magnetic. Este un instrument esențial pentru a testa puterea magneților și a electro-magneților permanenți și pentru a înțelege forma câmpului configurațiilor magnetului nontrivial
Cameră cu infrarosu cu imagini termice DIY: 3 pași (cu imagini)
Cameră cu infrarosu cu imagini termice DIY: Bună ziua! Caut mereu proiecte noi pentru lecțiile mele de fizică. Acum doi ani am dat peste un raport despre senzorul termic MLX90614 de la Melexis. Cel mai bun cu doar 5 ° FOV (câmp vizual) ar fi potrivit pentru o cameră termică făcută de sine. Pentru a citi
Cum să dezasamblați un computer cu pași și imagini ușoare: 13 pași (cu imagini)
Cum să dezasamblați un computer cu pași și imagini ușoare: Aceasta este o instrucțiune despre cum să dezasamblați un computer. Majoritatea componentelor de bază sunt modulare și ușor de îndepărtat. Cu toate acestea, este important să fiți organizat în acest sens. Acest lucru vă va ajuta să nu vă pierdeți piese și, de asemenea, să faceți reasamblarea
Simulator de jocuri SmartPhone - Joacă jocuri Windows folosind controlul gesturilor IMU, accelerometru, giroscop, magnetometru: 5 pași
Simulator de jocuri SmartPhone - Joacă jocuri Windows folosind controlul gesturilor IMU, accelerometru, giroscop, magnetometru: Sprijină acest proiect: https://www.paypal.me/vslcreations donând la coduri open-source & sprijin pentru dezvoltarea ulterioară