Innehållsförteckning:

Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO: 8 steg
Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO: 8 steg

Video: Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO: 8 steg

Video: Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO: 8 steg
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, November
Anonim
Image
Image
Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO
Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO
Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO
Skapa en fjärrstyrd Arduino självbalanseringsrobot: B-robot EVO

Av jjrobotsjjrobotsFölj mer av författaren:

Pybot: Python + 3D -tryckt robotarm
Pybot: Python + 3D -tryckt robotarm
Pybot: Python + 3D -tryckt robotarm
Pybot: Python + 3D -tryckt robotarm
Enkel motoriserad roterande display (Arduino baserad + styrd från din smartphone)
Enkel motoriserad roterande display (Arduino baserad + styrd från din smartphone)
Enkel motoriserad roterande display (Arduino baserad + styrd från din smartphone)
Enkel motoriserad roterande display (Arduino baserad + styrd från din smartphone)
Robotarmsgrepp
Robotarmsgrepp
Robotarmsgrepp
Robotarmsgrepp

Om: Vi älskar robotar, DIY och rolig vetenskap. JJROBOTS syftar till att föra öppna robotprojekt närmare människor genom att tillhandahålla hårdvara, bra dokumentation, bygginstruktioner+kod, "hur det fungerar" info … Mer om jjrobots »

-------------------------------------------------

UPPDATERING: det finns en ny och förbättrad version av denna robot här: B-roboten EVO, med nya funktioner

-------------------------------------------------

Hur fungerar det?

B-ROBOT EVO är en fjärrstyrd självbalanserande arduino-robot skapad med 3D-tryckta delar. Med bara två hjul kan B-ROBOT behålla sin balans hela tiden genom att använda sina interna sensorer och köra motorerna. Du kan styra din robot, få honom att röra sig eller snurra genom att skicka kommandon via en smartphone, surfplatta eller dator medan den håller balansen.

Denna självbalanserande robot läser sina tröghetssensorer (accelerometrar och gyroskop integrerade på MPU6000 -chipet) 200 gånger per sekund. Han beräknar sin inställning (vinkel i förhållande till horisonten) och jämför denna vinkel med målvinkeln (0º om han vill behålla balansen utan att röra sig, eller en positiv eller negativ vinkel om han vill gå framåt eller bakåt). Med skillnaden mellan målvinkeln (låt oss säga 0º) och den faktiska vinkeln (låt oss säga 3º) driver han ett styrsystem för att skicka rätt kommandon till motorerna för att behålla balansen. Kommandona till motorerna är accelerationer. Till exempel om roboten lutas framåt (robotens vinkel är 3º) skickar han ett kommando till motorerna för att accelerera framåt tills denna vinkel reduceras till noll för att bevara balansen.

Steg 1: Lite mer på djupet …

Lite mer på djupet …
Lite mer på djupet …
Lite mer på djupet …
Lite mer på djupet …
Lite mer på djupet …
Lite mer på djupet …

Det fysiska problemet som B-ROBOT löser kallas Inverterad pendel. Detta är samma mekanism du behöver för att balansera ett paraply ovanför din hand. Svängpunkten ligger under objektets masscentrum. Mer information om Inverterad pendel här. Den matematiska lösningen på problemet är inte lätt, men vi behöver inte förstå det för att lösa vår robots balansproblem. Vad vi behöver veta är hur vi ska göra för att återställa robotens balans så att vi kan implementera en kontrollalgoritm för att lösa problemet.

Ett styrsystem är mycket användbart inom robotik (en industriell automatisering). I grund och botten är det en kod som tar emot information från sensorer och målkommandon som ingångar och skapar följaktligen utsignaler för att driva robotaktuatorerna (motorerna i vårt exempel) för att reglera systemet. Vi använder en PID -controller (Proportional + Derivative + Integral). Denna typ av kontroll har 3 konstanter för att justera kP, kD, kI. Från Wikipedia: "En PID -kontroller beräknar ett" fel "-värde som skillnaden mellan ett uppmätt [ingång] och ett önskat börvärde. Kontrollenheten försöker minimera felet genom att justera [en utgång].” Så du berättar för PID vad du ska mäta ("Inmatningen"), där du vill att mätningen ska vara ("Börvärdet",) och variabeln du vill justera för att få det att hända ("Output".)

PID justerar sedan utgången och försöker göra ingången lika med börvärdet. Som referens, en vattentank som vi vill fylla upp till en nivå, ingång, börvärde och utmatning är nivån enligt vattennivåsensorn, önskad vattennivå och vattnet som pumpas in i tanken. kP är den proportionella delen och är huvuddelen av kontrollen, denna del är proportionell mot felet. kD är derivatdelen och tillämpas på derivatet av felet. Denna del beror på systemets dynamik (beror på roboten, viktmotorer, tröghet …). Den sista, kI tillämpas på integralen av felet och används för att minska stadiga fel, det är som en trim på den slutliga utgången (tänk på trimknapparna på en RC -bilratt för att få bilen att gå helt rak, kI tar bort förskjutningen mellan målet som krävs och det verkliga värdet).

På B-ROBOT läggs styrkommandot från användaren till motorns utgång (en motor med ett positivt tecken och den andra med ett negativt tecken). Till exempel om användaren skickar styrkommandot 6 för att svänga åt höger (från -10 till 10) måste vi lägga till 6 till vänster motorvärde och subtrahera 6 från den högra motorn. Om roboten inte rör sig framåt eller bakåt blir resultatet av styrkommandot en snurrning av roboten

Steg 2: Hur är det med fjärrkontrollen?

"laddar =" lat"

Rekommenderad: