ArduRoller balans bot (6 / 8 steg)
Steg 6: kod
Koden i huvudsak genomför en PID-regulator för lutningen. Den har en hel hög integrerad benämner, som orsakar bot till överskridande när det korrigerat för en knuff. Som tenderar att null ut den bot tendens att glida längs, balansera upprätt men inte stillastående. Detta är den viktigaste linje som summerar PID villkoren:
hastighet = tilt_rads_estimate * TILT_FACT +
tilt_int_rads * TILT_INT_FACT +
gyro_rads_per_sec * D_TILT_FACT;
Det finns flera ställen som du kan behöva justera i koden för att få det att fungera med din bot:
GYRO_V_PER_DEG_PER_SEC konstanten anger hur mycket utdata från din särskild gyro ändras för en förändring av en grad per sekund i rotationen. Jag tyckte att min var i slutet av den klockformade kurvan i databladet.
Likaså anges ACCEL_V_PER_G konstanten för accelerometern.
Du kan också använda formuläret ingångar krukor att justera andra värden som X-förskjutning, som lutar bot bakåt eller framåt. Detta måste vara rätt inställda annars bot kan inte jämnas till.
På knappen orsakar bot ange kalibrering läge i 10 sekunder. För att använda den, låg bot på ryggen och tryck på knappen sedan lämna den i 10 sekunder. Det kommer automatiskt kalibrera den gyro rate null punkten.