Главная » Статьи » Как подключить |
Сервопривод, как и шаговый двигатель, является элементом точной кинематики, позволяющий достигать точное позиционирование механизмов. Но в отличии от шагового двигателя, сервопривод имеет обратную связь, позволяющую в любой момент отследить точный угол поворота вала. В качестве источника обратной связи могут быть использованы различные типы энкодеров и потенциометры. В статье рассмотрим подключение и работу с младшими представителями сервоприводов - т.н. сервомашинками - горячо любимыми среди роботостроителей и моделистов.
Конструктив Сервомашинка состоит из корпуса, в котором заключен небольшой коллекторный электромотор, редуктор и управляющая электроника. В качестве обратной связи применяются потенциометры. Поэтому эти сервы имеют ограничения по углу поворота вала вокруг оси. Так, в приобретенных мной сервах Futaba S3003, угол поворота выходного вала составляет 225°. Технические характеристики Futaba S3003
Потенциометр обратной связи посажен прямо на выходной вал, благодаря ему блок управления сервомашинки отслеживает точное положение вала:
сопротивление потенциометра
изменяется пропорционально
углу поворота. Считав сопротивление, блок управления сравнивает это значение с тем, которое должно быть при заданном положении вала. Если эти значения отличаются, блок управления дает команду двигателю повернуть вал в заданном направлении, уменьшая разницу значений. Достигнув положения вала, когда значение с потенциометра совпадает с заданным значением, двигатель останавливается. Считывание значения с потенциометра и его сравнение происходит с большой частотой, поэтому выходной вал будет стремиться занять заданное положение при изменении внешней нагрузки. Конструкция сервомашинки выполнена таким образом, что крутящий момент от двигателя к выходному валу передается через редуктор с большим передаточным числом, поэтому при малых размерах и энергозатратах, сервомашинки могут обеспечивать большую тягу.
Управление В качестве управляющего сигнала служит импульсный сигнал с периодом 20 мс и с длительностью от 0,8 до 2,2 мс. Это некий стандарт управления сервомашинок. Чем длинее пришел импульс, тем на больший угол повернется вал сервомашинки. Для разгона сервомашинки период следования импульсов можно уменьшить до 10 мс.
Управляющий сигнал подается на серву по сигнальному проводу S. В моей сервомашинке он белый, в некоторых моделях - желтый. Помимо сигнального провода из сервомашинки выходят два провода - линии питания - земля (черный) и питание (красный) Программная часть Как видно управлять сервой достаточно просто - достаточно гнать импульсный сигнал с нужной частотой и скважностью. Этот сигнал можно генериовать ШИМ, или написать свою функцию обработки прерывания по таймеру. Но в Bascom-AVR уже есть встроенная команда для управления сервомашинками - Servo. Ее и рассмотрим. Для начала необходимо сконфигурировать подключение сервомашинок:
Config Servos = X , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = Var
Servos = X ; указывается количество подключаемых сервомашинок, возможно подключение до 14 серв. Servo1 = Portb.0 ; указывается порт подключения первой сервы Servo2 = Portb.1 ; указывается порт подключения второй сервы Reload = Var ; здесь Var время в микросекундах, которое проходит между прерываниями от таймера. По умолчанию для организации прерываний используется Timer0, поэтому использовать его в своих целях уже не получиться. Bascom-AVR позволяет перебросить обслуживание прерываний на любой другой таймер, например чтобы освободить Timer0 и задествовать Timer1 достаточно указать это в строке конфигурации:
Config Servos = 2, Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1
После того как все сконфигурировали остается только рулить нашей сервомашинкой. Это делается следующей командой
Servo(a) = F
а - порядковый номер сервомашинки F - переменная, значение которой задает угол поворота вала сервы Тестовый код целиком:
$regfile = "m8def.dat" 'микроконтроллер ATmega8
$crystal = 8000000 'частота работы 8МГц 'конфигурируем порты для подключения сервоприводов Config Portb.0 = Output Config Portb.1 = Output 'настраиваем подключения двух сервомашинок Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 15 Dim F As Byte 'переменная для первой сервы Dim S As Byte 'переменная для второй сервы 'разрешаем прерывания Enable Interrupts F = 15 'значением переменной задается угол поворота вала сервомашинки S = 70 Do Servo(1) = F Servo(2) = S Loop End
Схему подключения не привожу, думаю один сигнальный провод проблем не вызовет ;) Его можно подключать к порту микроконтроллера напрямую, а можно через резистор сопротивлением пару сотен ом - для перестраховки. Меняя значения перемменных F и S можем менять угол поворота первой и второй сервомашинок соответственно. Чем меньше значение параметра Reload, тем шустрее наши сервомашинки будут поворачиваться на нужный угол. Для своих серв подобрал рабочий диапазон значений Servo(a), в которых вал может вращаться. Крайнее положения вал занимает при значении 0 и 150, соответственно при значении 75 вал занимает промежуточное положение. Servo(a) =0 Servo(a) =75 Servo(a) =150
| ||||||||||||||||||
Просмотров: 47847 | Комментарии: 16
| Теги: |
Всего комментариев: 16 | ||||||||||||||
| ||||||||||||||
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |