LINUSBot - rad efterföljare Robot - med PID control
LINUSBot - rad efterföljare Robot - med PID control
LINUSBot - PID ControlDetta är ett tillägg till den första "instructables" LINUSBot (linje efter robot).
Nu roboten har kontroll görs av en PID-regulator, kontrollera proportionella, Integral och derivat. Detta gör rörelserna på böjar mycket jämnare och under raksträckor, det kan utvecklas snabbare, att nå maximal hastighet.
PID control ger roboten en "lärande", orsakar roboten att utveckla bättre kurvtagning och rak krets.
Nu, en kort introduktion och översikt över PID control.
I grunden är utför denna typ av styrenheten följande åtgärder:
1 - proportionell reglering:
Denna controler multiplicerar nuvarande "fel" av en konstant Kp.
"Fel" är skillnaden mellan faktiska produktionen och den önskade ut och matas in i systemet, dvs:
De faktiska resultaten subtraheras från utdata önskas (börvärde), så felet beräknas. Detta fel sätts in PID-regulator som indata, och PID-regulator (beräkning av villkoren P, jag och D), kommandon systemet för att eliminera felet.
Vilket garanterar vinst behövs för att komma nära den önskad utsignalen som snabbt som möjligt och med bästa stabilitet.
2 - integrerad kontroll:
Begreppet Integral multiplicerar det aktuella felet och dess varaktighet av en konstant Ki, att göra en summering av all denna information.
Integral term när den läggs till på proportionell sikt. accelererar processen för att nå stabilt tillstånd av systemet, förutom att ge en signal närmare till önskad utgång. Med andra ord, det eliminerar också (eller åtminstone försöka eliminera) återstående felet, kommer snabbare till önskat resultat.
3 - derivat kontroll:
Härledda benämna, orsakar förändringstakten felet signalen multipliceras med en konstant Kd. Intension är att förutsäga felet och därmed minska takt med vilken fel producerar förändringar i systemet.
Vi kan använda dessa tre villkor tillsammans för att bilda en PID-regulator, eller deras variaçãoes såsom:
P controller (ibland används):
I detta fall är användning av små värden för konstanten Kp är det bästa sättet att komma till önskat värde, men dess kontroll långsam (att det tar för att komma till önskat värde). Om du ökar värdet på Kp kan en riktpriset uppstå.
PI controller (vanligast):
Det tar bort den kvarvarande delen av fel i ärendet stabilitet (förbättra Korttidsreaktion), men i detta fall kan du få mer överskridande och också inversion stat, inträffar system svängning och orsakar instabilitet, systemet kan vara alltför dämpade, eller under-dämpad eller oscillerande.
Denna typ av kontroll gör systemet långsammare. Med hjälp av större värden av Ki, du kan lämna systemet snabbare, men ökar överskridandet och minska marginalen av stabiliteten i systemet.
PD controller (används sällan):
Används för att minska överskridandet magnetude av system som använder integrerad controller och förbättra systemets stabilitet. Men härledda styrenheter förstärker buller fel term och kan lämna systemprocessen instabil. PD controller minskar tiden för att nå önskat värde avsevärt... för den härledda vinsten Kd att hög. Detta minskar tid som kontroll, men ökar bandbredden för systemet, lämnar systemet känsliga för buller.
PID-regulator (ibland används):
Med PID (kombination av PI + PD), kan vi ta bort system fel förhållandet och minska svarstiden med ett rimligt svar transistória (utan svängningar eller instabilitet).
Denna studie kan hittas på:
http://www.youtube.com/watch?v=wbmEUi2p-na
http://en.wikipedia.org/wiki/PID_controller
Detta är det grundläggande sättet att genomföra ett PID via mjukvaran:
previous_error = 0
integrerad = 0
start:
fel = setpoint - measured_value
integrerad = integralen + fel * dt
derivatan = (fel - previous_error) / dt
output = Kp * fel + Ki * integrerad + Kd * derivat
previous_error = fel
wait(DT)
gå till start
I "LINUSBot" design användes följande parametrar:
KP = 1/20
KI = 1/10000
KD = 3/2
Fullständiga koden för Arduino kan hämtas från länken:
http://www.4shared.com/file/iPVAVCwy/LINUSBot_9_3pi_modelo_PID.html
Titta på videon och kolla in resultaten.
Se dig i nästa projekt.
Tack
Andra projekt: