Mäta lutning med en MPU6050, accelerometer + gyroskop
Robotar som rör sig på något sätt, eller som blir förflyttade av omgivningen, kan dra nytta av att veta i vilken riktning eller vinkel de befinner sig. Genom att känna till accelerationen och lutningen kan tex en drönare blixtsnabbt justera kraften till de olika motorerna för att hålla sig plan i luften.
En MPU6050 är en mikrokontroller med accelerometer, gyroskop och temperatursensor. Den har också en processor för att förfina rådatan från sensorerna till högkvalitativ data som vi kan använda. Kombinationen av accelerometer och gyroskop gör att processorn kan filtrera ut brus från sensorerna och leverera en högre datakvalitet.
Att använda en MPU6050 är mycket enkelt. De sitter ofta monterade på ett kort med spänningsregulering mm. Sensorn på bilden hittade vi i en gammal gimbal för drönarfotografering. Det finns en massa olika varianter på kort med MPU6050, så det är bara att välja ett som passar det du vill ha den till.
Kommunikationen med MPU6050 sker över I2C som är en vanlig standard som de flesta plattformar kan prata. I det här exemplet använder jag en ESP8266 på ett NodeMCU-kort och Arduino-ramverket för att programmera den. Det jag behövde göra för att få igång sensorn var helt enkelt att koppla in GND till jord, 5V till spänning (jag använde 3,3 V för det är vad mitt kort går på och det verkar fungera fint men beror på vilket kort din MPU6050 sitter på), SDA till D1(?) och SDC till D2(?) på NodeMCU (standardpinnarna för I2C-kommunikation).
Det finns mängder av färdiga bibliotek till Arduino för att läsa av den här sensorn. Jag har dock hittat ett bibliotek som även kan räkna ut vilken vinkel kretsen befinner sig i. Alla bibliotek har inte det inbyggt utan ger bara acceleration och gyro-värden för respektive axel. Biblioteket som jag har hittat heter MPU6050_light.
Som du ser i exemplet så kan du anropa GetAngle
för att få ut vinkeln på sensorn. Tänk på att om du vill ha ut Z-vinkeln (alltså rotation om du har monterat sensorn plant) måste du först kalibrera sensorn i ca en sekund. Detta är med i exempelkoden. Om du inte bryr dig om rotationen i Z-led kan du hoppa över kalibreringen.