Сервомотори дуже корисні в електроніці та вбудованих системах. Сервомотор можна знайти скрізь, він використовується в іграшках, роботах, лотці для компакт-дисків комп’ютера, автомобілів, літаків тощо. Причина такої широкої сфери полягає в тому, що сервомотор дуже надійний і точний. Ми можемо повернути його на будь-який конкретний кут. Вони доступні у широкому асортименті: від двигуна з великим крутним моментом до двигуна з низьким крутним моментом. У цьому підручнику ми збираємось з'єднати сервомотор з мікроконтролером 8051 (AT89S52).
Спочатку нам слід зрозуміти принцип роботи сервомоторів. Сервомотор працює за принципом ШІМ (широтно-імпульсна модуляція), тобто його кут повороту контролюється тривалістю поданого імпульсу до його контрольного PIN-коду. В основному серводвигун складається з двигуна постійного струму, який управляється змінним резистором (потенціометром) і деякими шестернями. Високошвидкісна сила двигуна постійного струму перетворюється на крутний момент Gears. Ми знаємо, що WORK = FORCE X DISTANCE, у двигуні постійного струму сила менше, а відстань (швидкість) велика, а в сервоприводі сила висока, а відстань менша. Потенціометр підключений до вихідного валу сервоприводу для обчислення кута і зупинки двигуна постійного струму на необхідному куті.
Сервомотор можна обертати від 0 до 180 градусів, але він може підніматися до 210 градусів, залежно від виробника кільця. Цю ступінь обертання можна контролювати, застосовуючи імпульс рівня LOGIC 1 на тривалість від 1 мс до 2 мс. 1 мс може обертати сервопривід на 0 градусів, 1,5 мс - на 90 градусів, а імпульс 2 мс - на 180 градусів. Тривалість від 1 до 2 мс може повертати сервомотор на будь-який кут від 0 до 180 градусів.
Принципова схема та робоче пояснення
Сервомотор має три дроти Червоний для Vcc (джерело живлення), Коричневий для Заземлення, а Оранжевий - це провід управління. Провід управління можна підключити до 8051, ми підключили його до виводу 2.1 8051. Тепер нам потрібно тримати цей висновок на логіці 1 на 1 мс, щоб повернути його на 0 градусів, 1,5 мс на 90 градусів, 2 мс на 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,0592 МГц. TR0 і TF0 - це біти регістру TCON, штифт TR, який використовується для запуску таймера при встановленні та зупинки при скиданні (0). TF - це прапор переповнення, встановлений апаратним забезпеченням при переповненні, і його потрібно скинути за допомогою програмного забезпечення. В основному TF повідомляє про завершення роботи таймера і встановлюється апаратним забезпеченням при переході 16 таймерів з FFFFH на 0000H. Ви можете прочитати про “Таймери 8051”, щоб зрозуміти розрахунок значення в регістрах таймерів, щоб створити затримку 50 с.
Тепер, коли вимірюється від CRO, 13 петель функції servo_delay дадуть затримку 1 мс, тому ми почали з 1 мс (13 петель) і пішли до 2 мс (26 петель), щоб повернути сервопривід від 0 до 180 градусів. Але ми повільно збільшували затримку з 1 мс, ми розділили вікно від 1 мс до 2 мс на 7 частин, таких як 1,14 мс, 1,28 мс, 1,42 мс і так далі, тому сервопривід буде обертатися кратно приблизно. 26 градусів (180/7). Після 180 він автоматично повернеться до 0 градусів.