- Material som krävs
- Vad är en magnetometer och hur fungerar den?
- Hur HMC5883L-sensormodulen fungerar
- Kretsschema
- Tillverkning av kretskort för digital kompass
- Montering av kretskortet
- Programmering av Arduino
Människans hjärna är uppbyggd av komplexa lager av strukturer som hjälper oss att vara en dominerande art på jorden. Exempelvis kan entorhinal cortex i din hjärna ge dig en känsla för riktning och hjälpa dig att navigera lätt genom platser som du inte känner till. Men till skillnad från oss behöver robotar och obemannade Ariel-fordon något för att få denna känsla för riktning så att de kan manövrera självständigt i nya terräng och landskap. Olika robotar använder olika typer av sensorer för att åstadkomma detta, men den vanligaste är en magnetometer som kan informera roboten i vilken geografisk riktning den för närvarande vänder sig mot. Detta hjälper inte bara roboten att känna riktning utan också att växla i en fördefinierad riktning och ängel.
Eftersom sensorn kan indikera det geografiska Nord-, Syd-, Öst- och Väst-området, kan vi människor också använda det ibland när det behövs. Så i den här artikeln ska vi försöka förstå hur magnetometersensorn fungerar och hur man gränssnitt den med en mikrokontroller som Arduino. Här kommer vi att bygga en cool digital kompass som hjälper oss att hitta riktningarna genom att lysa en LED som pekar mot nordlig riktning. Denna digitala kompass är snyggt tillverkad på PCB från PCBGOGO, så att jag kan bära den nästa gång jag går ut i naturen och önskar att jag skulle gå vilse bara för att använda den här saken för att hitta mig hem. Låt oss börja.
Material som krävs
- Arduino Pro mini
- HMC5883L magnetometersensor
- LED-lampor - 8Nr
- 470Ohm motstånd - 8Nos
- Fat Jack
- En pålitlig PCB-tillverkare som PCBgogo
- FTDI Programmerare för mini
- PC / bärbar dator
Vad är en magnetometer och hur fungerar den?
Innan vi dyker in i kretsen, låt oss förstå lite om magnetometer och hur de fungerar. Som namnet antyder hänvisar inte termen Magneto till den galna mutanten i underverk som kunde kontrollera metaller genom att bara spela piano i luften. Åh! Men jag gillar den killen, han är cool.
Magnetometer är faktiskt en utrustning som kan känna av jordens magnetiska poler och peka riktningen enligt det. Vi vet alla att jorden är en enorm bit sfärisk magnet med nordpolen och sydpolen. Och det finns magnetfält på grund av det. En magnetometer känner av detta magnetfält och baserat på magnetfältets riktning kan den detektera den riktning vi vänder mot.
Hur HMC5883L-sensormodulen fungerar
Den HMC5883L är en magnetometer sensor gör samma sak. Den har HMC5883L IC på den som kommer från Honeywell. Denna IC har 3 magnetresistiva material inuti vilka är ordnade i axlarna x, y och z. Mängden ström som strömmar genom dessa material är känslig för jordens magnetfält. Så genom att mäta förändringen i ström som flyter genom dessa material kan vi upptäcka förändringen i jordens magnetfält. När ändringen är magnetiskt fält absorberas kan värdena skickas till vilken inbäddad styrenhet som en mikrokontroller eller processor via I2C-protokollet.
Eftersom sensorn fungerar genom att känna av magnetfältet påverkas utgångsvärdena kraftigt om en metall placeras i närheten. Detta beteende kan utnyttjas för att använda dessa sensorer också som metalldetektorer. Var försiktig så att magneter inte kommer nära sensorn eftersom det starka magnetfältet från en magnet kan utlösa falska värden på sensorn.
Skillnad mellan HMC5883L och QMC5883L
Det finns en vanlig förvirring kring dessa sensorer för många nybörjare. Detta beror på att vissa leverantörer (faktiskt de flesta) säljer QMC5883L-sensorerna istället för den ursprungliga HMC5883L från Honeywell. Det beror främst på att QMC5883L är mycket billigare än HMC5883L-modulen. Det sorgliga är att dessa två sensorer fungerar lite annorlunda och att samma kod inte kan användas för båda. Detta beror på att I2C-adressen för båda sensorerna inte är densamma. Koden i denna handledning fungerar bara för QMC5883L, den allmänt tillgängliga sensormodulen.
För att veta vilken sensormodell du har behöver du bara titta upp på själva IC: n för att läsa vad som står ovanpå den. Om det är skrivet något som L883 är det HMC58836L och om det är skrivet något som DA5883 så är det QMC5883L IC. Båda modulerna visas i bilden nedan för enkel underdrift.
Kretsschema
Kretsen för denna Arduino-baserade digitala kompass är ganska enkel, vi måste helt enkelt koppla ihop HMC5883L-sensorn med Arduino och ansluta 8 lysdioder till GPIO-stiften på Arduino Pro mini. Det fullständiga kretsschemat visas nedan
Den Sensormodulen har 5 stift ur vars DRDY (Data Ready) inte används i vårt projekt, eftersom vi är verksamma sensorn i kontinuerligt läge. Vcc och jordstift används för att driva modulen med 5V från Arduino-kortet. SCL och SDA är I2C-kommunikationsbusslinjer som är anslutna till A4- och A5 I2C-stiften på Arduino Pro mini. Eftersom själva modulen har ett draghögt motstånd på linjerna, finns det inget behov av att lägga till dem externt.
För att ange riktningen har vi använt 8 lysdioder som alla är anslutna till GPIO-stiften på Arduino via ett strömbegränsningsmotstånd på 470 Ohm. Den kompletta kretsen drivs av ett 9V batteri genom fatuttaget. Denna 9V levereras direkt till Vin-stiftet i Arduino där den regleras till 5V med den inbyggda regulatorn på Arduino. Denna 5V används sedan för att driva sensorn och Arduino också.
Tillverkning av kretskort för digital kompass
Idén med kretsen är att placera de 8 lysdioderna på ett cirkulärt sätt så att varje Led pekar alla de 8 riktningarna, nämligen Nord, Nordost, Öst, Sydost, Syd, Sydväst, Väst respektive Nordväst. Så det är inte lätt att ordna dem snyggt på en brädbräda eller till och med på en perfekt bräda för den delen. Att utveckla ett kretskort för den här kretsen kommer att se det snyggare och lättare att använda. Så jag öppnade min PCB-designprogramvara och placerade lysdioderna och motståndet i ett snyggt cirkulärt mönster och kopplade spåren för att bilda anslutningarna. Min design såg ut så här nedan när den var klar. Du kan också ladda ner Gerber-filen från länken nedan.
- Ladda ner Gerber-fil för Digital Compass PCB
Jag har utformat det för att vara ett dubbelt sidokort eftersom jag vill att Arduino ska vara på undersidan av min PCB så att den inte förstör utseendet ovanpå mitt PCB. Om du oroar dig för att du måste betala högt för en dubbelsidig kretskort, vänta så har jag fått bra nytt.
Nu när vår design är klar är det dags att få dem tillverkade. För att få PCB gjort är ganska enkelt, följ bara stegen nedan
Steg 1: Gå in på www.pcbgogo.com, registrera dig om det är första gången. På fliken PCB Prototype anger du måtten på din PCB, antalet lager och antalet PCB du behöver. Mitt kretskort är 80 cm × 80 cm så fliken ser ut så här nedan
Steg 2: Fortsätt genom att klicka på knappen Citera nu . Du kommer till en sida där du kan ställa in några ytterligare parametrar om det behövs, till exempel det material som används spåravstånd etc. Men vanligtvis fungerar standardvärdena bra. Det enda som vi måste tänka på här är pris och tid. Som du kan se är byggtiden bara 2-3 dagar och det kostar bara 5 USD för vår PSB. Du kan sedan välja en föredragen leveransmetod baserat på ditt krav.
Steg 3: Det sista steget är att ladda upp Gerber-filen och fortsätta med betalningen. För att säkerställa att processen är smidig verifierar PCBGOGO om din Gerber-fil är giltig innan du fortsätter med betalningen. På så sätt kan du vara säker på att din PCB är tillverkningsvänlig och når dig som engagerad.
Montering av kretskortet
Efter att tavlan beställdes nådde den mig efter några dagar, även om kurir i en prydligt märkt välpackad låda och som alltid var PCB-kvaliteten fantastisk. Jag delar några bilder av brädorna nedan så att du kan bedöma.
Jag slog på min lödstång och började montera brädet. Eftersom Footprints, kuddar, vias och silkscreen har perfekt form och storlek hade jag inga problem att montera kortet. Brädet var klart på bara tio minuter från uppackningen.
Få bilder av brädet efter lödning visas nedan.
Programmering av Arduino
Nu när vår hårdvara är klar, låt oss titta på programmet som måste laddas upp till vårt Arduino-kort. Syftet med koden är att läsa data från QMC5883L magnetometersensorn och konvertera den till grad (0 till 360). När vi väl vet graden måste vi sätta på en LED som pekar en viss riktning. Den riktning jag har använt i det här programmet är norrut. Så oavsett var du är kommer det bara att lysa en LED på ditt bräde och LED-riktningen kommer att indikera NORD-riktningen. En gång senare kunde beräkna den andra riktningen är en riktning är känd.
Den fullständiga koden för detta Digital Compass-projekt hittar du i slutet av denna sida. Du kan ladda upp den direkt på din tavla efter att ha inkluderat biblioteket och du är redo att gå. Men om du vill veta