logo wereldvanmachines          Start       Contact

Digitaal kompas

Digitaal kompas

Digitaal kompas

Digitaal kompas

Digitaal kompas

Digitaal kompas

Digitaal kompas

Digitaal kompas

Stampen, gieren, luchtdruk sensoren uit China

Bij harde wind wil de boot nog aardig schuin gaan.
In de gebruikershandleiding staat dat je bij 20 graden helling moet reven.
Los dat ik dat zelf beslis is de vraag natuurlijk wat is 20 graden helling.

Op het stuurkompas zit een hellingsmeter en in de praktijk volstaat dat natuurlijk.
Alleen ik heb een tablet hangen en OpenCPN op de Rpi dus digitaal getoond zou mooi zijn.
Hetzelfde geldt voor de voorliggende koers, die wil dan ook ook digitaal in het scherm hebben.
Bij de botenshop kosten digitale sensoren overmatig veel geld. Een elektronisch kompas kost minimaal 200 euro, een barometer een dikke 100 euro en een hellingshoekmeter heb ik niet kunnen vinden. Dus aan de knutsel maar weer.

Tegenwoordig is er eigenlijk geen dure elektronica meer alleen wat het duur maakt is het merk en de software die het aanstuurt.
Een elektronisch kompas van een duur merk zit in een solide kastje, heeft een waterdicht display en 3 jaar fabrieksgarantie. Dat hebben de goedkope uitvoeringen of losse modules natuurlijk niet. Maar wat ze wel samen gelijk hebben is dat veelal van dezelfde chip gebruik gemaakt wordt uit dezelfde onderdelenfabriek met dezelfde specs.
Die chips zijn ook op losse sensor modules te koop voor een paar euro en komen vooral uit de Adafruit fabriek. Dit Adafruit is eenvoudig op een Raspberry of Arduino aan te sluiten en met een beetje handig programmeren is er zeker wat moois van te maken.

Tijdens mijn zoektocht naar sensoren kwamen eigenlijk steeds dezelfde sensors naar boven.
BMP280: is een barometer en temperatuurmeter.
PU6050: is een 6 as gyroscoop en acceleratiemeter
QMC5883: is een magnetisch kompas
Hiermee moet het lukken en ik heb van alle 3 sensoren 2 stuks uit China laten komen voor minder dan 10 euro alles bij elkaar inclusief verzendkosten.

Na een paar weken werden deze kleine modules afgeleverd en heb ik ze in een proefopstelling geplaatst en begon het ontwikkelen van de software.
Ondertussen had ik bedacht dat ik de elektronica in een losse box wilde hebben en via een USB kabel aan de Raspberry ga koppelen. Als sturing had ik een Arduino Nano bedacht die alle metingen naar NMEA-0183 sentences zal omzetten en de communicatie regelt. Daarmee heb ik een sensorbox zo groot als een pakje speelkaarten met een waarde van honderden euro's.

En dan begint het programmeren. Tijdens de jaren dat ik embedded software maak heb ik geleerd dat het zo makkelijk niet zal gaan. Want de hardware zal afwijken, de modules zullen elkaar tegenwerken en veelal wil de software niet stabiel lopen. En zo het was. Problemen deden zich voor waar ik deels een oplossing voor had en voor een ander deel niet omdat het teveel tijd gaat kosten. Soms weegt tijd niet op tegen het resultaat.

De QMC5883 meet de magnetische waarden over drie assen en geeft de voorliggende koers (VK) terug. Helaas is met deze sensor wel een probleem. Er komt alleen een correcte waarde terug als de magnetische sensor horizontaal ligt. Als er maar iets helling is ontstaat er een leesfout die zo groot kan zijn dat het niet meer bruikbaar is.
Om deze leesfout te compenseren komt de volgende sensormodule erg van pas.

De MPU6050 geeft een hele strakke uitlezing op de drie as bewegingen rollen, gieren en stampen t.o.v. het nulvlak die bepaald wordt tijdens het opstarten.
En wat zo mooi is dat hij door zijn 6 as meting onder elke hoek kan aangeven hoeveel graden je horizontaal gedraaid ben. Gieren heet dat. Of yaw in het engels.
Die draaihoek gebruik ik om de VK te compenseren naar waarschijnlijke VK.

Hoe gaat dat dan in de praktijk?
Zolang het kompas horizontaal ligt is de gemeten koers de VK. En anders moet de gyro compenseren.
Bijvoorbeeld laatst gemeten VK is 270. We hangen lekker schuin op het zeil en volgens de gyro zijn we ondertussen 20 graden bakboord gedraaid.
De waarschijnlijke VK is dan 270-20 = 250 graden.
Daarmee is er een redelijk gecompenseerde waarde voor de VK te maken. Redelijk, niet zuiver. Op zich is dit geen probleem want op het moment dat het kompas horizontaal ligt wordt de magnetische meting weer de VK en begint het spel weer opnieuw.
Een bewegende boot ligt tijdens elke slinger even horizontaal dus dat meetmoment is altijd vlakbij tenzij je lang schuin hangt dan is de exacte meting later.

De software voor dit allemaal draait op een Arduino Nano die dit vertaald naar NMEA-0183 sentences voor koers, luchtdruk, temperatuur, rol en stamp. Dit wordt op de USB poort gezet richting de Raspberry waar OpenCPN de presentatie verder afhandelt.

In de praktijk werkt het prima. De gyroscoop heb ik zo geprogrammeerd dat bij het opstarten ervan uitgegaan wordt dat de boot horizontaal ligt. Alle bewegingen worden gemeten t.o.v. dit zogenaamde nulvlak.
Als ik zou willen kan ik nog een deviatietabel in de software verwerken maar ach die paar graden afwijking is meer voor de perfectionisten. Ik navigeer niet alleen op een kompas maar ook op zicht en uiteraard op de OpenCPN kaart.

Op deze manier kunnen er vele sensoren bijgezet worden. Denk aan temperatuurmeters, dieptemeter, oliedrukmeter etc. Als er maar een draadje aan zit. Misschien later een keer.
De schermverversing van het stampen en gieren heb ik op een halve seconde staan, de koers op 1 seconde en temp/baro op 5 seconden. Sneller verversen maakt het beeld voor mij te zenuwachtig omdat de modules zo gevoelig zijn en te veel data doorgeven.

Heb ik er wat aan? Nou eerlijk gezegd eigenlijk niet. Het is gewoon leuke informatie om te hebben.
Ondertussen is er een tweede versie die niet via een Arduino gaat maar rechtstreeks op de Rpi met een Python script.

De code staat onderaan deze pagina voor als je zelf aan de gang wil, de aansluitingen zijn eenvoudig:
Arduino
GND
3v3
A4
A5
Modules
GND
VCC
SDA
SCL

Proefopstelling Gyro

broncode


Solozeiler deed het Webdesign en alle content is © auteursrechtelijk beschermd door "solozeiler.nl".