Подключение к микроконтроллеру PIC сервомотора (серводвигателя)


В данной статье мы рассмотрим подключение к микроконтроллеру PIC сервомотора (серводвигателя) с помощью программ MPLAB and XC8. Ранее на нашем сайте мы уже рассматривали серию обучающих статей по микроконтроллерам PIC – если вы начинающий в изучении микроконтроллеров PIC, то советуем их прочитать прежде чем приступать к изучению данной статьи.

Внешний вид подключения к микроконтроллеру PIC сервомотора

В предыдущей статье на нашем сайте мы рассмотрели основы использования ШИМ в микроконтроллерах PIC – если вы ее успешно освоили, то поздравляем, вы практически готовы к подключению к микроконтроллеру PIC сервомотора.

Что такое сервомотор

Сервомотор (Servo Motor) – это тип исполнительного механизма, который допускает управление углом поворота. Существует много типов сервомоторов, некоторые из них представлены на следующем рисунке.

Внешний вид нескольких типов сервомоторов

Любительские сервомоторы пользуются достаточно большой популярностью, поскольку они дешевы и позволяют производить управление движением. Особенной популярностью они пользуются в различных радиоуправляемых моделях. Они устраняют необходимость разработки системы управления для каждого приложения.

Большинство любительских сервомотора имеют угол поворота 0-180°, но вы можете найти в продаже и сервомоторы с углом поворота до 360° если вам это необходимо. Существует два типа сервомоторов: первый – с пластмассовой коробкой передач (Plastic Gear Servo Motor), второй – с металлической коробкой передач. Сервомоторы с металлической коробкой передач используются преимущественно в "жестких" условиях эксплуатации, но, как правило, они имеют более высокую цену.

Мощность серводвигателей измеряется в кг/см (килограмм на сантиметр), большинство любительских серводвигателей имеют мощность 3 кг/см, 6 кг/см или 12 кг/см. Данная характеристика (кг/см) свидетельствует о том, вес какой величины ваш сервомотор может поднять на определенное расстояние. Например, 6 кг/см говорит о том, что сервомотор может поднять 6 кг если этот груз находится на расстоянии 1 см от оси сервомотора. Чем дальше груз находится от оси сервомотора тем, соответственно, меньший вес может поднять сервомотор.
Подключение сервомоторов к микроконтроллерам

Подключение сервомоторов к микроконтроллерам

Подключение любительских сервомоторов к современным микроконтроллерам достаточно просто. Они имеют всего три провода, два из которых используются для подачи питания, а третий – для приема управляющих сигналов от микроконтроллера. В данном проекте мы будем использовать сервомотор с металлической коробкой передач MG995, который широко применяется в современных радиоуправляемых моделях. Его внешний вид показан на следующем рисунке.

Внешний вид серводвигателя MG995 Распиновка серводвигателя MG995

Цвет проводов для вашего сервомотора может отличаться от приведенных на рисунке (см. даташит на конкретную модель серводвигателя).

Все сервомоторы работают от напряжения питания +5V, но необходимо обращать пристальное внимание на потребляемый сервомотором ток.

Ранее на нашем сайте мы рассматривали подключение сервомотора к следующим микроконтроллерам (платам):

Программирование работы с сервомотором на микроконтроллере PICF877A

Прежде чем приступать к программированию работы с сервомотором необходимо знать что управляющим сигналом для него является ШИМ сигнал и угол поворота оси сервомотора зависит от коэффициента заполнения ШИМ сигнала как показано на следующем рисунке.

Зависимость угла поворота оси сервомотора от коэффициента заполнения ШИМ сигнала

Частота управляющего сигнала ШИМ для каждого сервомотора разная и ее необходимо уточнять в даташите на конкретную модель серводвигателя, однако для большинства используемых в настоящее время сервомоторов она равна 50 Гц.

Параметры ШИМ сигнала для сервомотора MG995 приведены на следующем рисунке.

Параметры ШИМ сигнала для сервомотора MG995

То есть если частота ШИМ сигнала для этого сервомотора равна 50 Гц, то период данного сигнала равен 20ms. В нашей предыдущей статье про ШИМ в микроконтроллерах PIC мы использовали частоту ШИМ сигнала равную 5 кГц. Поэтому для управления сервомотором MG995 такой ШИМ сигнал не подойдет.

И здесь существует определенная проблема, которая заключается в том, что микроконтроллер PIC16F877A не может формировать ШИМ сигналы с такой низкой частотой как 50 Гц используя модуль CCP. В соответствии с даташитом на него минимальная частота ШИМ сигнала в данном случае равна 1,2 кГц. Поэтому модуль CCP нам в данном проекте ничем не поможет.

Поэтому в данном проекте для формирования ШИМ сигнала с частотой 50 Гц мы будем использовать таймер. Более подробно об использовании таймеров в микроконтроллерах PIC вы можете прочитать в данной статье.

Мы установим для нашего таймера частоту предделителя 32 и сделаем так чтобы он переполнялся каждую 1 мкс. В этом случае общее время on и off для нашего ШИМ сигнала составит величину 20ms – то, что нам необходимо.

Таким образом, внутри нашей функции обработки прерывания от таймера мы будем подавать уровень high на контакт RB0 на определенное время time и подавать на него уровень low на оставшееся время периода (20ms – on_time).  Значением этого времени time мы будем управлять с помощью потенциометра, сигнал с которого будет подавать на модуль АЦП микроконтроллера.

А внутри нашей функции loop мы просто будем считывать значение с потенциометра и в соответствии с ним обновлять значение переменной on_time, которая и будет задавать коэффициент заполнения формируемого нами ШИМ сигнала.

Таким образом мы сформируем ШИМ сигнал с периодом 20ms и переменным коэффициентом заполнения, задаваемым с помощью потенциометра. Полный код программы проекта вы можете посмотреть в конце статьи.

Схема проекта

Схема подключения сервомотора к микроконтроллеру PIC представлена на следующем рисунке.

Схема подключения сервомотора к микроконтроллеру PICДанная схема почти такая же как в статье про использование ШИМ в микроконтроллерах PIC, только в ней вместо светодиода подключен сервомотор.

Тестирование работы проекта

Перед сборкой проекта в реальном "железе" мы проверили работу схемы в симуляторе Proteus. Смоделированная в Proteus схема проекта приведена на рисунке ниже. С помощью нее мы проверили различные углы поворота сервомотора.

Тестирование работы проекта в симуляторе Proteus (часть 1)

Тестирование работы проекта в симуляторе Proteus (часть 2)

Как вы можете видеть на представленных рисунках угол поворота сервомотора изменяется в зависимости от положения ручки потенциометра.

При сборке проекта в реальном "железе" мы просто удалили плату со светодиодом из предыдущего проекта и вместо нее подключили сервомотор.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Более подробно тестирование работы проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
70 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *