Mäta lutning med en MPU6050, accelerometer + gyroskop

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.

Butik

Adafruits motorshield för Feather

Adafruits motorshield för Feather

Adafruit gör många roliga utvecklingskort och deras Feather-serie består av flera olika kort och shields som går att stapla på varandra. Här har jag beställt deras ESP8266 (Wifi-kort) och en motorshield som kan driva upp till 4 DC-motorer eller 2 stegmotorer. Genom att sätta ihop dessa två kort kan jag få en internet-uppkopplad motor-drivare. Det är rätt najs. Jag har lite lödning att göra för att…
Arduino Pro mini-klon från Kina

Arduino Pro mini-klon från Kina

Jag beställde hem några olika Arduino-kloner från AliExpress, bland annat den här "Pro mini". När man ska bygga in Arduinon i små projekt är det trevligt att ha dessa små kort. Tänkt dock på att du får fixa USB-interfacet och strömförsörjningen på egen hand. Jag brukar använda min "stora" Arduino (Uno) för att programmera dessa små. Det är rätt imponerande att ha 14 digitala in/utgångar och 4 anal…
Prototyp av bevattningssystemet med Arduino och pumpar

Prototyp av bevattningssystemet med Arduino och pumpar

Jag hittade en gammal digital-tv-box som får fungera som housing till mitt tomatbevattningsprojekt. I lådan har jag installerat två pumpar (en av dem syns överst i bild), en arduino, en display samt anslutningar för strömförsörjning och sensorerna som ska mäta fuktnivåerna i jorden. Här testkör jag hela systemet innan sista monteringen.
ESP8266 på ett NodeMCU

ESP8266 på ett NodeMCU

Det här är ett litet härligt kort, ett NodeMCU. Det har både USB-interface, spänningsomvandling och ett ESP8266 för trådlös uppkoppling via WiFi. Kortet är perfekt för IoT-projekt i hemmet eller där det finns WiFi och du behöver kommunicera med en server. Planen är att detta ska bli hjärnan i mitt tomat-bevattningsprojekt. För det projektet behöver jag kunna rapportera fuktighetsnivåerna i jorden …
ESP8266 för trådlös uppkoppling av bevattningssystemet

ESP8266 för trådlös uppkoppling av bevattningssystemet

ESP8266 är ett WiFi-kort med inbyggd processor och minne för enklare applikationer. Att ha en mikrodator med trådlös uppkoppling är fantastiskt för små roliga projekt i hemmet. Här håller jag på med mitt tomat-bevattningssystem som ska kunna rapportera fuktighetsnivå och ta emot kommandon från en server. ESP8266-kortet sitter på ett TinyMCU-kort som gör montering och lödning lite enklare. Det finn…
I djupet med mikrokontrollers: Förståelse av GPIO

I djupet med mikrokontrollers: Förståelse av GPIO

Mikrokontrollrar har revolutionerat världen av elektronik och robotbygge. En av de mest grundläggande men avgörande aspekterna av mikrokontrollrar är deras General Purpose Input/Output (GPIO) gränssnitt. I detta inlägg tänkte jag ta dig igenom vad dessa är och hur de kan nyttjas för att skapa interaktiva och responsiva robotar. Vad är GPIO? GPIO står för General Purpose Input/Output och är digita…
Egen 3D-printad låda för ESP8266-kort

Egen 3D-printad låda för ESP8266-kort

Innan jag skaffade en 3D-skrivare fick jag gå runt i återvinningspåsarna och försöka hitta nån gammal förpackning att använda till mitt elektronikprojekt. Det blev aldrig riktigt bra, alltid fel storlek och ofta besvärlig plast att bearbeta. Med min 3D-skrivare kan jag printa lådor som passar perfekt för mina projekt. Alla kontakter som behövs kan få snygga urtag i lådan. I den här modellen har ja…
Att välja rätt motor till en robot

Att välja rätt motor till en robot

Motorer finns överallt omkring oss och numera tar vi dem för givet. Det finns stora motorer som de i bilar och flygplan och små motorer som driver fläkten i datorn eller som snurrar på hårddisken. Man skulle kunna tro att om man behöver en motor är det bara att välja en med rätt dimension och så är man klar. Motorer har funnits så länge att detta problem borde vara löst, men så är det verkligen in…
Så programmerar du din robot för att undvika kollisioner

Så programmerar du din robot för att undvika kollisioner

Att programmera din robot för att undvika kollisioner kan vara ett utmanande men nödvändigt steg i byggprocessen. Detta är inte bara viktigt för att förhindra skador på objektet, men det är också avgörande för att roboten ska kunna fungera på ett effektivt och autonomt sätt. I denna guide kommer vi att diskutera några av de grundläggande stegen för att utrusta din robot med ett antikollisionssyste…