- Vereiste materialen
- Wat is een magnetometer en hoe werkt het?
- Hoe de HMC5883L-sensormodule werkt
- Schakelschema
- Fabricage van de printplaten voor het digitale kompas
- De printplaat in elkaar zetten
- Programmeren van de Arduino
Het menselijk brein is opgebouwd uit een complexe laag van structuren die ons helpen een dominante soort op aarde te zijn. De entorinale cortex in uw hersenen kan u bijvoorbeeld een richtingsgevoel geven, waardoor u gemakkelijk door plaatsen kunt navigeren die u niet kent. Maar in tegenstelling tot ons hebben robots en onbemande Ariel-voertuigen iets nodig om dit richtingsgevoel te krijgen, zodat ze autonoom kunnen manoeuvreren op nieuwe terreinen en landschappen. Verschillende robots gebruiken verschillende soorten sensoren om dit te bereiken, maar de meest gebruikte is een magnetometer, die de robot zou kunnen informeren in welke geografische richting hij momenteel kijkt. Dit zal de robot niet alleen helpen om richting te voelen, maar ook om beurten in een vooraf gedefinieerde richting en engel te nemen.
Omdat de sensor de geografische Noord, Zuid, Oost en West kan aangeven, kunnen wij mensen hem ook op momenten gebruiken als dat nodig is. Dus laten we in dit artikel proberen te begrijpen hoe de magnetometersensor werkt en hoe we deze kunnen koppelen aan een microcontroller zoals Arduino. Hier zullen we een cool digitaal kompas bouwen dat ons zal helpen bij het vinden van de richtingen door een LED te laten branden die naar het noorden wijst. Dit digitale kompas is netjes op PCB gefabriceerd van PCBGOGO, zodat ik het de volgende keer kan dragen als ik de wildernis in ga en zou willen dat ik verdwaald zou raken door dit ding te gebruiken om de weg naar huis te vinden. Laten we beginnen.
Vereiste materialen
- Arduino Pro mini
- HMC5883L Magnetometersensor
- LED-verlichting - 8 nrs
- 470 Ohm weerstand - 8 nrs
- Barrel Jack
- Een betrouwbare PCB-fabrikant zoals PCBgogo
- FTDI Programmer voor mini
- PC / laptop
Wat is een magnetometer en hoe werkt het?
Laten we, voordat we het circuit induiken, wat meer te weten komen over de magnetometer en hoe ze werken. Zoals de naam suggereert, verwijst de term Magneto niet naar die gekke mutant in wonder die metalen kon beheersen door gewoon piano te spelen in de lucht. Ohh! Maar ik vind die vent leuk, hij is cool.
Magnetometer is eigenlijk een apparaat dat de magnetische polen van de aarde kan detecteren en de richting daarop kan wijzen. We weten allemaal dat de aarde een enorm stuk sferische magneet is met de noordpool en de zuidpool. En daardoor is er een magnetisch veld. Een magnetometer detecteert dit magnetische veld en kan op basis van de richting van het magnetische veld de richting waarin we kijken detecteren.
Hoe de HMC5883L-sensormodule werkt
De HMC5883L als magnetometersensor doet hetzelfde. Het heeft de HMC5883L IC erop die van Honeywell is. Dit IC heeft 3 magneto-resistieve materialen binnenin die zijn gerangschikt in de assen x, y en z. De hoeveelheid stroom die door deze materialen vloeit, is gevoelig voor het aardmagnetische veld. Dus door de verandering in stroom die door deze materialen vloeit te meten, kunnen we de verandering in het aardmagnetisch veld detecteren. Zodra de verandering het magnetische veld is, kunnen de waarden via het I2C-protocol naar elke ingebouwde controller, zoals een microcontroller of processor, worden gestuurd.
Omdat de sensor werkt door het magnetische veld te detecteren, zullen de outputwaarden sterk worden beïnvloed als er een metaal in de buurt wordt geplaatst. Dit gedrag kan worden benut om deze sensoren ook als metaaldetector te gebruiken. Zorg ervoor dat u geen magneten in de buurt van deze sensor brengt, aangezien het sterke magnetische veld van een magneet valse waarden op de sensor kan veroorzaken.
Verschil tussen HMC5883L en QMC5883L
Bij veel beginners bestaat er een algemene verwarring rond deze sensoren. Dit komt omdat sommige leveranciers (eigenlijk de meeste) de QMC5883L-sensoren verkopen in plaats van de originele HMC5883L van Honeywell. Dit komt vooral doordat de QMC5883L veel goedkoper is dan de HMC5883L-module. Het trieste is dat de werking van deze twee sensoren iets anders is en dat dezelfde code niet voor beide kan worden gebruikt. Dit komt doordat het I2C-adres van beide sensoren niet hetzelfde is. De code die in deze tutorial wordt gegeven, werkt alleen voor QMC5883L, de algemeen verkrijgbare sensormodule.
Om te weten welk model sensor u heeft, hoeft u alleen maar goed naar het IC zelf te kijken om te lezen wat er bovenop staat. Als het zoiets als L883 is geschreven, is het de HMC58836L en als het zoiets is geschreven als DA5883 dan is het de QMC5883L IC. Beide modules worden in onderstaande afbeelding getoond om gemakkelijk te onderschatten.
Schakelschema
Het circuit voor dit op Arduino gebaseerde digitale kompas is vrij eenvoudig, we hoeven alleen maar de HMC5883L-sensor te koppelen aan de Arduino en 8 LED's aan te sluiten op de GPIO-pinnen van de Arduino Pro mini. Het volledige schakelschema wordt hieronder weergegeven
De sensormodule heeft 5 pinnen waarvan de DRDY (Data Ready) niet wordt gebruikt in ons project omdat we de sensor in continue modus gebruiken. De Vcc en aardingspin worden gebruikt om de module te voeden met 5V vanaf het Arduino-bord. De SCL en SDA zijn de I2C-communicatiebuslijnen die respectievelijk zijn verbonden met de A4- en A5 I2C-pinnen van de Arduino Pro mini. Omdat de module zelf een hoge trekweerstand op de lijnen heeft, is het niet nodig om ze extern toe te voegen.
Om de richting aan te geven hebben we 8 LED's gebruikt die allemaal zijn verbonden met de GPIO-pinnen van de Arduino via een stroombegrenzende weerstand van 470 Ohm. Het complete circuit wordt gevoed door een 9V-batterij via de barrel-jack. Deze 9V wordt rechtstreeks aan de Vin-pin van de Arduino geleverd, waar het wordt geregeld tot 5V met behulp van de ingebouwde regelaar op Arduino. Deze 5V wordt vervolgens gebruikt om de sensor en de Arduino van stroom te voorzien.
Fabricage van de printplaten voor het digitale kompas
Het idee van het circuit is om de 8 LED's op een cirkelvormige manier te plaatsen, zodat elke Led alle 8 richtingen wijst, namelijk respectievelijk Noord, Noordoost, Oost, Zuidoost, Zuid, Zuidwest, West en Noordwest. Het is dus niet eenvoudig om ze netjes op een breadboard of zelfs op een perfboard te plaatsen. Door een printplaat voor dit circuit te ontwikkelen, ziet het er netter en gebruiksvriendelijker uit. Dus opende ik mijn PCB-ontwerpsoftware en plaatste de LED's en weerstand in een keurig cirkelvormig patroon en verbond de sporen om de verbindingen te vormen. Mijn ontwerp zag er na voltooiing ongeveer zo uit. U kunt ook het Gerber-bestand downloaden via de onderstaande link.
- Download Gerber-bestand voor Digital Compass PCB
Ik heb het ontworpen als een dubbel zijbord, omdat ik wil dat de Arduino in de onderkant van mijn printplaat zit, zodat het de look bovenop mijn printplaat niet bederft. Als je je zorgen maakt dat je hoog moet betalen voor een dubbelzijdige PCB, wacht dan even, ik heb goede nieuwe komst.
Nu ons ontwerp klaar is, is het tijd om ze te laten fabriceren. Om de printplaat klaar te krijgen, is het vrij eenvoudig, volg gewoon de onderstaande stappen
Stap 1: Ga naar www.pcbgogo.com, meld u aan als dit de eerste keer is. Voer vervolgens op het tabblad PCB Prototype de afmetingen van uw PCB, het aantal lagen en het aantal PCB's dat u nodig heeft in. Mijn printplaat is 80 cm x 80 cm, dus de tab ziet er als volgt uit
Stap 2: Ga verder door op de knop Nu citeren te klikken. U wordt naar een pagina geleid waar u indien nodig enkele aanvullende parameters kunt instellen, zoals het gebruikte materiaal voor de spoorafstand enz. Maar meestal werken de standaardwaarden prima. Het enige waar we hier rekening mee moeten houden, is de prijs en tijd. Zoals je kunt zien, is de bouwtijd slechts 2-3 dagen en kost het slechts $ 5 voor onze PSB. U kunt vervolgens een gewenste verzendmethode selecteren op basis van uw vereisten.
Stap 3: De laatste stap is om het Gerber-bestand te uploaden en door te gaan met de betaling. Om ervoor te zorgen dat het proces soepel verloopt, controleert PCBGOGO of uw Gerber-bestand geldig is alvorens verder te gaan met de betaling. Zo weet u zeker dat uw printplaat fabricagevriendelijk is en u als toegewijd zult bereiken.
De printplaat in elkaar zetten
Nadat het bord was besteld, bereikte het me na een paar dagen via een koerier in een keurig geëtiketteerde, goed verpakte doos en zoals altijd was de kwaliteit van de PCB geweldig. Ik deel enkele foto's van de borden hieronder om jullie te beoordelen.
Ik zette mijn soldeerstaaf aan en begon het bord te monteren. Omdat de Footprints, pads, via's en zeefdruk perfect de juiste vorm en maat hebben, had ik geen probleem met het monteren van het bord. Het bord was klaar in slechts 10 minuten na het uitpakken van de doos.
Enkele foto's van het bord na het solderen zijn hieronder weergegeven.
Programmeren van de Arduino
Nu onze hardware klaar is, gaan we eens kijken naar het programma dat naar ons Arduino-bord moet worden geüpload. Het doel van de code is om de gegevens van de magnetometersensor QMC5883L te lezen en om te zetten in graden (0 tot 360). Zodra we de mate weten, moeten we een LED inschakelen die een specifieke richting wijst. De richting die ik in dit programma heb gevolgd, is noord. Dus ongeacht waar je bent , zal er maar één LED op je bord branden en de richting van de LED geeft de NOORD-richting aan. Eens kon later de andere richting worden berekend, is de ene richting bekend.
De volledige code voor dit Digital Compass Project vindt u aan het einde van deze pagina. Je kunt het direct op je bord uploaden nadat je de bibliotheek hebt toegevoegd en je bent klaar om te gaan. Maar als je het wilt weten