Configureren, gegevens lezen & kalibreren van het HMC5883L digitale kompas met behulp van Python


Net als in andere blogs bevat deze ook informatie die elders kan worden gevonden op het web. Ik net gestructureerd het zodat het makkelijk te gebruiken voor beginnende robot hobbyisten.

Aansluiten van het kompas is heel simpel. Bij het monteren van de sensor aan de bot, zich bewust zijn van de x-y-z-markering op de sensor en verzekeren dat de x-> punten naar de voorzijde van het bot.

Het kompas gebruikt de I2C-protocol. De sensor op de (I2C-) GPIO pinnen op de Pi als volgt aansluiten:

  • VCC verbinden met pin-1 (3.3.V)
  • SDA verbinden met pin-3 (SDA = systeemgegevens)
  • SCL verbinden met pin-5 (SCL = systeemklok)
  • GND verbinden met pin 7 (GND)

Eerste van alle de Raspberry Pi moet worden geconfigureerd voor het gebruik van de I2C-protocol. Dit is standaard uitgeschakeld op de framboos. U vindt een uitstekende tutorial op: https://learn.adafruit.com/adafruits-raspberry-pi...

Bij het testen van de I2C verbinding zoals uitgelegd aan het eind van de les van Adafruit, het 0x1e adres zal zeer waarschijnlijk worden weergegeven voor de HMC5883L-sensor. Als u een ander adres hebt u tot het wijzigen van de variabele adres in de scripts.

Als u wilt kalibreren van het kompas zal de bot moet meerdere malen worden omgezet. Dit kan met de hand worden gedaan. Ik gebruikte een roterende display snack te maken het draaien van de bot, terwijl het horizontale, gemakkelijk.

De volgende stap is lezen en weergeven van gegevens van de sensor. Hiervoor gebruikte ik een heel eenvoudig script dat kan hier worden gevonden:

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

Het gebruik van de sensor registreert voor binaire lezen en schrijven kan worden gevonden in de sensor data sheet en in het script. Ik zal niet ingaan op die details hier. Het script initialiseert de sensor als volgt:

  • 8 monsters bij 15 Hz,
  • LSb krijgen 1,5 (standaard),
  • Gauss 1090 (standaard),
  • continue bemonstering,
  • schalen van 0.92

Als u niet wilt om te duiken in de kenmerken van de sensor, laat u de waarden in het script. Ze zijn vrij algemeen en voldoende zijn voor bijna alle situaties.

Nu het script leest de x, y en z registreert, berekent de boogtangens van de x en y en converteert het resultaat naar graden. Alleen het script uitvoeren en je krijgt een eerste peiling BV 46.53891942 (46° 53' 89.2") Start draaien de bot totdat je dicht bij 0 graden. Vervolgens draaien door middel van vier posities van 90°, het lezen van de sensorgegevens bij elke stap. Waarschijnlijk ziet u dat de waarden afwijken en niet volledig goed zijn.

Dus laten we erachter te komen wat er gebeurt. Hiervoor kunt u de volgende eenvoudige script:

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

Dit script verzamelt 500 lezingen en schrijft de waarden naar een CSV-bestand, die eenvoudig kan worden geïmporteerd in Excel en in een verspreide grafiek worden uitgezet. Voer het script ( sudo python HMC5883L_calibrate_step_2.py ) en beginnen met draaien de bot terug en vooruit door 360 ° terwijl het script wordt uitgevoerd. De uitkomst moet iets als in de afbeelding.

De offset (alleen maar een lichte kwestie in mijn geval) is nu gevisualiseerd. Om een meer specifieke waarde voor de x- en y offset, kunt u het derde script, dat kan hier worden gevonden:

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

Dit script opnieuw neemt 500 lezen, houdt de minimale en maximale waarden van x en y en berekent de offsets. Het script uitvoeren op dezelfde manier als de voormalige script, voortdurend draaien de bot. Moet je zoiets als dit:

  • Minx:-212
  • miny:-246
  • Maxx: 262
  • maxy: 239
  • x offset: 25
  • y-verschuiving: -4

Deze verschuivingen kunnen nu eenvoudig worden toegepast op het script, dat in dit voorbeeld gebeurt:

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

(Om een nieuwe plotten, het script kan worden gecombineerd met stap 2 om de waarden die zijn opgeslagen in een CSV-bestand.)

De laatste stap om een vrij nauwkeurig werkende kompas, is het toevoegen van de declinatie. U vindt uw specifieke declinatie via deze pagina: http://www.magnetic-declination.com/

Niet vergeten dat de afwijking in graden wordt uitgedrukt, dus toevoegen (of aftrekken) de declinatie wanneer de peiling wordt berekend in graden. Een voorbeeld kan hier worden gevonden:

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

Nu het kalibreren is voltooid, kunt u het laatste script uitvoeren en herhaal de eerste test door het draaien van de bot door middel van de stappen van 90° en zelfs het dragen te vergelijken met een ander digitaal kompas (op uw mobiele telefoon bijvoorbeeld).

That's it!

Gerelateerde Artikelen

Hoge kwaliteit MMC digitale Spraakrecorder met behulp van de PIC met beperkt RAM (PIC16F877A)

Hoge kwaliteit MMC digitale Spraakrecorder met behulp van de PIC met beperkt RAM (PIC16F877A)

dit is mijn eerste digitale VoiceRecorder die is gemaakt met behulp van een mid-range PIC met een totale RAM-geheugen van slechts 256 bytes.http://blog.vinu.co.in/2011/07/attempt-to-Access-Memory-Card-MMC-using.htmlHier, gebruikte ik een PIC16F877A t
Digitale klok met behulp van MSP430

Digitale klok met behulp van MSP430

Hallo vrienden, dit is mijn project op digitale klok, met behulp van de MSP430G2452 [u kunt elke 20 pin MSP controller] ik heb geupload zijn schema met de code hier, je ziet het werken bij...http://Youtu.be/3GbRLwAJdfM
Maken van een digitale thermometer met behulp van Intel Edison

Maken van een digitale thermometer met behulp van Intel Edison

Allereerst wil ik de Instructables en Intel bedanken voor het geven mij Intel edison met het startpakket. Dit Instructable is over het maken van digitale Thermometer (met behulp van intel edison). Digitale thermometer maken is vrij eenvoudig en kan w
Draagbare harde schijf gegevens lezen en gebruiken het als interne HDD hacken stierf

Draagbare harde schijf gegevens lezen en gebruiken het als interne HDD hacken stierf

Hoe voelt het om te vinden van uw externe harde schijf die boete werkte tot gisteravond niet meer werkt... ??U bent beperkt tot een gevoelloos met alleen uw interne HDD om op te slaan voor de magere ruimte??U niet meer in staat bent om te lezen om he
Digitale klok met behulp van 7 Segment Display gecontroleerd met behulp van TV Remote

Digitale klok met behulp van 7 Segment Display gecontroleerd met behulp van TV Remote

er zijn rassen van digitale klok beschikbaar in ons dagelijks leven. Eenvoudige digitale klok zal meestal hebben sommige gebouwd in functies zoals alarm klok, kalender en thermometer naast de display de klok-informatie. Sommige van de vooraf digitale
Snelle digitale thermometer met behulp van goedkope USB aan Convertor van TTL en DS18B20 - zonder Arduino of Raspberry Pi

Snelle digitale thermometer met behulp van goedkope USB aan Convertor van TTL en DS18B20 - zonder Arduino of Raspberry Pi

In mijn vorige instructable gaf ik een introductie tot digitale thermometer DS18B20 en ESP8266 nodemcu board met SPI OLED-display, en programmeren met behulp van de Arduino IDE. Dat vereist kennis van programmering, elementaire elektronica en ook een
Digitale Incubator met behulp van Arduino

Digitale Incubator met behulp van Arduino

IntroductieEen incubator is een apparaat dat wordt gebruikt om te fokken en houden van de bacteriologische culturen of celculturen. Het ondersteunt de voornaamste temperatuur, lichtintensiteit, vochtigheid en andere omstandigheden in de atmosfeer. In
Digitale oscilloscoop met behulp van Digilent Zybo bestuur

Digitale oscilloscoop met behulp van Digilent Zybo bestuur

Het bestuur van de Digilent Zybo is gebouwd rond de Xilinx Zynq SoC (systeem op Spaander) deel. Deze IC heeft dubbele Arm-A9-kernen (PS - Processing System genoemd) die als elke andere microcontroller uitvoeren. Wat het bijzonder maakt is dat het ook
Digitale voltmeter met behulp van arduino

Digitale voltmeter met behulp van arduino

Voltmeter wordt gebruikt voor het meten van spanning in circuit, Analoge voltmeter hebben 5% fout, het toont de geschatte waarde, waar de Digitale voltmeter geeft exacte waarde van de spanning in het circuit. Spanning wordt gemeten met behulp van spa
AFSTANDSBEDIENING om het even welke apparaten met behulp van TSOP

AFSTANDSBEDIENING om het even welke apparaten met behulp van TSOP

met behulp van TSOP IR-sensor kunt u controle elke huistoestellen (Verbindingshoek ventilator, koelkast, etc..)met elke afstandsbediening.Stap 1: Componenten moet ° • TSOP (elk type)° • condensator 10 uf × 1° • weerstand1 k × 1330 ohm × 1° • LED × 1°
Hoe te onthouden van het OSI Model lagen met behulp van een ezelsbruggetje JPEG en PDF-bestanden

Hoe te onthouden van het OSI Model lagen met behulp van een ezelsbruggetje JPEG en PDF-bestanden

Hoe te onthouden van het OSI-lagen met behulp van een eenvoudige memo.  Ik heb het werkblad gemaakt voor mijn netwerk + klas op Per Scholas in de South Bronx.  In JPEG en PDF formaten.
Kompas met behulp van Arduino

Kompas met behulp van Arduino

Ik maakte een kompas met1-Arduino Mega2-LSM303 sensor3-gekleurde LCD Shield4 - 4 draden van de man/vrouw.Volg de stappen voor de beschrijving van de verbinding en de volledige code.Stap 1: De verbinding 1-zet de kleur lcd Shield op de bovenkant van d
Digitale Thermometer met behulp van LM35 met Mediatek LinkIt een bord

Digitale Thermometer met behulp van LM35 met Mediatek LinkIt een bord

In dit Instructable, zal u zitten kundig voor maatregel lichaamstemperatuur en aangeven of een persoon koorts heeft of niet. Dit wordt gedaan door interfacing LM35 met Mediatek LinkIt One.LM35 is een 3 terminal temperatuursensor.Stap 1: onderdelenLm3
AFFAIRE-AMA-STRING ULTIMATE UPGRADE: MOTION SENSOR & TIMER heeft CAT draai het op en af met behulp van wisselstroom (geen batterijen) met geen menselijke INPUT

AFFAIRE-AMA-STRING ULTIMATE UPGRADE: MOTION SENSOR & TIMER heeft CAT draai het op en af met behulp van wisselstroom (geen batterijen) met geen menselijke INPUT

een paar weken terug kwam ik in de affaire-ama-String Upgrade 2.0 een Cat Toy verbeterd op de instructable die is fantastisch en heeft stappen ter verbetering van de kat speelgoed gooien-AMA-String dat een timer en grotere D formaat batterijen.Sinds