- Nødvendig materiale
- Hva er et magnetometer og hvordan fungerer det?
- Hvordan fungerer HMC5883L sensormodulen
- Kretsdiagram
- Fabrikasjon av PCB for Digital Compass
- Montering av PCB
- Programmering av Arduino
Menneskets hjerne er bygget av komplekse lag med strukturer som hjelper oss å være en dominerende art på jorden. For eksempel kan entorhinal cortex i hjernen din gi deg en følelse av retning som hjelper deg med å navigere lett gjennom steder du ikke er kjent med. Men i motsetning til oss trenger roboter og ubemannede Ariel-kjøretøy noe for å få denne følelsen av retning, slik at de kan manøvrere autonomt i nye terreng og landskap. Forskjellige roboter bruker forskjellige typer sensorer for å oppnå dette, men den ofte brukte er et magnetometer som kan informere roboten i hvilken geografisk retning den for øyeblikket vender mot. Dette vil ikke bare hjelpe roboten å ane retning, men også å svinge i en forhåndsdefinert retning og engel.
Siden sensoren kunne indikere det geografiske Nord, Sør, Øst og Vest, kunne vi mennesker også bruke det til tider når det er nødvendig. Så i denne artikkelen, la oss prøve å forstå hvordan magnetometersensoren fungerer, og hvordan vi kan grensesnittet med en mikrokontroller som Arduino. Her vil vi bygge et kult digitalt kompass som vil hjelpe oss med å finne veibeskrivelsen ved å gløde en LED som peker mot nordretningen. Dette digitale kompasset er pent produsert på PCB fra PCBGOGO, slik at jeg kan bære det neste gang jeg drar ut i naturen og ønsker at jeg vil gå seg vill bare for å bruke denne tingen til å finne veien hjem. La oss komme i gang.
Nødvendig materiale
- Arduino Pro mini
- HMC5883L Magnetometersensor
- LED-lys - 8Nr
- 470Ohm motstand - 8Nr
- Fat Jack
- En pålitelig PCB-produsent som PCBgogo
- FTDI programmerer for mini
- PC / bærbar PC
Hva er et magnetometer og hvordan fungerer det?
Før vi dykker inn i kretsen, la oss forstå litt om magnetometer og hvordan de fungerer. Som navnet antyder refererer ikke begrepet Magneto til den sprø mutanten i vidunder som kunne kontrollere metaller ved å bare spille piano i luften. Åh! Men jeg liker den fyren, han er kult.
Magnetometer er faktisk et utstyr som kan fornemme jordens magnetiske poler og peke retningen i henhold til det. Vi vet alle at jorden er et enormt stykke sfærisk magnet med Nordpolen og Sydpolen. Og det er magnetfelt på grunn av det. Et magnetometer registrerer dette magnetfeltet, og basert på retningen til magnetfeltet kan det oppdage retningen vi vender mot.
Hvordan fungerer HMC5883L sensormodulen
Den HMC5883L være et magnetometer sensor gjør det samme. Den har HMC5883L IC på den som er fra Honeywell. Denne IC har 3 magnetoresistive materialer inni som er ordnet i aksene x, y og z. Mengden strøm som strømmer gjennom disse materialene er følsom for jordens magnetfelt. Så ved å måle endringen i strømmen som strømmer gjennom disse materialene, kan vi oppdage endringen i jordens magnetfelt. Når endringen er magnetfeltet er absorbert, kan verdiene sendes til en hvilken som helst innebygd kontroller som en mikrokontroller eller prosessor gjennom I2C-protokollen.
Siden sensoren fungerer ved å registrere magnetfeltet, vil utgangsverdiene bli sterkt påvirket hvis et metall plasseres i nærheten. Denne oppførselen kan brukes til å bruke disse sensorene også som metalldetektorer. Det må utvises forsiktighet for ikke å bringe magneter nær denne sensoren, siden det sterke magnetfeltet fra en magnet kan utløse falske verdier på sensoren.
Forskjellen mellom HMC5883L og QMC5883L
Det er en vanlig forvirring som dreier seg om disse sensorene for mange nybegynnere. Dette er fordi noen leverandører (faktisk de fleste) selger QMC5883L-sensorene i stedet for den originale HMC5883L fra Honeywell. Det er hovedsakelig fordi QMC5883L er mye billigere enn HMC5883L-modulen. Den triste delen er at arbeidet til disse to sensorene er litt forskjellige, og den samme koden kan ikke brukes til begge. Dette er fordi I2C-adressen til begge sensorene ikke er den samme. Koden i denne veiledningen fungerer bare for QMC5883L, den vanlig tilgjengelige sensormodulen.
For å vite hvilken modell av sensoren du har, må du bare se nøye på selve IC-en for å lese hva som står på toppen av den. Hvis det er skrevet noe som L883, er det HMC58836L, og hvis det er skrevet noe som DA5883, er det QMC5883L IC. Begge modulene er vist på bildet nedenfor for å gjøre det lettere å understreke.
Kretsdiagram
Kretsen for dette Arduino-baserte digitale kompasset er ganske enkel, vi må rett og slett grensesnitt HMC5883L-sensoren med Arduino og koble 8 lysdioder til GPIO-pinnene på Arduino Pro mini. Hele kretsskjemaet er vist nedenfor
Den Sensordel har 5 pins ut av hvor DRDY (Data Ready) er ikke brukt i vårt prosjekt siden vi opererer sensoren i kontinuerlig modus. Vcc og jordpinne brukes til å drive modulen med 5V fra Arduino-kortet. SCL og SDA er I2C-kommunikasjonsbusslinjene som er koblet til henholdsvis A4- og A5 I2C-pinnene på Arduino Pro mini. Siden selve modulen har en trekkhøy motstand på linjene, er det ikke nødvendig å legge dem til eksternt.
For å indikere retningen har vi brukt 8 lysdioder som alle er koblet til GPIO-pinnene til Arduino gjennom en strømbegrensende motstand på 470 ohm. Komplett krets drives av et 9V batteri gjennom fat Jack. Denne 9V leveres direkte til Vin-pinnen på Arduino hvor den reguleres til 5V ved hjelp av den innebygde regulatoren på Arduino. Denne 5V brukes deretter til å drive sensoren og Arduino også.
Fabrikasjon av PCB for Digital Compass
Ideen med kretsen er å plassere de 8 lysdiodene på en sirkulær måte slik at hver led peker alle de 8 retningene, henholdsvis Nord, Nord-Øst, Øst, Sør-Øst, Sør, Sør-Vest, Vest og Nordvest. Så det er ikke lett å ordne dem pent på et brødbrett eller til og med på et perfebrett for den saks skyld. Å utvikle et PCB for denne kretsen vil gjøre det ser mer pent og enkelt å bruke. Så jeg åpnet PCB-designprogramvaren min og plasserte lysdiodene og motstanden i et pent sirkulært mønster og koblet sporene for å danne forbindelsene. Designet mitt så omtrent slik ut nedenfor når det var ferdig. Du kan også laste ned Gerber-filen fra lenken nedenfor.
- Last ned Gerber-fil for Digital Compass PCB
Jeg har designet den til å være et dobbelt sidebrett siden jeg vil at Arduino skal være på undersiden av PCB-en, slik at den ikke ødelegger utseendet på PCB-en. Hvis du er bekymret for at du må betale høyt for en dobbeltsidig PCB, så vent på at jeg fikk god nyhet.
Nå som vårt design er klart, er det på tide å få dem fabrikert. For å få PCB ferdig er ganske enkelt, følg bare trinnene nedenfor
Trinn 1: Gå inn på www.pcbgogo.com, registrer deg hvis dette er første gang. Deretter skriver du inn dimensjonene på PCB, antall lag og antall PCB du trenger i kategorien PCB Prototype. PCB-en min er 80cm × 80cm, så fanen ser slik ut nedenfor
Trinn 2: Fortsett ved å klikke på Sitat nå- knappen. Du vil bli ført til en side der du kan angi noen ekstra parametere hvis nødvendig, som materialet som brukes sporavstand osv. Men for det meste vil standardverdiene fungere bra. Det eneste vi må vurdere her er pris og tid. Som du kan se, er byggetiden bare 2-3 dager, og det koster bare $ 5 for PSB. Du kan deretter velge en foretrukket fraktmetode basert på dine krav.
Trinn 3: Det siste trinnet er å laste opp Gerber-filen og fortsette med betalingen. For å sikre at prosessen er jevn, verifiserer PCBGOGO om Gerber-filen din er gyldig før du fortsetter med betalingen. På denne måten kan du være sikker på at PCB-en din er fabrikasjonsvennlig og vil nå deg som engasjert.
Montering av PCB
Etter at brettet var bestilt, nådde det meg etter noen dager, selv om bud i en pent merket, godt pakket eske, og som alltid var kvaliteten på PCB fantastisk. Jeg deler noen bilder av tavlene nedenfor slik at du kan dømme.
Jeg skrudde på loddestangen og begynte å montere brettet. Siden Footprints, pads, vias og silkscreen har perfekt form og størrelse, hadde jeg ikke noe problem å montere brettet. Brettet var klart på bare 10 minutter fra pakken ble pakket ut.
Få bilder av brettet etter lodding er vist nedenfor.
Programmering av Arduino
Nå som maskinvaren vår er klar, la oss se på programmet som må lastes opp på Arduino-kortet. Hensikten med koden er å lese dataene fra QMC5883L magnetometersensoren og konvertere den til grad (0 til 360). Når vi vet graden, må vi slå på en LED som peker en bestemt retning. Retningen jeg har brukt i dette programmet er nord. Så uansett hvor du er , vil det bare være en LED som lyser på brettet ditt, og retningen på LED-indikatoren vil indikere Nord-retningen. En gang senere kunne beregne den andre retningen er en retning er kjent.
Den komplette koden for dette Digital Compass Project finner du på slutten av denne siden. Du kan laste den opp direkte på tavlen din etter å ha inkludert biblioteket, og du er klar til å gå. Men hvis du vil vite det