Stap 2: Overall ontwerp
De hersenen van het systeem is de Arduino Uno, waarin een AVR microcontroller kloksnelheid van 16MHz.
1000 keer per seconde leest de microcontroller de huidige stand van de gyroscoop en de accelerometer; updates zijn interne model van het bot of dat model beslist hoe snel te lopen de motoren aan de beste balans de bot. (De code is al gedeeld op mijn repo Github .)
De gyro is een gyro tarief, wat betekent dat de uitvoer evenredig met het huidige tempo van rotatie is. Als u wilt schatten het huidige tilt, moet de microcontroller som van de binnenkomende waarden, die het leest met behulp van een analoog naar digitaal convertor. Helaas, geen gyro of ADC is perfect, wat resulteert in fouten in de sommatie die de neiging om te groeien in de tijd. Als het bot alleen een gyro gebruikt om te proberen om evenwicht te brengen dan haar idee van "up" langzaam na verloop van tijd drift zou en het zou uiteindelijk omvallen.
Om het tegengaan van de gyro neiging te drijven, gebruikt de bot een 2D versnellingsmeter voor het meten van de richting van de zwaartekracht. Wanneer de gyro-waarden op te tellen voegt het in een klein deel van de raming van de versnellingsmeter in de berekening. Net genoeg om het evenwicht van de drift. Het kan niet toevoegen te veel omdat de versnellingsmeter een zeer luidruchtige sensor is-het pikt trillingen van de wielen en de versnelling van de motoren.
De gyro en versnellingsmeter gemonteerd op de as van rotatie van de wielen te krijgen van het beste signaal.
Zodra de microcontroller hoe snel besloten is om uit te voeren de motoren het maakt gebruik van puls breedte modulatie te variëren van hun snelheid en drijft hen door middel van het schild van de Ardumoto. Het schild is noodzakelijk omdat de motoren veel meer stroom trekken dan de microcontroller op haar eigen leveren kan.
De BlueSMIRF-module biedt seriële-over-Bluetooth, waardoor het bot in beide richtingen communiceren met een ander Bluetooth-apparaat. Ik mijn Android telefoon gebruiken om te sturen van de seriële gegevens naar de console via de Android Debug Bridge. Ik ben ook van plan om de andere kant mijn telefoon gebruiken als afstandsbediening signalen.