Stap 4: De Controller
Een standaard servo werkt bij 50Hz, wat betekent dat het nodig heeft om een puls op de bedieningsleiding (Hitec - gele degene) elke 20ms.
De breedte van de puls in de actieve status (taakcyclus) bepaalt de hoek van de servo.
Deze modulatie van de pulsbreedte PWM - Pulsbreedtemodulatie genoemd.
1,25 ms - 0 deg.
1.50 ms - 90 deg.
1,75 ms - 180 graden.
De Code
De beste methode - Corrigeer me als ik verkeerd ben - PWM maken met ATmega voor twee servo's is door de 1ste servo verbinden met OC1A en de 2e die OC1B en elk van deze timers uitvoer PWM program.
Nu de ontwikkeling boord ik heb en gebruik is AVR-LIP (ECAVR) en OC1A en OC1B zijn reeds genomen door het LCD-scherm en de piëzo-zoemer.
Dus - met de hulp van [frakk2136] www.avrfreaks.net/index.php - ik gebruikte verschillende methode.
Ik OC1A te produceren snelle PWM geprogrammeerd en gebruikt van interrupts terwijl de servo's zijn verbonden aan PA4 & PA5.
Hebt u de code volgens uw systeem te wijzigen.
Enkele opmerkingen
Hier drie versies:
Labyrinth_Auto
Het spel automatisch gespeeld volgens een reeks instructies.
De code werkt geweldig, maar het labyrint mechanisme slechts kan niet goed genoeg worden gekalibreerd.
Nu, voeg enkele fysieke factoren zoals de zwaartekracht, wrijving, spanning (vooral deze X-factor) etc. en, goed, soms is de bal vallen in dit gat en soms ook naar die ene.
Labyrinth_Manual_RS-232
De microcontroller krijgt instructies van de PC-toetsenbord (pijltoetsen) via de seriële poort.
De AVR-LIP werkt op 4Mhz, zodat de maximale baud-rate die het aankan zonder fouten is 19200 die is te traag en niet zo comfortabel.
Labyrinth_Manual_Switches
Vier schakelopties zijn verbonden met de AVR.
Werkt geweldig.
TODO
[ X ] analoge Joystick
[ X ] digitale Joystick
[ X ] versnellingsmeter
[ V ] Switches
Computer-visie van [ X ]
* ([ X ] | [V] = Status)