Konfigurera, läsa data & kalibrera HMC5883L digital kompass med Python



Som i andra Bloggar innehåller här också information som kan hittas någon annanstans på webben. Jag strukturerade bara den så att den lätt att använda för början robot hobbyister.

Det är ganska enkelt att ansluta kompassen. Vid montering av sensorn till bot, vara medveten om den x-y-z markören på sensorn och försäkra att x-> pekar mot framsidan av bot.

Kompassen använder I2C-protokollet. Anslut givaren till (I2C-) GPIO stiften på Pi som följer:

  • Ansluta VCC till stift 1 (3.3.V)
  • Ansluta SDA till pin-3 (SDA = System Data)
  • Ansluta SCL-pin-5 (SCL = systemklocka)
  • Anslut GND till stift 7 (GND)

Först av alla Raspberry Pi behöver konfigureras för med I2C-protokollet. Detta är inaktiverat som standard på hallon. Du hittar en utmärkt tutorial på: https://learn.adafruit.com/adafruits-raspberry-pi...

När du testar den I2C anslutning som förklarade i slutet av den Adafruit lärdomen, 0x1e adressen kommer sannolikt att visas för den HMC5883L sensorn. Om du får en annan adress måste du ändra variabeln adress i skripten.

För att kalibrera kompassen måste bot vändas flera gånger. Detta kan göras för hand. Jag använde en roterande mellanmål display för att göra vrida bot, samtidigt som det övergripande, lätt.

Nästa steg läsa och visa data från sensorn. För detta använde jag ett mycket enkelt skript som kan hittas här:

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Hur du använder sensorn registrerar för binär läsning och skrivande kan hittas i databladet sensor och i skriptet. Jag tänker inte gå in på de detaljerna här. Skriptet initierar sensorn enligt följande:

  • 8 prover på 15 Hz,
  • LSb få 1,5 (standard),
  • Gauss 1090 (standard),
  • kontinuerlig provtagning,
  • skalning 0.92

Om du inte vill att dyka in i sensor egenskaper, bara lämna värdena som i skriptet. De är ganska allmänna och kommer att räcka för nästan alla situationer.

Nu skriptet läser x, y och z register, beräknar arcus tangens för x och y och omvandlar resultatet till grader. Köra bara skriptet och du får en första lagringen t.ex. 46.53891942 (46° 53' 89.2") börjar rotera bot tills du får nära till 0 grader. Sedan rotera den genom fyra 90° positioner, läsa sensordata vid varje steg. Du kan förmodligen se att värdena avviker inte och helt rätt.

Så låt oss räkna ut vad som händer. För detta kan du använda den nästa enkelt skriften:

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Skriptet samlar 500 läsningar och skriver värdena till en CSV-fil som enkelt kan importeras till Excel och ritas i ett diagram som spridda. Kör skriptet ( sudo python HMC5883L_calibrate_step_2.py ) och börja rotera bot tillbaka och framåt genom 360 ° när skriptet körs. Resultatet bör vara något som på bilden.

Nu är offset (bara en liten en i mitt fall) visualiseras. Att få ett mer specifikt värde för x och y offset, kan du använda tredje skriptet, som kan hittas här:

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Detta skript igen tar 500 läsning, håller lägsta och högsta värdena för x och y och beräknar förskjutningarna. Kör skriptet på samma sätt som tidigare manus, ständigt roterande bot. Du borde få något sånt här:

  • Minx:-212
  • miny:-246
  • Maxx: 262
  • Jesper: 239
  • x-förskjutning: 25
  • y-förskjutning: -4

Dessa avvikelser kan nu enkelt tillämpas på skriptet, som görs i det här exemplet:

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

(För att göra en ny plottning, skriptet kan kombineras med steg 2 har de värden som lagrats i en CSV-fil.)

Det sista steget att få en ganska korrekt fungerande kompass, är att lägga deklinationen. Du hittar din specifika deklination via denna sida: http://www.magnetic-declination.com/

Ha i åtanke att deklinationen är i grader, så Lägg till (eller subtrahera) deklination när lagret beräknas i grader. Ett exempel kan hittas här:

https://bitbucket.org/RoboBasics/Raspberry-Robo-ca...

Nu den kalibrera är gjort, kan du köra den senaste skriften och upprepa det första testet genom att rotera bot genom 90° steg och även jämföra lagret med en annan digital kompass (på din mobiltelefon till exempel).

Det är det!

Relaterade Ämnen

Gränsyta för Digital kompass (HMC5883L) med Raspberry Pi 2 med Python3

Inledningsvis var jag arbetar på en labyrint lösa robot. Istället för att använda ultraljud och IR på Arduino Mega för vägg efter som mina vänner gjorde, försöker jag göra något annorlunda med hjälp av digital kompass och Raspberry Pi 2. Denna erfare...

Grove 3 axlig Digital kompass

Detta är den fjärde handledningen av en serie tutorials där jag visa dig hur ansluta Grove sensorer och komponenter till en Arduino och att komma igång för en robot projekt med hjälp av dessa sensorer. I de sista par instructables visade jag hur man...

Arduino Digital kompass projekt

Hej! I detta instructable kommer du se hur du kan göra en Digital kompass med hjälp av en Arduino och bearbetning IDE. Detta är ganska enkla men intressanta och sval sett Arduino projekt.Du kan titta på demo exemplet av denna tutorial på videon ovan....

Bilen Digital kompass & termometer

jag är inte riktigt bra på att hitta platser och riktning men åtminstone jag kan läsa kartor och kompass. Dessa dagar, blir GPS-system mer populärt, så förmodligen vissa människor skulle säga varför jag behöver en kompass. Först och främst, gillar ja...

DIY Digital kompass (för bilen)

Jag är förbluffad över att vissa bilar inte har en digital kompass alltid synlig. Du måste antingen starta navigering app varje gång som även kan försvinna när du justerar radion. I detta projekt, ska du skapa en digital kompass som kan drivas med ci...

Skapa en digital termometer med Arduino

gjorde du någonsin föreställa sig att göra sina egna digitala termometer? Med utvecklingen av alltmer sofistikerad teknik är så ingenting omöjligt.Denna gång projektet är att skapa en egen digital termometer med Arduino. Som måste läras i denna tutor...

Snabb Digital termometer med billiga USB till TTL omvandlare och DS18B20 - utan Arduino eller Raspberry Pi

I min tidigare instructable jag gav en introduktion till Digital termometer med DS18B20 och ESP8266 nodemcu ombord med SPI OLED-skärm och programmering använder Arduino IDE. Det krävs kunskaper i programmering, grundläggande elektronik och krävs lite...

Digital termometer med Arduino & DS18B20

helt enkelt skapa en digital termometer med kan berätta strömrumstemperaturen på en LCD-skärm. Detta är en nybörjare projekt.Apparater som du behöver:1. Arduino UNO R32. DS18B20 temperaturgivare.3. 16 x 2 LCD-display.4. Anslut ledningar.5. projektet...

Arduino Nano: HMC5883 kompass med Visuino

HMC5883L är populära kompass sensorer. De kan användas för navigationssystem, drönare och robotar.I detta Instructable, ska jag visa dig hur lätt det är att programmera Arduino att använda HMC5883L kompass, med Visuino - en enkel att använda grafiska...

Att skapa en digital termometer med Intel Edison

Först och främst vill jag tacka Instructables och Intel för att ge mig Intel edison med startpaket. Detta Instructable handlar om att skapa digital termometer (med intel edison). Att göra digitala termometer är ganska enkel och kan göras av alla som...

Digital klocka med MSP430

Hej vänner, detta är mitt projekt på Digital klocka, med MSP430G2452 [du kan använda valfri controller 20-pin MSP], jag har lagt upp sin schematiska med koden här, du kan se det på...http://youtu.be/3GbRLwAJdfM...

Kompass med Arduino

Jag gjorde en kompass med hjälp1-Arduino Mega2-LSM303 sensor3-färgad LCD sheild4 - 4 manliga/kvinnliga trådar.Följ instruktionerna för Anslutningsbeskrivning och den fullständiga koden.Steg 1: Anslutningen 1-satte färg LCD-Shield på arduino mega (den...

Överföra data från digital utrustning till dator

Jag försöker överföra data till Rasberry Pi från någon form av digital elektronisk utrustning. Låt oss säga Digital Multimeter. När du mäter, det visar du en aktuell men om det är möjligt att fånga det resultera i någon fil eller tabell i någon PC fö...

Med en Hobby-Ace Ublox GPS modul inbyggd kompass med Arduino Uno

Nyligen fann jag mig att hjälpa min son satt ihop en hög höjd ballong (HAB) för ett skolprojekt och en av de saker som han förvärvat för projektet var en Hobby-Ace Ublox GPS-modul med inbyggd kompass.Detta var ursprungligen avsedd att användas med Fl...

Digital fotoram - med hjälp av en gammal bärbar dator

Jag hade en gammal Dell Inspiron 6400 liggande hemma och beslutat att installera Linux på den-hade varit syssla med Linux i många år – men eftersom det var aldrig det enda operativsystemet på datorn – verkligen gå inte vidare med den. Också var plane...

7 segment Digital termometer med ATtiny 85

detta är ett komplett DIY projekt som kräver en handfull komponenter som ATtiny 85, LM35, MAX7219 och ett par resistorer och kondensatorer springer iväg en reglerad 5 V matning.Mätområde temperatur: 0 till 150' C32 till 300' FController: ATtiny 85Vis...

Komplett Digital klocka med närvaro Sensor (RTC - Alarm - PIR - temperatur - luftfuktighet - daggpunkt)

Hej duJag har redan gjort några digitala klockor projekt med Arduino inklusive LED och LCD-skärmar, men denna är mer speciell eftersom jag har infört en ny funktion med en rörelse-sensor (PIR).Se VIDEOHuvuddrag PIR (närvaro infraröd Sensor)RTC (realt...

Digital klocka med 7 Segment Display kontrolleras med hjälp av fjärrkontrollen

det finns sorter av digital klocka finns i vårt dagliga liv. Grundläggande digital klocka kommer att oftast ha några inbyggda funktioner som väckarklocka, kalender och termometer förutom display klockan information. Några av de förskott digital klock...

Första stegen i digital elektronik med circuit.io

som många andra instructables jag börja med "Min historia", eller "Motivation för projektet", och nästa kommer jag att presentera verkliga inledning.Jag har liten erfarenhet med circuits.io, men redan som denna tjänst. Jag väljer att s...