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!