Řízení serva - teorie
Z každého modelářská serva vede třížilový kablík a jednotlivé žíly jsou v barvě černá , červená a žlutá. Černá je nula - GND , červený Vcc - 5-6V . Červený a černý tedy zajišťuje napájení. Žlutá (někdy žlutooranžová) je ovládání serva. Sem kontrolér nebo RC přijímač modelářské soupravy posílá v pravidelném intervalu 50Hz (každých 20ms) kladný pulz, na jehož šířce závisí natočení serva. V drtivé většině případů je při délce pulzu 1500us servo v neutrální pozici (střed). Se zkracováním pulzu až k 600us se servo natáčí vlevo, s prodlužováním až k 2400us pak vpravo. Je dobré vědět, že každé servo má jiné krajní hodnoty a není vůbec dobré, pokud je budeme překračovat. Mechanika serva je pak nepříjemně zatěžovaná kroutícím momentem serva a může se v takové situaci lehce poškodit. Právě proto je u zde uvedených kontrolérů serv možnost definovat minimální a maximální šířku pulzu a tyto hodnoty uložit do EEPROM obvodu. Tím si zajístíte bezpečný provoz serva i v případech, že do kontroléru pošlete hodnoty , které tyto meze přesahují. Kontrolér je ignoruje a tím modelářské servo chrání.
Jak krajní hodnoty výchylek serva zjistíte ?
Pokud použijete ServoConfig, připojíte ke kontroléru servo a zapnete napájení. Servo se nastaví do středové polohy. Posuvníkem hrubě myší nastavíte výchylku serva a pak pokračujete šipkou na klávesnici, hodnota délky impulzu se zvětšuje (nebo zmenšuje) o 1us . Až se servo dostane na hranici výchylky, dobře to poznáte. Vychylka se nezvětšuje a pouze roste hluk zatíženého motoru serva. Pokud možno okamžitě proveťte opačný posun o cca 10us (hodnota je individuální, ale lehce rozeznáte, kdy už servo "tlačí do mantinelů") a to by měla být max. nebo min. poloha serva.
Jiná možná metoda je měřit odebíraný proud serva. Pokud je v za hranicí krajní polohy , proud začne narůstat a to je to místo, kde se musíme vrátit opět o cca 10us a hodnotu zafixovat uložením do EEPROM kontroléru. Pak máte jistotu, že využíváte maximální možný rozsah serva a zároveň ho chráníte před mechanickým poškozením.
Uvedené kontroléry generují na výstupních pinech pro každé servo signál s rozlišením až 0.5us a s přesným kmitočtem opakování 50hz. Dodržet tak přesného časování se podařilo využitím 16bitového TIMERu. Uvedeným algoritmem je možno obsluhovat 8 až 16 modelářských serv. V plánu je i varianta s ATMega162 která obsahuje 2x 16bitový TIMER a tím by bylo možné ovládat současně až 32 serv.
Pokud jsem Vám zamotal hlavu, zde máte pár odkazů s touto tématikou:
https://www.rcm-pelikan.cz/index.php?sec=list&storage=71
https://vlastikd.webz.cz/bastl/serva.htm
https://robotika.cz/guide/servo/cs
3D animace serva Hitec HS422 najdete na stránce Odkazy (je to v polštině ale moc to nevadí)