Bygga en segway med Raspberry Pi (6 / 10 steg)
Steg 6: Testa MPU6050 sensor
Nu, kommer vi se till att MPU6050 faktiskt fungerar.
Låt oss installera i2c testverktyg.
$ sudo lämplig-få installera i2c-tools
Köra det för att kontrollera om det såg MPU6050 på i2c bussen.
$ sudo i2cdetect -y 0 (för RPi revidering 1 styrelsen) < br > eller < br >$ sudo i2cdetect -y 1 (för RPi revidering 2, Pi B, Pi B + eller Pi 2 brädor)
Om du såg resultatet enligt nedan, såg det MPU6050. Det innebär mpu6050 enheten är på i2c bussen och dess i2c adress är "0x68"
0 1 2 3 4 5 6 7 8 9 a b c d e f <br>00: -- -- -- -- -- -- -- -- -- -- -- -- -- <br>10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br>20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br>30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br>40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br>50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br>60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- <br>70: -- -- -- -- -- -- -- --
Låt oss prova några enkla verktyg för att få dessa acceleration och gyroskop information.
Ladda ner och kompilerar efter verktyg
$ cd < br >$ git clone < en href = "https://github.com/wennycooper/mpu6050_in_c.git" rel = "nofollow" > https://github.com/wennycooper/mpu6050_in_c.git < br >< /a >$ cd mpu6050_in_c $ cat README.md < br >$ gcc -o mpu6050_accl./mpu6050_accl.c - lwiringPi - lpthread -lm $ gcc -o mpu6050_gyro./mpu6050_gyro.c - lwiringPi - lpthread -lm
För att få acceleration information, Vänligen utföra
$ sudo. / mpu6050_accl
Du borde se något lik:
Min acclX_scaled: 0.140625
Min acclY_scaled:-0.031006
Min acclZ_scaled: 0.994141
Min X rotation:-1.768799
Min Y rotation:-8.047429
Ovan acclX, acclY & acclZ är den uppmätta accelerationen i g (g = 9,8 m/s ^ 2) i X, Y och Z-axeln.
I själva verket berättar accelerometern endast acceleration information. Med vissa grundläggande trigonometriska funktioner beräkning, kan vi få vinklarna som orientering. De är "Min X & Y rotation" och enheten är i grad.
Vänligen försök sätta bilen ramen lite framåt eller leanback, och titta på förändringarna av mätningen. Du kommer att förstå det mer.
Låt oss också kolla gyroskop mätning. Vänligen kör:
$ sudo. / mpu6050_gyro
Det kommer att berätta hastigheten (i grad/s) vinkel i varje axel, som denna.
Min gyroX_scaled:-4.312977 < br > min gyroY_scaled: 0.458015 < br > min gyroZ_scaled: 0.366412 < br > min gyroX_scaled:-4.053435 < br > min gyroY_scaled: 0.427481 < br > min gyroZ_scaled:-0.160305
Försök rotera bil ram och titta på förändringarna av tid. Då kommer du förstå gyroskop mätningen mer.
Om vi använder endast acceleration information för att beräkna vinkeln orientering, är vinkeln inte stabila och inte tillförlitlig. Så, någon uppfinna metoden att använda hastigheten av vinkeln information att beräkna vinkeln, och komplettera med vinkeln från acceleration. Då kommer att det ge oss mer stabil och pålitlig vinkel.
Det är så kallade "kompletterande filter". Du kommer att se det kompletterande filtret i vår kod senare. Kolla för mer ingående förklaring i referensdokument.