Zdravím,
mám tu na stole modelárske servo HiTec HS-475HB a snažím sa prísť na čo možno najlepší spôsob jeho riadenia. Pracujem momentálne s ATMEGA32L (prvý čo som doma mal), kryštál na vývojovej doske mám 4MHz.
Servo je potrebné riadiť pomocou PWM, frekvencia 50Hz, riadiaci impulz šírky 1 - 2ms. 1ms je natočenie serva úplne naľavo, 2ms úplne napravo (výrobca uvádza tuším 0,9 - 2,1ms, ale nech je tam zatiaľ radšej rezerva). 1,5ms je stredová poloha. A teraz ako na to, aby som vygeneroval takýto riadiaci signál?
Skúšal som časovač 0 v režime Phase Correct PWM mode. Keď sa dosnanem na fpwm 50Hz, na riadenie šírky impulzu mi zostane rozsah cca 8 krokov, čo je veľmi malé rozlíšenie. Tak som sa potrápil s časovačom T1 16bit, kde som dosiahol lepšie rozlíšenie. Problémy ale mám s nastavením frekvencie PWM na 50Hz. Tak teraz pracujem na tretej možnosti, a síce použití dvoch časovačov, T0 a T2. T0 bude generovať presnú frekvenciu PWM 50Hz a T2 na základe prerušenia od T0 vygeneruje impulz 1-2ms. Zabijem si s tým ale dva časovače. Na druhej strane, T0 na 50Hz môžem použiť súbežne na riadenie ďalších procesov.
Týmto zatiaľ neriešim žiadnu konkrétnu aplikáciu, len sa snažím naučiť perfektne zvládnuť riadenie PWM. Posledné riešenie by bolo podla mňa použiteľné aj na riadenie viacerých serv (napr. aj 16) s tým, že začiatok riadiaceho impuzlu by bol v jednom okamihu a koniec už podľa potrebnej polohy pre konkrétne servo. Príjem informácií o požadovaných polohách by som prijímal cez niektorú sériovú zbernicu.
Tak čo vy na to? Ako sa postaviť k riadeniu modelárskeho serva?
Janulo
phpBB Forum







