Какво е контролер за серво мотор?
Дефиниция на контролер за серво мотор
Контролер (или драйвер) за серво мотор се дефинира като кръг, използван за контрол на позицията на серво мотора.
Кръг на драйвера за серво мотор
Кръгът на драйвера за серво мотор включва микроконтролер, източник на напрежение, потенциометър и конектори, които осигуряват прецизен контрол на мотора.
Ролята на микроконтролера
Микроконтролерът генерира PWM импулси на определени интервали, за да контролира точно позицията на серво мотора.
Източник на напрежение
Проектирането на източника на напрежение за контролер за серво мотор зависи от броя свързани мотори. Серво моторите обикновено използват източник на напрежение от 4.8V до 6V, при стандартните 5V. Прекомерно високо напрежение може да повреди мотора. Страничният ток варира в зависимост от момента и е по-нисък в режим на покой и по-висок при работа. Максималният страничен ток, известен като стопански ток, може да достигне до 1A за някои мотори.
За контрол на единичен мотор използвайте регулатор на напрежението като LM317 с радиатор. За множество мотори е необходим качествен източник на напрежение с по-висока токова способност. Хорош избор е SMPS (Switched Mode Power Supply).
Блоковата диаграма по-долу показва връзките в драйвера за серво мотор

Контрол на серво мотор
Серво моторът има три терминала.
Позиционен сигнал (PWM импулси)
Vcc (от източник на напрежение)
Земя

Угловата позиция на серво мотора се контролира чрез прилагане на PWM импулси с определена ширина. Продължителността на импулсите варира от около 0.5ms за 0-градусово завъртане до 2.2ms за 180-градусово завъртане. Импулсите трябва да се дават с честота около 50Hz до 60Hz.
За генериране на PWM (Pulse Width Modulation) вълна, както е показано на фигурата по-долу, можете да използвате или вградения PWM модул на микроконтролера, или времеви интервали. Използването на PWM блока е по-флексибилно, тъй като повечето семейства микроконтролери са проектирани така, че този PWM блок по-добре отговаря на нуждите на приложения като серво мотор. За различни ширини на PWM импулси трябва да програмирате вътрешните регистри съответно.
Сега, също така трябва да кажем на микроконтролера колко да се завърти. За тази цел можем да използваме прост потенциометър и ADC, за да получим ъгъла на завъртане, или за по-сложни приложения може да се използва акселерометър.

Алгоритъм на програмата
Нека проектираме програмата, за да контролираме единичен серво мотор, а входът за позиция се дава чрез потенциометър, свързан с пин на контролера.
Инициализирайте портовите пинове за вход/изход.
Прочетете ADC за желаната позиция на серво мотора.
Програмирайте PWM регистрите за желаната стойност.
Веднага щом активирате PWM модула, избраният канал PWM пин става висок (логика 1) и след като е достигната необходимата ширина, отново става нисок (логика 0). След активиране на PWM, трябва да стартирате таймер с забавяне от около 19 ms и да чакате, докато таймерът пристигне до изпълнение. Отидете на стъпка 2.
Има различни режими на PWM, които можете да използвате в зависимост от избранния микроконтролер. Трябва да се направи някаква степен на оптимизация в кода, за да контролирате серво мотора.
Ако планирате да използвате повече от един серво мотор, ще ви трябват толкова много канали PWM. На всеки серво мотор може да се даде PWM сигнал последователно. Но трябва да внимавате, че честотата на повторение на импулсите за всеки серво мотор се поддържа. В противен случай серво моторите ще загубят синхронизация.