Self balancing one wheeled electric skateboard (15 / 28 steg)
Steg 15: styrsystem
Återigen, se min hemsida (länk på sidan 1) för mer info på programvara kontrollprinciper etc.
Den grundläggande tanken är denna:
gyroangledt = mängden tilt från gyro efter att de sista behandlingen
newangle (av tilt från vertical)=(0.99*(oldangle+gyroangledt)) + (0,01 * accelerometerTilt)
Detta ger den nya lutningsvinkel från vertikala. Observera hur 1% av accelerometer signal infogas varje gång med 99% av gyro-derived kortsiktiga vinkel ändras beräkningen. Denna jämnar ut variationer i accelerometer läsning med tiden (genomsnitt ut ljudet så det själv avbryter), långsamt korrigerar alla noll-punkten drift i gyrot men fortfarande tillåter gyro att hantera de omedelbara kortsiktiga förändringarna i tilt.
linearvelocity = linearvelocity + (0.00004 * vinkel)
Detta innebär "är vi fortfarande dricks?" och om så långsamt öka makt motorn. Detta är hur du kontrollera hastigheten manuellt. Om du håller styrelsen kontinuerligt lutar, kommer det att sakta påskynda i riktning du luta den.
Level=((K1*Angle) + (k2 * anglerate) + linearvelocity) * overallgain
"anglerate" är från gyro dvs är de omedelbara kortsiktiga "rate för tippning"
Nivå styr kraften skickas till motor (PWM månadskapacitet).
K1 är ca 4,5
K2 är om 0,5
Overallgain är just det - typ av en "accelerator" knopp på Kontrollpanelen - om set för låg styrelsen känns slarvig, för hög och det svänger vilt!
Slutligen fungerar hela bara eftersom detta program looping ungefär 100 gånger per sekund.