- Materiale necesare
- Ce este un magnetometru și cum funcționează?
- Cum funcționează modulul senzor HMC5883L
- Diagrama circuitului
- Fabricarea PCB-urilor pentru busola digitală
- Asamblarea PCB-ului
- Programarea Arduino
Creierul uman este construit dintr-un strat complex de structuri care ne ajută să fim o specie dominantă pe pământ. De exemplu, cortexul entorhinal din creierul dvs. vă poate oferi un sentiment de direcție, ajutându-vă să navigați cu ușurință prin locuri cu care nu sunteți familiarizați. Dar, spre deosebire de noi, roboții și vehiculele Ariel fără pilot au nevoie de ceva pentru a obține acest sentiment de direcție, astfel încât să poată manevra autonom pe terenuri și peisaje noi. Diferi roboți folosesc diferite tipuri de senzori pentru a realiza acest lucru, dar cel mai frecvent utilizat este un magnetometru, care ar putea informa robotul în ce direcție geo-grafică se confruntă în prezent. Acest lucru nu numai că va ajuta robotul să simtă direcția, ci și să se transforme într-o direcție predefinită și înger.
Deoarece senzorul ar putea indica geo-graficele Nord, Sud, Est și Vest, noi, oamenii, l-am putea folosi și în anumite momente când este necesar. Deci, în acest articol, să încercăm să înțelegem cum funcționează senzorul magnetometrului și cum să-l interfațăm cu un microcontroler precum Arduino. Aici vom construi o busolă digitală rece, care ne va ajuta să găsim direcțiile prin aprinderea unui LED care indică direcția nord. Această busolă digitală este fabricată pe PCB de la PCBGOGO, astfel încât să o pot transporta data viitoare când ies în sălbăticie și îmi doresc să mă pierd doar pentru a folosi acest lucru pentru a găsi drumul înapoi acasă. Să începem.
Materiale necesare
- Arduino Pro mini
- Senzor magnetometru HMC5883L
- Luminile cu LED - 8Nos
- Rezistor 470Ohm - 8Nos
- Barrel Jack
- Un producător de PCB de încredere precum PCBgogo
- Programator FTDI pentru mini
- PC / laptop
Ce este un magnetometru și cum funcționează?
Înainte de a ne scufunda în circuit, să înțelegem puțin despre magnetometru și cum funcționează acestea. După cum sugerează și numele, termenul Magneto nu se referă la acel mutant nebun din minune care ar putea controla metalele doar cântând la pian în aer. Ohh! Dar îmi place tipul ăla pe care îl mișcă.
Magnetometrul este de fapt o piesă de echipament care ar putea simți polii magnetici ai pământului și ar putea indica direcția în funcție de aceasta. Știm cu toții că Pământul este o bucată imensă de magnet sferic cu Polul Nord și Polul Sud. Și există câmp magnetic din cauza acestuia. Un magnetometru detectează acest câmp magnetic și pe baza direcției câmpului magnetic poate detecta direcția spre care ne confruntăm.
Cum funcționează modulul senzor HMC5883L
HMC5883L fiind un senzor magnetometru face același lucru. Are IC HMC5883L, care este de la Honeywell. Acest CI are 3 materiale magneto-rezistive în interiorul cărora sunt dispuse în axele x, y și z. Cantitatea de curent care curge prin aceste materiale este sensibilă la câmpul magnetic al Pământului. Deci, măsurând schimbarea curentului care curge prin aceste materiale putem detecta schimbarea câmpului magnetic al Pământului. Odată ce modificarea este absorbită de câmpul magnetic, valorile pot fi apoi trimise către orice controler încorporat, cum ar fi un microcontroler sau procesor, prin protocolul I2C.
Deoarece senzorul funcționează prin detectarea câmpului magnetic, valorile de ieșire vor fi foarte afectate dacă un metal este plasat în apropiere. Acest comportament poate fi valorificat pentru a utiliza acești senzori și ca detectoare de metale. Trebuie avut grijă să nu apropiați magneții de acest senzor, deoarece câmpul magnetic puternic al unui magnet ar putea declanșa valori false pe senzor.
Diferența dintre HMC5883L și QMC5883L
Există o confuzie comună care se învârte în jurul acestor senzori pentru mulți începători. Acest lucru se datorează faptului că unii furnizori (de fapt, cei mai mulți) vând senzorii QMC5883L în loc de HMC5883L original de la Honeywell. Acest lucru se datorează în principal faptului că QMC5883L este mult mai ieftin decât modulul HMC5883L. Partea tristă este că funcționarea acestor doi senzori este ușor diferită și același cod nu poate fi folosit pentru ambii. Acest lucru se datorează faptului că adresa I2C a ambilor senzori nu este aceeași. Codul dat în acest tutorial va funcționa numai pentru modulul senzor QMC5883L disponibil în mod obișnuit.
Pentru a ști ce model de senzor aveți, trebuie doar să vă uitați cu atenție la IC-ul în sine pentru a citi ceea ce este scris deasupra acestuia. Dacă este scris ceva de genul L883, atunci este HMC58836L și dacă este scris ceva de genul DA5883, atunci este QMC5883L IC. Ambele module sunt prezentate în imaginea de mai jos pentru a fi ușor de subevaluat.
Diagrama circuitului
Circuitul pentru această busolă digitală bazată pe Arduino este destul de simplu, trebuie pur și simplu să interfațăm senzorul HMC5883L cu Arduino și să conectăm 8 LED-uri la pinii GPIO ai Arduino Pro mini. Schema completă a circuitului este prezentată mai jos
Modulul senzor are 5 pini din din care DRDY (Ready) nu este utilizat în proiectul nostru din moment ce funcționează senzorul în mod continuu. Vcc și pinul de masă sunt utilizate pentru a alimenta modulul cu 5V de pe placa Arduino. SCL și SDA sunt liniile magistralei de comunicații I2C care sunt conectate la pinii A4 și A5 I2C ai Arduino Pro mini. Deoarece modulul în sine are o rezistență ridicată pe linii, nu este nevoie să le adăugați extern.
Pentru a indica direcția, am folosit 8 LED-uri, toate conectate la pinii GPIO ai Arduino printr-un rezistor de limitare a curentului de 470 Ohmi. Circuitul complet este alimentat de o baterie de 9V prin intermediul butoiului Jack. Acest 9V este furnizat direct pinului Vin al Arduino unde este reglat la 5V folosind regulatorul de pe Arduino. Acest 5V este apoi utilizat pentru a alimenta senzorul și Arduino.
Fabricarea PCB-urilor pentru busola digitală
Ideea circuitului este plasarea celor 8 LED-uri într-un mod circular, astfel încât fiecare Led să indice toate cele 8 direcții și anume Nord, Nord-Est, Est, Sud-Est, Sud, Sud-Vest, Vest și respectiv Nord-Vest. Așadar, nu este ușor să le aranjați cu grijă pe o placă sau chiar pe o placă de perfecționare. Dezvoltarea unui PCB pentru acest circuit îl va face să pară mai îngrijit și mai ușor de utilizat. Așa că mi-am deschis software-ul de proiectare PCB și am plasat LED-urile și rezistența într-un model circular îngrijit și am conectat pistele pentru a forma conexiunile. Designul meu arăta cam așa mai jos când a fost finalizat. De asemenea, puteți descărca fișierul Gerber de pe linkul de mai jos.
- Descărcați fișierul Gerber pentru PCB digital Compass
Am conceput-o să fie o placă laterală dublă, deoarece vreau ca Arduino să fie în partea de jos a PCB-ului meu, astfel încât să nu strice aspectul de pe partea superioară a PCB-ului meu. Dacă vă faceți griji că trebuie să plătiți pentru o placă dublă, atunci rețineți că am o nouă venire bună.
Acum, când Designul nostru este gata, este timpul să le fabricăm. Pentru a realiza PCB-ul este destul de ușor, pur și simplu urmați pașii de mai jos
Pasul 1: intrați pe www.pcbgogo.com, înscrieți-vă dacă este prima dată. Apoi, în fila Prototip PCB introduceți dimensiunile PCB-ului, numărul de straturi și numărul de PCB de care aveți nevoie. PCB-ul meu are 80cm × 80cm, deci fila arată așa mai jos
Pasul 2: Continuați făcând clic pe butonul Cotați acum . Veți fi direcționat către o pagină în care să setați câțiva parametri suplimentari, dacă este necesar, cum ar fi materialul utilizat pentru spațierea pistelor etc. Dar, în general, valorile implicite vor funcționa bine. Singurul lucru pe care trebuie să-l luăm în considerare aici este prețul și timpul. După cum puteți vedea, timpul de construire este de numai 2-3 zile și costă doar 5 USD pentru PSB-ul nostru. Apoi puteți selecta o metodă de expediere preferată în funcție de cerința dvs.
Pasul 3: ultimul pas este să încărcați fișierul Gerber și să continuați plata. Pentru a vă asigura că procesul este ușor, PCBGOGO verifică dacă fișierul dvs. Gerber este valid înainte de a continua plata. În acest fel, vă puteți asigura că PCB-ul dvs. este prietenos cu fabricarea și vă va ajunge la fel de angajat.
Asamblarea PCB-ului
După ce placa a fost comandată, a ajuns la mine după câteva zile, deși curierul într-o cutie bine ambalată bine etichetat și ca întotdeauna calitatea PCB-ului a fost minunată. Îți împărtășesc câteva fotografii cu tablele de mai jos pentru ca tu să le judeci.
Mi-am pornit tija de lipit și am început să asamblez placa. Deoarece amprentele, tampoanele, via-urile și serigrafia sunt perfect de forma și dimensiunea potrivită, nu am avut probleme la asamblarea plăcii. Placa era gata în doar 10 minute de la momentul despachetării cutiei.
Puține imagini ale plăcii după lipire sunt prezentate mai jos.
Programarea Arduino
Acum că hardware-ul nostru este gata, să ne uităm la programul care trebuie încărcat pe placa noastră Arduino. Scopul codului este de a citi datele de la senzorul magnetometrului QMC5883L și de a le converti în grade (0 la 360). Odată ce cunoaștem gradul, trebuie să aprindem un LED care indică o direcție specifică. Direcția pe care am folosit-o în acest program este nordică. Deci, indiferent de locul în care vă aflați , va exista doar un LED luminos pe placa dvs. și direcția LED-ului va indica direcția NORD. Odată ce s-ar putea calcula mai târziu cealaltă direcție este cunoscută o direcție.
Codul complet pentru acest proiect Digital Compass poate fi găsit la sfârșitul acestei pagini. Puteți să îl încărcați direct pe tablă după ce includeți biblioteca și sunteți gata de plecare. Dar, dacă vreți să știți