Серводвигатели очень полезны в электронике и встроенных системах. Вы можете найти применение серводвигателя повсюду вокруг себя, они используются в игрушках, роботах, лотках для компакт-дисков компьютеров, автомобилях, самолетах и т. Д. Причина такого широкого применения в том, что сервомотор очень надежен и точен. Мы можем повернуть его на любой конкретный угол. Они доступны в широком диапазоне, от двигателей с высоким крутящим моментом до двигателей с низким крутящим моментом. В этом руководстве мы собираемся подключить серводвигатель к микроконтроллеру 8051 (AT89S52).
Для начала нам нужно понять принцип работы серводвигателей. Серводвигатель работает по принципу ШИМ (широтно-импульсная модуляция), это означает, что его угол поворота контролируется длительностью импульса, подаваемого на его контрольный PIN-код. В основном серводвигатель состоит из двигателя постоянного тока, который управляется переменным резистором (потенциометром) и некоторыми шестернями. Сила высокой скорости двигателя постоянного тока преобразуется в крутящий момент с помощью шестерен. Мы знаем, что РАБОТА = СИЛА X РАССТОЯНИЕ, в двигателе постоянного тока сила меньше, а расстояние (скорость) высокое, а в сервоприводе сила высокая, а расстояние меньше. Потенциометр подключен к выходному валу сервопривода, чтобы рассчитать угол и остановить двигатель постоянного тока на требуемом угле.
Серводвигатель можно вращать от 0 до 180 градусов, но он может вращаться до 210 градусов, в зависимости от производителя. Этой степенью вращения можно управлять, подавая логический импульс уровня 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 для создания задержки. Мы создали задержку в 50 мксек с помощью функции «servo_delay» и использовали цикл «for» для создания задержки, кратной 50 мкс.
Мы используем таймер 0 и режим 1, поэтому мы поместили 01H в регистр TMOD. Режим 1 - это режим 16-битного таймера, а TH0 содержит старший байт, а TL0 - младший байт 16-битного таймера. Мы поместили FFD2 в 16-битный регистр таймера, FF в TH0 и D2 в TL0. Установка FFD2 создаст задержку прибл. 50 мкс с кристаллом 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 градусов.