Stap 4: Software kalibratie
Let op: Mijn PCB gebruikt een Atmega328 geprogrammeerd met Pro-MINI 8 MHZ 3.3V bootloader. Als u deze PCB bouwen, u moet het programma met de Pro-MINI 8 MHZ, 3,3 v bootload en moet niet selecteren wanneer gebruik van de Arduino omgeving. De PCB is ontworpen voor gebruik van een adapter van USB-BUB, of ik gebruik, het equivalent van een PL2303.
Voor de LSM303dlhc gebruikte ik deze Pololu-bibliotheek:
https://github.com/Pololu/lsm303-Arduino
Het gaat hierbij om een procedure voor het kalibreren van de magnetometer. Ik heb om te werken met mijn Arduino en LCD5110 gewijzigd. Het is gekoppeld: Calibrate.zip
Kalibreren: Dit programma is vergelijkbaar met de seriële voorbeeld, maar in plaats van de meest recente lezingen afdrukken, het afdrukken een voorlopig minimum- en maximumwaarden van de lezingen van elke magnetometer as. Deze waarden kunnen worden gebruikt voor het kalibreren van het voorbeeld van de kop en de heading()-functies na het verplaatsen van de LSM303 door elke mogelijke richting.
Ik het gewijzigd zodat de minuten en de Maxs wordt weergegeven op de LCD5110. Run schets, langzaam, draai en draai de module in alle richtingen. De minuten en de Maxs vastleggen op het scherm, dan sluit ze aan op SpotterLevel schets, ter vervanging van de waarden in de volgende regels:
Compass.m_min = (LSM303::vector) {-433,-600,-546};
Compass.m_max = (LSM303::vector) {570, 488, 579};
Dit moet het kompas lezingen verbeteren.
Voor deze toepassing, wordt het gedeelte van de versnellingsmeter gebruikt om te bepalen wanneer de vergadering niveau is.
Theorie: Versnellingsmeter maatregelen versnelling. Zwaartekracht is een vorm van versnelling. De LSM303dlhc module maatregelen versnelling in drie richtingen x, y en z (zie afbeelding). Z is eigenlijk omhoog en omlaag. In deze aanvraag, aangezien de LSM303 meestal stationaire, is de gemeten versnelling zwaartekracht. Dus als de LSM303 niveau, dan de x is en y acceleraties zou zou 0 en z 1g (zwaartekracht standaard). Nu wordt de LSM303 ingesteld voor +/-2g dus 1g ongeveer 16384 graven is. (De Geek in me zegt dat dit moet 32768!!!)
Nu als de LSM303 ondersteboven was, zou de waarde van de z-1 g, over-16384.
Hoewel waarschijnlijk niet nodig, schreef ik ook een kalibratieprogramma voor de versnellingsmeter, AccelCal.zip
Bericht: De kalibratie-beelden werden genomen met mijn eerste versie van spotter toepassingsgebied. Voor de nieuwste versie, ik de vergadering van de werkingssfeer van de volledige spotter gemonteerd maar deed niet koppelen aan een statief. Gebruik dezelfde methode zoals in de foto's.
Als u wilt kalibreren, ik gemonteerd mijn spotter toepassingsgebied en elk van de programma's geladen.
Neem de hele Vergadering buiten, macht van de Arduino voor elk programma. Langzaam, omhoog het rond in alle oriëntaties, niveau, ondersteboven, toepassingsgebied, scope neer, scope aan rechterkant, scope op de linker- en langzaam draai het rond.
Het opnemen van de min en max waarden voor kalibreren en AccelCal schetsen. Ze zullen worden gebruikt in de volgende stap.