Сервомоторите са много полезни в електрониката и вградените системи. Можете да намерите използването на серво мотор навсякъде около вас, те се използват в играчки, роботи, CD тава на компютър, автомобили, самолет и т.н. Причината за този широк обхват е, че серво моторът е много надежден и прецизен. Можем да го завъртим под всеки определен ъгъл. Предлагат се в широк диапазон, образуват двигатели с голям въртящ момент до двигатели с нисък въртящ момент. В този урок ще свържем сервомотор с микроконтролер 8051 (AT89S52).
Първо трябва да разберем принципа на работа на сервомоторите. Сервомоторът работи върху принципа на ШИМ (широчинно-импулсна модулация), което означава, че ъгълът му на въртене се контролира от продължителността на прилагания импулс към неговия контролен ПИН. По принцип серво моторът се състои от мотор с постоянен ток, който се управлява от променлив резистор (потенциометър) и някои предавки. Високоскоростната сила на DC мотора се превръща в въртящ момент от Gears. Знаем, че РАБОТА = СИЛА X РАЗСТОЯНИЕ, в DC двигател Силата е по-малка и разстоянието (скоростта) е висока, а в Servo, силата е висока и разстоянието е по-малко Потенциометърът е свързан към изходния вал на серво, за да се изчисли ъгълът и да се спре постояннотоковият двигател на необходимия ъгъл.
Сервомоторът може да се върти от 0 до 180 градуса, но може да достигне до 210 градуса, в зависимост от производствения пръстен. Тази степен на въртене може да се контролира чрез прилагане на импулс LOGIC ниво 1 за продължителност между 1ms до 2ms. 1 ms може да завърти серво на 0 градуса, 1,5 ms може да се завърти на 90 градуса и 2 ms импулс да го завърти на 180 градуса. Продължителността от 1 до 2 ms може да завърти серво мотора до произволен ъгъл между 0 до 180 градуса.
Електрическа схема и работно обяснение
Серво моторът има три проводника Червен за Vcc (захранване), Кафяв за Земя и Оранжев е контролен проводник. Контролният проводник може да бъде свързан към 8051, ние го свързахме към Pin 2.1 от 8051. Сега трябва да задържим този щифт на Logic 1 за 1ms, за да го завъртим на 0 градуса, 1.5ms за 90 градуса, 2 ms за 180 градуса. Използвали сме таймери от чипове от 8051, за да създадем забавяне. Създадохме закъснение от 50us чрез функцията “servo_delay” и използвахме цикъл “for”, за да създадем закъснение в кратно на 50us.
Използваме таймер 0 и в режим 1, така че поставихме 01H в регистъра TMOD. Режим 1 е 16 битов режим на таймер и TH0 съдържа висок байт, а TL0 съдържа нисък байт от 16 битов таймер. Поставихме FFD2 в 16-битов регистър на таймера, FF в TH0 и D2 в TL0. Поставянето на FFD2 ще създаде забавяне от около. 50 us с кристала от 11.0592MHz. TR0 и TF0 са битовете на TCON регистъра, TR щифт, използван за стартиране на таймера, когато е настроен и спиране при нулиране (0). TF е флаг за препълване, зададен от хардуера при преливане и трябва да го нулирате чрез софтуер. По принцип TF казва завършването на таймера и се задава от хардуера, когато 16 таймера преминава от FFFFH към 0000H. Можете да прочетете за „Таймерите 8051“, за да разберете изчисляването на стойността в регистрите на таймерите, за да създадете закъснение от 50 us.
Сега, когато се измерва от CRO, 13 цикъла на функция servo_delay ще дадат забавяне от 1 ms, така че ние започнахме от 1 ms (13 цикъла) и отидохме до 2 ms (26 цикъла), за да завъртим серво от 0 до 180 градуса. Но бавно увеличихме закъснението от 1 ms, разделихме прозореца от 1 ms до 2 ms на 7 части като 1,14 ms, 1,28 ms, 1,42 ms и така нататък, така че сервомеханизмът ще се върти в кратно на прибл. 26 градуса (180/7). След 180 автоматично ще се върне до 0 градуса.