handdator

Visa fullständig version : PID reglering



invidos
2011-07-26, 17:24
Hej!

Är helt ny inom quadrocoptrar, men har börjat bygga ihop min egna quadrocopter.
Jag har kommit så lång att jag försöker få in PID reglering på en axel, alltså bara 2 motorer.
Problemet är att den aldrig blir riktigt stabil utan den bara svänger, har använt ganska många olika variabler, och testar just nu med potentiometrar som ställer in kP, kI och kD värden.

http://www.dimensionengineering.com/de-accm3d.htm
använder den accelerometern för att bedöma vinkeln, och har byggt ett väldigt simpelt filter med hjälp av ett motstånd och en kondensator

http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=2109
http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=6456
motor och ESC.

http://aeronautikhobby.com/epages/Ballou.sf/sv_SE/?ObjectPath=/Shops/aeronautikhobby.com/Products/3s3000lipo
batteri

och allt det styrs utav en arduino uno

vet inte vad mer jag behöver säga... är ett helt vanligt PID program med ett servo bibliotek för att styra motorerna.
Någon som vet vad felet kan bero på?

Cox
2011-07-26, 20:37
Låter som att du får självsvägningar i regler kretsen, dvs den överkompenserar rörelsen och blir aldrig stabil. Det finns rutiner för att ta fram de "rätta" värdena på PID parametrarna, men om du kör med trial and error så kan du testa att använda enbart integrering, dvs enbart I parametern med övriga på 0. Hitta värdet på I där självsvängningen börjar och minska sedan detta med 10-20% för att inte få självsvängningar.

invidos
2011-07-26, 20:46
Jag har testat 2 mer mattematiska metoder för att få ut konstanterna, men inget har fungerat hittills så därför kör jag med trial and error. jag har däremot inte testat reglera enbart den integrerande då jag antagit att P och D måste vara ganska stabilt innan man kan tänka på att lägga in den integrerande. kanske är en dum fråga också, men är det helt fel att det tar ca 10ms per loop av programmet?

andv
2011-07-26, 22:13
Kul att du börjar från grunden! Om du vill spana på hur andra löst saker så finns ju alltid MultiWii koden (http://code.google.com/p/multiwii/source/browse/#svn%2Ftrunk%2FMultiWii) eller BaronPilot (http://www.elenafrancesco.org/arduino/baronpilot/)..

10 ms borde vara ca 100 Hz men glöm inte att du måste hinna med fler axlar och annat som ska göras :)
Multiwii verkar ha en cycle time på 2-4 ms dvs 250-500 Hz..

Hm.. PID på accelerometerns vinklel och input-en är börvärdes vinkeln?

henke2
2011-07-26, 22:42
PID regulator är spännande grejor som tar sin tid att kalibrera. Man måste veta ganska väl vad som förväntas för det skall fungera bra. Nu vet jag inte exakt hur din quad funkar, men jag mappar regelbundet bilar och där är det väl ungefär 5% som handlar om att hitta toppeffekten och 95% att få bilen att gå bra. just closed loop är ju att föredra, men tar sin tid att få ordning på eftersom man måste justera in alla möjliga driftsfall innan man hittar rätt.