Stap 15: controlesysteem
Nogmaals, zie mijn website (link op pagina 1) voor meer info over software controlebeginselen enz.
Het basisidee is dit:
gyroangledt = hoeveelheid tilt van gyro sinds laatste lezing is genomen
newangle (van tilt uit vertical)=(0.99*(oldangle+gyroangledt)) + (0.01 * accelerometerTilt)
Dit geeft de nieuwe hoek van tilt van verticaal. Merk op hoe de 1% van de versnellingsmeter signaal telkens met 99% van de gyro afkomstige korte hoek verandering berekening wordt ingevoegd. Deze hiermee uit de variaties in de versnellingsmeter lezen met tijd (gemiddelden uit het geluid zodat het zelf annuleert), langzaam corrigeert eventuele drift nul-punt in de gyro maar staat nog steeds de gyro om de momentane korte termijn veranderingen in tilt.
linearvelocity = linearvelocity + (0.00004 * hoek)
Dit betekent "zijn we nog steeds storten?" en als kracht de motor zo langzaam te verhogen. Dit is hoe u controle van de snelheid handmatig; Als u de Raad van bestuur voortdurend gekanteld houdt, het langzaam zal versnellen in de richting zijn u het kantelen.
Level=((K1*Angle) + (k2 * anglerate) + linearvelocity) * overallgain
"anglerate" is van gyro d.w.z. is de onmiddellijke korte termijn "tarief van kantelen"
Niveau besturingselementen macht worden verzonden naar de motor (de taakcyclus van PWM).
K1 is ongeveer 4.5
K2 is ongeveer 0,5
Overallgain is precies dat - soort een "accelerator"-knop op het bedieningspaneel - als set te laag bestuur slordig, te hoog voelt en het oscilleert wild!
Tot slot, het hele ding werkt alleen omdat dit programma is ongeveer 100 keer per seconde in een lus.