Personliga Black Box - Arduino Mega + ultimata GPS Shield + LSM303 (3 / 4 steg)

Steg 3: Arduino Mega + Accelerometer (LSM303)



Till krok upp accelerometern, helt enkelt fäst den SCL och SDA stiften på LSM303 till Mega SCL(21) och SDA (20) stift. (Det är LSM303 SCL-värdet till Mega SCL, sedan LSM303 SDA till Mega SDA)

Sedan bifoga den 5v och marken till lämplig placering. Jag lyckades också använda en bit av anti statisk skum under enheten med lite varmt lim för att montera accelerometern till den GPS proto styrelse.

jag började med LSM303 biblioteket från (https://github.com/pololu/lsm303-arduino). Detta innehåller tre exempel, en som, "Kalibrera", jag slutade med ganska ofta. Detta fungerade för mig utan några ändringar och tillät mig att testa min kabeldragning. Jag använde detta för att dra de lägsta och högsta värdena för accelerometern x, y, x-axeln, dessa värden används för att balansera ut enheten vid beräkning av G-krafter.

G-krafter:
För att beräkna G-krafter på LSM303 har vi bara att balansera ut accelerometer värdena och sedan skala dem. Jag kan inte hitta platsen där jag först fick koden så jag ber om ursäkt i förväg men jag hoppas att snart ha som uppdaterats.

Först! Kör den kalibrera skissen från LSM303 bibliotek för att få din x, y, z max och min värden. För att göra det, håll din LSM303 på varje av de sex axlar och uppdatera skissen håller den fortfarande mycket. Du vill inte orsaka någon skakar till enheten som som kommer att kasta bort sin avläsningar, detta tog mig flera försök att äntligen få den kalibrerad korrekt.

När du är klar, på en plan yta bör du få en behandling som denna (:: 0.00G, -0.00G, 1.00G) där x och y är 0 och z är 1. det kanske inte exakt men det borde flyta runt dessa nummer.

#include < Wire.h >
#include < LSM303.h >

LSM303 kompass;
dessa är mina värden, de kommer troligtvis inte att fungera för dig
kör den kalibrera skissen från LSM303 biblioteket att få din
högsta och lägsta värden för x, y, z
int xRawMin =-16240;
int xRawMax = 15616;
int yRawMin =-17216;
int yRawMax = 16992;
int zRawMin =-14560;
int zRawMax = 18448;

void setup()
{
Serial.BEGIN(14400);
Wire.BEGIN();
Compass.init();
compass.enableDefault();
}

void loop()
{
Compass.Read();
lång xRaw = compass.a.x;
lång yRaw = compass.a.y;
lång zRaw = compass.a.z;

Konvertera raw-värden till "milli-Gs"
lång xScaled = karta (xRaw, xRawMin, xRawMax,-1000, 1000);
lång yScaled = karta (yRaw, yRawMin, yRawMax,-1000, 1000);
lång zScaled = karta (zRaw, zRawMin, zRawMax,-1000, 1000);

Re skala fraktionerad GS
flyta xAccel = xScaled / 1000.0;
flyta yAccel = yScaled / 1000.0;
flyta zAccel = zScaled / 1000.0;

Serial.Print("::");
Serial.Print(xAccel);
Serial.Print ("G,");
Serial.Print(yAccel);
Serial.Print ("G,");
Serial.Print(zAccel);
Serial.println("G");

Delay(200);
}

Pitch och rulla:
Jag hittade en tråd på arduino forum av "ArthurSpooner" för att beräkna Pitch och rulla
, jag bara ändrade den befintliga koden för min LSM303. Lägg till i bibliotek och installationsprogrammet från kalibrera skiss, sedan bara bort analogread och ersätta den med din compass.a.x.

Här är den modifierade versionen av arnies kod som jag använde:
kod av Arne
acclerometer den inställd på sätt som z accelerationen ser ut
till himlen och x y är platt -> som de flesta cartesian koordinerat system
Jag använder en A7270 som en Accelerometer -> de är på en utbrytning styrelse för ca $20 USD
och en HMC5843 som en trippel axel magnetisk Sensor $50 USD
Känn dig fri att kommentera koden -> förbättring är alltid uppskattat
Du kan ställa frågor på engelska eller tyska

krävs för beräkningar
#include < math.h >
#include < Wire.h >
#include < LSM303.h >
LSM303 kompass;
genom att öka alphaAccel kommer svaret bli snabbare
men ljudet kommer increae [alpha måste vara mellan 0 och 1]
värden för digital variabelt
flyta alphaAccel = 0,4;
flyta alphaMagnet = 0,4;
unsigned int xOffset = 0; unsigned int yOffset = 0; unsigned int zOffset = 0;
flyta Pitch = 0;
flyta rulle = 0;
flyta Yaw = 0;
int xRaw = 0; int yRaw = 0; int zRaw = 0;
flyta xFiltered = 0; flyta yFiltered = 0; flyta zFiltered = 0;
flyta xFilteredOld = 0; flyta yFilteredOld = 0; flyta zFilteredOld = 0;
flyta xAccel = 0; flyta yAccel = 0; flyta zAccel = 0;

void setup()
{
Serial.BEGIN(115200); initiera serieporten
analogReference(EXTERNAL); använda extern referens spänning (3, 3V)
Delay(2000); kalibrera sensorn efter en kort fördröjning
Wire.BEGIN();
Compass.init();
compass.enableDefault();
getAccelOffset(); hålla den platt och icke rörliga på bordet
Det finns andra sätt att kalibrera förskjutningen har varje några advantes
och disadvantes...
jämföra applikationen noterar AN3447
http://www.Freescale.com/files/sensors/doc/app_note/AN3447.pdf
}

void FilterAD()
{
läsa från AD och subtrahera offset
xRaw=compass.a.x-xOffset;
yRaw=compass.a.y-yOffset;
zRaw=compass.a.z-zOffset;
Digital Low Pass - jämför: (för accelerometer)
http://en.wikipedia.org/wiki/low-pass_filter
xFiltered = xFilteredOld + alphaAccel * (xRaw - xFilteredOld);
yFiltered = yFilteredOld + alphaAccel * (yRaw - yFilteredOld);
zFiltered = zFilteredOld + alphaAccel * (zRaw - zFilteredOld);
xFilteredOld = xFiltered;
yFilteredOld = yFiltered;
zFilteredOld = zFiltered;
}

void AD2Degree()
{
3.3 = Vref; 1023 = 10 bitars AD; 0,8 = känslighet Accelerometer
(jämför datablad för din accelerometer)
den * Accel måste vara mellan -1 och 1. Du kan behöva
att lägga till/dra ifrån + 1 beroende på inriktningen av accelerometern
(som jag på zAccel)
de är inte nödvändiga, men är användbara för felsökning
xAccel = xFiltered * 3.3 / (1023.0 * 0,8);
yAccel = yFiltered * 3.3 / (1023.0 * 0,8);
zAccel = zFiltered * 3.3 / (1023.0 * 0,8) + 1,0;

Beräkna Pitch och rulle (jämför ansökan Obs AN3461 från Freescale
http://www.Freescale.com/files/sensors/doc/app_note/AN3461.pdf
Microsoft Excel växlar värden för ARCTAN2
-> detta information kan göra ditt liv lättare :-D
vinklad är radian, för examen (* 180/3.14159)
Rulle = ARCTAN2 (yAccel, sqrt(sq(xAccel)+sq(zAccel)));
Pitch = ARCTAN2 (xAccel, sqrt(sq(yAccel)+sq(zAccel)));
}

void loop()
{
Compass.Read();
FilterAD();
AD2Degree();
Serial.Print ("Pitch:");
Serial.Print(int(pitch*180/PI));
Serial.Print ("rulla:");
Serial.println(int(roll*180/PI));
Delay(50);
}

void getAccelOffset()
{//you kan göra ca 60 iterationer eftersom vi använder en unsigned int
annars får du ett dataspill. Men 60 iterationer ska vara bra
Compass.Read();
för (int jag = 1; jag < = 60; i ++) {
xOffset += compass.a.x;
yOffset += compass.a.y;
zOffset += compass.a.z;
}
xOffset = 60.
yOffset = 60.
zOffset = 60.
Serial.Print ("xOffset:"); Serial.Print(xOffset);
Serial.Print ("yOffset:"); Serial.Print(yOffset);
Serial.Print ("zOffset:"); Serial.println(zOffset);

}

Koden från ArthurSpooner också innehåller kompassen rubrik, men jag lyckades hitta denna kod på adafruit och beslutat att använda deras istället, jag försökt med compass.heading() men jag fick inte korrekta resultat:

Compass.Read();
int mx = compass.m.x;
int min = compass.m.y;

flyta Pi = 3.14159;
float rubrik = (atan2(my,mx) * 180) / Pi;
Normalisera till 0-360
om (rubrik < 0)
{
rubrik = 360 + nummer.
}
Serial.println(Heading);

Se Steg
Relaterade Ämnen

Arduino Mega GPS med LCD och SD loggning

Använd din Audino Mega som en GPS logger med tydlig LCD display och 5 funktionsknappar. En bi-färg LED används för att ange statusinformation.SDcard kan vara kvar i och läsa med en kort läsaren skiss, med utgång till den seriella Monitor.Detta instru...

Hur du använder 2,4 tums TFT LCD-SPFD5408 med arduino MEGA 2560

Detta instructable visar dig hur gränssnittet SPFD5408 2,4 tums lcd till arduino MEGASteg 1:Steg 2: bibliotekNågra av er kanske har köpt denna LCD-skärm eller funderar på att fåen. Dess en stor skärm för att visa bilder och grafik. Jag köpte min för...

Arduino Mega 2560 R3 plattan

3D utskrivbara Arduino Mega prototyping plattan.Jag bröt plattan i 2 bitar för utskrift på mindre 3D bygga plattformar (fast modell också).Du kan använda gratis 123D app tillgänglig @ http://www.123dapp.com/123d och hämta min fil @ http://www.123dapp...

Black Box Timelapse

Black Box Timelapse är en samtidig timelapse domare och spelare, som jag byggt med en Raspberry Pi. Det är batteridriven och så jag kan ta med den till olika platser och ställa upp.Varför inte använda en iPhone? Enkel: iPhone ser ut som en enhet och...

Arduino Mega Hexapod

Andra Video (ungefär samma sak, utom snabbare handrörelser):https://www.youtube.com/watch?v=zepHB4h5JS4&featu...Detta är min Hexapod, är uppbyggd kring Lynxmotion's Phoenix hexapod och kör en modifierad version av Kurte's phoenix kodbas.Generiska Phe...

Xmas-box: Arduino/ioBridge internet kontrollerad Julljus och musik show

min xmas-box projektet består av en internet kontrollerad Julljus och musikföreställning. En julsång på begäran on-line som sedan sätta i en kö och spelas i den ordning de begärdes. Musiken sänds på en FM-station inom en radie av 300 ft från mitt hus...

Arduino Mega 8 x 8 x 8 RGB LED Cube

"Så du vill bygga en 8 x 8 x 8 RGB LED Cube"Jag har spelat runt med elektronik och Arduinos ett tag nu, inklusive bygga en hög amp switch controller för min bil och en sex körfält Pinewood Derby domare för våra scouter grupp.Jag var så fascinera...

DIY Webserver med Arduino Mega 2560

i detta DIY projekt, vi gör oss själva en liten webbserver med W5100 sköld och arduino mega 2560,Låt oss få oss själva började,Förbereda alla delar...Steg 1: De delar som behövs för detta DIY 1. Arduino Mega 25602. W5100 Ethernet shield3. Lan-kabel4....

Arduino Nano: Loggar GPS-Information till MicorSD kort med Visuino

MicroSD kort är billigt och enkelt data lagringsmedium, och de är mycket bekvämt för att lagra Arduino sensordata. Det finns också ett antal billiga lätt tillgängliga MicroSD kort moduler för Arduino, och jag har redan gjort Instructable om hur du lo...

Arduino seismiska Aktivitetskontroll - Ethernet Shield

har du någonsin velat imponera på dina vänner genom att säga något galet som, "Jag tror det kommer att bli en jordbävning snart" ögonblicken innan en jordbävning träffar?Eller vill du bara några varning, några sekunder som kan rädda ditt liv.Det...

Göra en Arduino Mega sköld

Arduino plattformen erbjuder en kraftfull uppsättning verktyg för att göra interaktiva elektroniska apparater. För många projekt är ledningar upp ett bakbord allt som behövs. Men om du har mer ambitiösa planer för att utveckla din enhet kan du behöva...

Arduino Mega + Gearbest nybörjare Kit

Gearbest är en mycket snabbt växande online företag, det ger ett brett utbud av högkvalitativa produkter under en massa kategorier. Tack vare dess stora rabatter, dess professionell och pålitlig hjälp och dess fri frakt över hela världen har våra anv...

Black Box MIDI-Controller

Den svarta lådan är en MIDI-controller skapad med en Arduino Leonardo, med vissa roterande växlar monteras i en matris som producerar vissa notvärden.Steg 1: Samla materialFör att bygga den svarta lådan, behöver du följande:VerktygLödkolv - används f...

Helgen projektet klocka datum termometer och luftfuktighet med Arduino mega

killar, jag vill dela min helg projekt på att skapa en klocka med fukt och temperaturgivare,Det är med DHT11 sensor, RTC DS1307, LCD 16 x 2 och Arduino Mega 2560,Hålla läsning och lycka tillSteg 1: Förbered alla delar behövs... i detta experiment beh...

Arduino Mega 2560 baserade LDR ljus intensitet kontroll

De flesta av er vet redan om Arduino och programmering, men de av er som inte vet om dess grunderna bör läsa detta instructable först.Det har allt du behöver veta om Arduino. Jag har använt Mega 2560 i detta instructable eftersom det är ungefär som d...

Enkel kalkylator baserat på Arduino MEGA

Numera gör beräkningar är inte ett problem alls. Kraftfull miniräknare kan köpte för några Euro eller lätt installeras på telefoner och datorer. Dock beslutade vi att göra vårt Arduino till en miniräknare eftersom vi tror att det kan bli en riktigt i...

Arduino Mega Intro

Hej allaArduino Mega är en fantastisk mikrokontroller för projekt som behöver en stor mängd io eller bearbetning makt och är väldigt roligt att använda. I detta instructable vi ser på den:Arduino Megas specifikationerprojekt som bäst förordningen på...

En nybörjare guide till setup ESP8266 med Arduino Mega 2560 eller Uno

För produkter med öppen källkod för att lyckas eller anta en masse "skaparna" / "DIY-na" / "dev" / "etc"; en aktuell och korrekt dokumentation eller snabbstart-guide som skall krävas. Användarens inlägg i diskussion...

Hur ladda upp koden till Arduino Mega från Android-enhet

Idag, ska jag visa dig hur du använder Samsung Galaxy Anmärkning 5 mobiltelefon kör Android v6.0 och stöder OTG - på det gå möjlighet att ladda upp några Arduino koder till Arduino styrelser som Arduino Mega, Arduino Uno och de andra. Förresten, har...