Подключение сервомашинки. Что такое сервопривод, управление сервоприводом

Думаю любой человек представляет себе, что такое электродвигатель, нет? — тогда вспомните какой нибудь вентилятор. Какая характерная черта? Правильно, подали напряжение он крутится, сняли напряжение — не крутится. Сервопривод, это тоже движок, но в отличие от других, на сколько скажешь ему повернуться, на столько он и повернется и остановится. Пока держится управляющий сигнал, сервопривод будет фиксировать свое положение. Можете его хоть руками покрутить, он все равно вернется в заданное положение.

Угол на который поворачивается серва, задается шириной импульса. Стоит уточнить небольшую тонкость, сервоприводы бывают разные. Бывают такие, которые крутятся постоянно в определенную сторону, при этом ширина импульса влияет только на скорость поворота. Бывают многооборотистые. Те о которых речь пойдет дальше, на сайте производителя имеют явную маркировку, в которой указан угол поворота. Поэтому учтите если серва, не имеет явной маркировки, то может оказаться так, что она тупо постоянно вращается. Не путайте, надписи 0.20 sec/60° означают скорость вращения, они никак не связаны с максимальным углом поворота.

Перейдем к теории. Представляем себе микроконтроллер с подключенным к АЦП входу резистором R и некий движок, который крутится по ШИМ сигналу PWM. Допустим уровень сигнала АЦП напрямую связан с ШИМ выходом, тогда когда мы будем крутить резистор, то скорость будет меняться, когда напряжение АЦП станет равным 0, движок остановится.

Теперь рассмотрим вариант 2. Ручка резистора насажена на вал двигателя, таким образом, что когда двигатель вращается, он изменяет сопротивление резистора, следовательно и напряжение, которое подается на вход АЦП. При этом, если имеется еще один источник сигнала, то микроконтроллер сравнивает напряжение на входах и если оно больше, то крутит в одну сторону, если меньше, то в другую. Рано или поздно напряжения уровняются и движок остановится. Поэтому серва включает в себя все что нарисовано: резистор, микроконтроллер, двигатель. Внешний сигнал естественно подавать должны мы, чтобы управлять.

Типовые кишки выглядят так:

На фотке видно что резистор и моторчик соединяется через кучу шестеренок, поэтому если полезете внутрь будьте готовы что на вас высыпется все это добро. Вид снизу

Чаще всего ширина импульса колеблется в диапазоне от 1100мкс до 1900мкс, при периоде 20мс, но цифры могут отличаться, причем достаточно сильно. Пример из даташита:
Control System: +Pulse Width Control 1520usec Neutral
Required Pulse: 3-5 Volt Peak to Peak Square Wave
Operating Voltage: 4.8 Volts
Operating Speed (6V): 0.20sec/60 degrees at no load
Operating Angle: 45 Deg. one side pulse traveling 400usec
Continuous Rotation Modifiable: No
Direction: Counter Clockwise/Pulse Traveling 1520-1900usec

Отсюда четко видно, что средняя точка 1520мкс, чтобы повернуть такую серву на 45градусов, уже нужно подать импульс 1900мкс, соответственно остальные углы рассчитываются пропорцией. Чтобы повернуть на -45 градусов нужно подать импульс 1100мкс. Т.е. диапазон 90град. Еще видно, что под Continuous Rotation сей девайс не заточен, что хорошо.

Перейдем к практике. Есть поциент Futaba S3152, которым нужно покрутить туды — сюды.

Также можно это дело потестить в протеусе. Обычное подключение по трем проводам красный +5В, черный — земля, белый — управляющий.

В последних версиях CAVR, в Codewizard появилось много ништяков, например можно вбить цифры в попугаях и увидеть период и импульс в секундах. Собственно нам важен режим fast pwm top ICR. Примечателен этот режим тем, что ICR задает период, а OCR ширину импульса.

Период вычисляется очень просто:
ICR = (Частота таймера/50Hz)-1

Тогда нужную ширину импульса можно легко вычислить по пропорции:
20ms = ICR
?ms = OCR

В итоге можно переписать так:
OCR = (x*ICR)/20; где x это необходимая длительность импульса. Например, нужна длительность импульса в 1мс, значит OCR= (1*9C3)/20=0x7C.

Собственно и все. Теперь исходим из того, что нейтральная точка = 1524мкс или OCR1 = (1.524*9C3)/20 = 0xBE и зависимости от тогу куда нам нужно повернуть пересчитываем OCR. Простенький пример, поворачиваем на -45, затем 0 и потом +45.

#include #include void main(void ) { // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=In Bit1=Out Bit0=In DDRB= (0 << DDB7) | (0 << DDB6) | (0 << DDB5) | (0 << DDB4) | (1 << DDB3) | (0 << DDB2) | (1 << DDB1) | (0 << DDB0) ; // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=0 Bit2=T Bit1=0 Bit0=T PORTB= (0 << PORTB7) | (0 << PORTB6) | (0 << PORTB5) | (0 << PORTB4) | (0 << PORTB3) | (0 << PORTB2) | (0 << PORTB1) | (0 << PORTB0) ; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 125,000 kHz // Mode: Fast PWM top=ICR1 // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 20 ms // Output Pulse(s): // OC1A Period: 20 ms Width: 0,9924 ms // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A= (1 << COM1A1) | (0 << COM1A0) | (0 << COM1B1) | (0 << COM1B0) | (1 << WGM11) | (0 << WGM10) ; TCCR1B= (0 << ICNC1) | (0 << ICES1) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (1 << CS11) | (1 << CS10) ; TCNT1H= 0x00 ; TCNT1L= 0x00 ; ICR1H= 0x09 ; ICR1L= 0xC3 ; OCR1AH= 0x00 ; OCR1AL= 0x7C ; OCR1BH= 0x00 ; OCR1BL= 0x00 ; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK= (0 << OCIE2) | (0 << TOIE2) | (0 << TICIE1) | (0 << OCIE1A) | (0 << OCIE1B) | (0 << TOIE1) | (0 << TOIE0) ; while (1 ) { //-45 OCR1A = (1100 * 0x9C3 ) / 20000 ; delay_ms(1000 ) ; //0 OCR1A = (1524 * 0x9C3 ) / 20000 ; delay_ms(1000 ) ; //+45 OCR1A = (1900 * 0x9C3 ) / 20000 ; delay_ms(1000 ) ; } }

#include #include void main(void) { // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=In Bit1=Out Bit0=In DDRB=(0<

Получилось так:

Для stm32 приведу пример настройки, которая помойму даже проще. Пример для stm32f103, нога PA1, тактовая 72МГц.

//Настройка ножки PA1 на альтернативную функцию GPIO_InitTypeDef PORT_SETUP; PORT_SETUP.GPIO_Mode = GPIO_Mode_AF_PP; PORT_SETUP.GPIO_Pin = GPIO_Pin_1; PORT_SETUP.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, & PORT_SETUP) ; //настройка таймера TIM_TimeBaseInitTypeDef TIM_SETUP; TIM_SETUP.TIM_CounterMode = TIM_CounterMode_Up; TIM_SETUP.TIM_Period = 4096 ; TIM_SETUP.TIM_Prescaler = 351 ; // 72мгц/4096/351=50hz TIM_TimeBaseInit(TIM2, & TIM_SETUP) ; //настройка ШИМ TIM_OCInitTypeDef PWM_SETUP; //PWM_SETUP.TIM_Pulse = 200; //4096 = 20ms 200 ~ 1ms PWM_SETUP.TIM_Pulse = 0 ; PWM_SETUP.TIM_OCMode = TIM_OCMode_PWM2; PWM_SETUP.TIM_OutputState = TIM_OutputState_Enable; PWM_SETUP.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OC2Init(TIM2, & PWM_SETUP) ; TIM_Cmd(TIM2, ENABLE) ; while (1 ) { .... //где то внутри основного цикла меняем угол поворота переменной result TIM2-> CCR2 = (4096 * result) / 20000 ; }

//Настройка ножки PA1 на альтернативную функцию GPIO_InitTypeDef PORT_SETUP; PORT_SETUP.GPIO_Mode = GPIO_Mode_AF_PP; PORT_SETUP.GPIO_Pin = GPIO_Pin_1; PORT_SETUP.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &PORT_SETUP); //настройка таймера TIM_TimeBaseInitTypeDef TIM_SETUP; TIM_SETUP.TIM_CounterMode = TIM_CounterMode_Up; TIM_SETUP.TIM_Period = 4096; TIM_SETUP.TIM_Prescaler = 351; // 72мгц/4096/351=50hz TIM_TimeBaseInit(TIM2, &TIM_SETUP); //настройка ШИМ TIM_OCInitTypeDef PWM_SETUP; //PWM_SETUP.TIM_Pulse = 200; //4096 = 20ms 200 ~ 1ms PWM_SETUP.TIM_Pulse = 0; PWM_SETUP.TIM_OCMode = TIM_OCMode_PWM2; PWM_SETUP.TIM_OutputState =TIM_OutputState_Enable; PWM_SETUP.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OC2Init(TIM2, &PWM_SETUP); TIM_Cmd(TIM2, ENABLE); while(1) { .... //где то внутри основного цикла меняем угол поворота переменной result TIM2->CCR2 = (4096 * result)/20000; }

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

Еще один момент, это крепление нагрузки. Пластиковые штуки, которые крепятся на вал называются качалками.

Учимся управлять сервомотором с использованием Arduino.

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

Необходимые узлы

Для того, чтобы освоить приведенные в статье методики управления сервоприводом вам понадобятся:

1 переменный резистор (потенциометр) на 10 кОм



1 микроконтроллер Arduino Uno



1 конденсатор на 100 мкФ (не обязательно)


Схема подключения для "Sweep" (автоматическое вращение)

Для этого эксперимента вам надо подключить к Arduino только сервомотор.


На сервомоторе 3 контакта. Цвет контактов может отличаться в зависимости от фирмы производителя, но красный - это всегда контакт 5 В. Контакт GND (земля) может быть черным или коричневым. Оставшийся третий контакт - это сигнал, который используется для управления положением ротора сервы. Обычно он желтого или желтого цветов. Этот контакт мы подключаем к цифровому пину 9 на Arduino.

На контактах сервы предусмотрены разъемы, в которые можно установить коннекторы (провода) и соединить из макетной платой, а потом с Arduino.


Серводвигатель дергается

Иногда при подключении сервы не отрабатывают заданные команды или отрабатывают некорректно. Причем происходить это может только при подключении к определенным USB портам. Причина в том, что сервы требуют достаточно большую мощность для питания, особенно в начале движения ротора. Эти резкие скачки потребляемой мощности могут сильно "просаживать" напряжение на Arduino. Может произойти даже перезагрузка платы.

Если подобное происходит, вам надо добавить конденсатор (470 мкФ или больше) между рельсами GND и 5V на вашей макетке.


Конденсатор выполняет роль своебразного резервуара для электрического тока. Когда серводвигатель начинает работать, он получает остатки заряда с конденсатора и от источника питания Arduino одновременно.

Длинная нога конденсатора - это позитивный контакт, она подключается к 5V. Отрицательный контакт часто маркируется символом "-".

Скетч Arduino "Sweep" (автоматическое вращение)

Загрузите на Arduino скетч, который рассмотрен ниже. После загрузки ротор сервы должен начать вращаться в одном направлении, а потом в противоположном.

Программа основана на стандартном скетче "sweep", который вы можете найти в меню Arduino Examples в папке "servo".

#include <Servo.h>

int servoPin = 9;

int angle = 0; // угол сервы в градусах

servo.attach(servoPin);

// инкремент от 0 до 180 градусов

for(angle = 0; angle < 180; angle++)

servo.write(angle);

// теперь в обратном направлении от 180 до 0 градусов

for(angle = 180; angle > 0; angle--)

servo.write(angle);

Сервомоторы управляются серией импульсов. Для того, чтобы упростить управление сервами, написана специальная библиотека (Arduino library). С помощью этой библиотеки вы можете управлять сервой, задавая фактический угол поворота вала на выходе.

Управляющие команды для серв подобны встроенным в Arduino, но так как вы используете их далеко не во всех проектах, они хранятся в отдельной библиотеке. Если вы хотите использовать команды из библиотеки для серводвигателей, вам надо включить библиотеку в ваш скетч в Arduino IDE с помощью следующей строки:

#include <Servo.h>

Используем переменную "servoPin" для определения порта, который управляет сервой.

Следующая строка:

инициализирует новую переменную "servo" типа "Servo". Библиотека предоставляет нам новый тип данных наподобие "int" или "float", который отвечает за серву. Таким образом вы можете инициализировать восемь серводвигателей. Например, если у нас две сервы, можно записать следующее:

В теле функции "setup" мы должны согласовать переменную "servo" с пином, который будет управлять серводвигателем, используя команду:

servo.attach(servoPin);

Переменная "angle" используется для указания текущего угла поворота сервы в градусах. В теле функции "loop" мы используем используем два цикла "for". Один - для увеличения угла поворота в одном направлении и второй - для возврата, когда мы совершили поворот на 180 градусов.

servo.write(angle);

Сообщает серве, что надо обновить угол поворота выходного вала сервомотора в соответствии с углом, который указан в качестве параметра.

Схема подключения сервы с потенциометром ("Knob")

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

Надо просто добавить на макетную плату потенциометр и проводник от контакта сигнала с потенциометра на пин A0 на Arduino.


Скетч Arduino "Knob" (управление сервой с помошью потенциометра)

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

#include <Servo.h>

int servoPin = 9;

servo.attach(servoPin);

int reading = analogRead(potPin); // от 0 до 1023

int angle = reading / 6; // от 0 до 180

servo.write(angle);

В скетче добавлена переменная с именем "potPin".

Для того, чтобы вывести вал сервы в положение, мы считываем значение с контакта Arduino A0. Значение с этого контакта будет находится в диапазоне между 0 и 1023. Так как серва может поворачиваться только на 180 градусов, нам надо масштабировать полученные значения. Разделив значения с контакта A0 на 6 мы получаем угол в диапазоне от 0 до 170, что нас вполне устраивает.

Сервомоторы - общая информация

Сервомоторы - один из типов двигателей , коотрые часто используются в робототехнике, мехатронных проектах, проектах на Arduino.

Положение выходного вала сервомотора определяется длиной импульса. Серва может получать импульсы каждые 20 миллисекунд. Если импульс high длится 1 миллисекунду, угол поворота сервы будет равен нулю. Если 1.5 миллисекунды, тогда серва выйдет в свое центральное положение, а если 2 миллисекунды - выйдет в положение, которое соответствует 180 градусам.


Крайние положения сервомоторов могут отличаться. Кроме того, многие сервы могут поворачиваться на 170 градусов. Есть и "continuous" сервы, которые совершают оборот на полные 360 градусов.

Внутри сервы

На видео, которое приведено ниже, показано, что происходит внутри сервомотора.

Будьте аккуратны. Если вы разберете серву подобным образом, есть вероятность, что собрать обратно ее не получится.

Дальнейшие эксперименты с сервой и Arduino

Откройте скетч "sweep" и попробуйте сократить задержки с 15 миллисекунд до, скажем, 5 миллисекунд. Обратите внимание, насколько быстрее начали вращаться сервы.

Попробуйте изменить скетч "knob". Вместо того, чтобы ориентироваться на значения с потенциометра, реализуйте управление сервой с помощью значений, которые вы указываете в окне серийного моитора Arduino IDE.

Небольшая подсказка: для того, чтоьы скетч считывал значения угла с серийного монитора, вы можете использовать функцию Serial.parseInt(). Эта функция парсит (считывает) числовые значения с серийного монитора.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

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

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

Устройство сервопривода

Основные детали, из которых состоит типовой серводвигатель - ротор и статор. Для коммутации применяются специальные комплектующие в виде штекеров и клеммных коробок. Управление, контроль и коррекция процессов осуществляется с помощью отдельного управляющего узла. Для включения и выключения сервопривода используется отдельная система. Все детали, помещаются в общем корпусе.

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

Разница между сервоприводом и обычным электродвигателем заключается в возможности установки вала в точно заданное положение, измеряемое в градусах. Установленное положение, так же, как и другие параметры, поддерживаются блоком управления.

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

Как работает сервопривод

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

Этот датчик известен также, под названием энкодера или потенциометра. При повороте бегунка, его сопротивление будет изменяться. Изменения сопротивления находится в прямой пропорциональной зависимости с углом поворота энкодера. Данный принцип работы позволяет устанавливать и фиксировать механизмы в определенном положении.

Дополнительно каждый серводвигатель имеет электронную плату, обрабатывающую внешние сигналы, поступающие от потенциометра. Далее выполняется сравнение параметров, по результатам которого производится запуск или остановка электродвигателя. Следовательно, с помощью электронной платы поддерживается отрицательная обратная связь.

Подключить серводвигатель можно с помощью трех проводников. По двум из них подается питание к электродвигателю, а третий служит для прохождения сигналов управления, приводящих вал в определенное положение.

Предотвратить чрезмерные динамические нагрузки на электродвигатель возможно с помощью плавного разгона или такого же плавного торможения. Для этого применяются более сложные микроконтроллеры, обеспечивающие более точный контроль и управление позицией рабочего элемента. В качестве примера можно привести жесткий диск компьютера, в котором головки устанавливаются в нужную позицию с помощью точного привода.

Управление серводвигателем

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

Если в качестве примера взять ЧПУ - числовое программное управление, то в данном случае сервоприводы будут взаимодействовать с . В соответствии с уровнем входного напряжения они способны изменить значение напряжения на возбуждающей обмотке или якоре электродвигателя.

Непосредственное управление серводвигателем и всей системой осуществляется из одного места - блока управления. Когда отсюда поступает команда на прохождение определенного расстояния по оси координат Х, в цифровом аналоговом преобразователе возникает напряжение определенной величины, которое и поступает в качестве питания привода этой координаты. В серводвигателе начинается вращательное движение ходового винта, связанного с энкодером и исполнительным органом основного механизма.

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

Виды и характеристики

Серводвигатели выпускаются в самых разных вариантах, позволяющих использовать их во многих областях. Основные конструкции разделяются на коллекторные и , предназначенные для работы от постоянного и переменного тока.

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

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

Каждый сервопривод характеризуется определенными параметрами:

  • Крутящий момент или усилие, создаваемое на валу. Считается наиболее важным показателем работы сервопривода. Для каждой величины напряжения существует собственный крутящий момент, отражаемый в паспорте изделия.
  • Скорость поворота. Данный параметр представляет собой определенный период времени, который требуется, чтобы изменить позицию выходного вала на 600. Эта характеристика также зависит от конкретного значения напряжения.
  • Максимальный угол поворота, на который может развернуться выходной вал. Чаще всего эта величина составляет 180 или 3600.
  • Все сервоприводы разделяются на цифровые и аналоговые. В зависимости от этого и осуществляется управление сервоприводом.
  • Питание серводвигателей. В большинстве моделей используется напряжение от 4,8 до 7,2В. Питание и управление осуществляется с помощью трех проводников.
  • Возможность модернизации в сервопривод постоянного вращения.
  • Материалы для редуктора могут использоваться самые разные. Шестерни изготавливаются из металла, карбона, пластика или комбинированных составов. Каждый из них обладает своими преимуществами и недостатками. Например, пластиковые детали плохо выдерживают ударные нагрузки, но устойчивы к износу в процессе длительной эксплуатации. Металлические шестерни, наоборот, быстро изнашиваются, зато они обладают высокой устойчивостью к динамическим нагрузкам.

Плюсы и минусы сервомоторов

Благодаря унифицированным размерам, эти устройства легко и просто устанавливаются в любые конструкции. Они безотказны и надежны, каждый из них работает практически бесшумно, что имеет большое значение при их эксплуатации на сложных и ответственных участках. Даже на невысоких скоростях можно добиться точности и плавных перемещений. Каждый сервопривод может быть настроен персоналом, в зависимости решения тех или иных задач.

В качестве недостатков отмечаются определенные сложности при настройках и сравнительно высокая стоимость.

Несмотря на то, что автоматизированные системы управления вошли в наш быт, далеко не всем известно про сервопривод. Что это такое? Он представляет собой систему, реализующую высокоточные динамичные процессы. Устройство состоит из двигателя, датчика и блока управления, обеспечивающих отработку требуемых скорости, позиции и момента.

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

Как устроен сервопривод

Что это такое, легче понять, если рассмотреть конструкцию и работу устройства. Электромеханический узел сервопривода размещается в одном корпусе. Его характеристиками являются конструкция, рабочее напряжение, частота и крутящий момент. По показаниям датчика от контроллера или микросхемы поступает сигнал на корректировку работы серводвигателя.

Простейшее устройство представляет собой электродвигатель постоянного тока, схему управления и потенциометр. Конструкция предусматривает наличие редуктора, чтобы получить заданную скорость перемещения выходного вала.

Схема управления

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

Положение вала двигателя определяется шириной импульса, которая устанавливается переменным резистором R 1 . Сигналы должны подаваться генератором непрерывно, например каждые 20 мсек. При поступлении команды (перемещение движка резистора) выходной вал редуктора поворачивается и устанавливается в определенное положение. При внешнем воздействии он будет сопротивляться, пытаясь оставаться на месте.

Механическое регулирование системы отопления

Сервопривод - что это такое? Это хорошо понятно по его работе в системе теплого пола как приспособления, регулирующего поток теплоносителя. Если это делать вручную, придется непрерывно крутить вентили на коллекторах, поскольку расход горячей воды, подаваемой в обогревающие контуры, является переменной величиной.

Для автоматического регулирования систем теплого пола применяются разные устройства. Простейшим является термоголовка, устанавливаемая на регулирующий клапан. Она состоит из ручки механической настройки, пружинного механизма и сильфона, соединенного с толкателем. При повышении температуры внутри сильфона нагревается толуол, который при этом расширяется и давит на шток клапана, закрывая его. Поток теплоносителя перекрывается, и он начинает остывать в отопительном контуре. При охлаждении до заданного уровня сильфон снова открывает клапан, и новая порция горячей воды поступает в систему.

Механические регуляторы устанавливаются на каждый контур теплого пола и настраиваются вручную, после чего температура автоматически поддерживается постоянной.

Электрический сервопривод для отопления

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

Сервопривод для отопления работает вместе с термостатом, который монтируется на стену. Кран с электроприводом устанавливается на подающей трубе, перед коллектором водяного теплого пола. Затем производится подключение, подача питания 220 В и установка на терморегуляторе заданного режима. Система снабжается двумя датчиками: один - в полу, а другой - в комнате. Они передают команды на термостат, который управляет сервоприводом, соединенным с краном. Точность регулирования будет выше, если установить еще прибор на улице, поскольку климатические условия постоянно меняются и влияют на температуру в помещениях.

Сервопривод управляет двух- или трехходовым клапаном. Первый изменяет температуру теплоносителя в системе отопления. Трехходовой клапан с сервоприводом поддерживает температуру постоянной, но изменяет расход горячей воды, подаваемой в контуры. Од содержит 2 входа для горячей жидкости (подающий трубопровод) и холодной (обратка). Выход всего один, через него подается смесь с заданной температурой. Клапан обеспечивает смешивание потоков, регулируя таким путем подачу тепла в коллекторы. Если один из входов открывается, то другой начинает прикрываться. При этом расход на выходе остается постоянным.

Сервопривод крышки багажника

Современные автомобили большей частью выпускаются с автоматическим открыванием и закрыванием багажника. Для этого требуется установка сервопривода. Производители применяют 2 способа, чтобы обеспечить авто подобной опцией. Надежным вариантом является пневмопривод, но он стоит дороже. Электропривод управляется несколькими способами на выбор:

  • с пульта;
  • кнопка на дверной панели водителя;
  • ручка на крышке багажника.

Ручное открывание не всегда удобное, особенно зимой, когда замок может замерзнуть. Сервопривод багажника совмещается с замком, что дополнительно защищает авто от несанкционированного проникновения.

Устройства применяются на иномарках, но при желании их можно установить на отечественных моделях. Предпочтительно использовать привод с электродвигателем.

Есть еще устройства с магнитными пластинами, но они сложней и применяются реже.

Самыми дешевыми являются электроприборы, предназначенные только для открывания. Можно подобрать привод багажника, состоящий из электродвигателя с инерционным механизмом, отключающийся при возникновении препятствия перемещению. Дорогие модели состоят из устройства подъема и опускания крышки, доводчика запорного механизма, контроллера и датчиков.

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

Характеристики сервоприводов

Устройства выпускаются аналогового и цифрового типов. Приводы внешне ничем не отличаются, но различие между ними существенное. Последние обладают более точной отработкой команд, поскольку управление производится микропроцессорами. Для сервоприводов пишутся и вводятся программы. Аналоговые устройства работают от сигналов микросхем. Их преимуществами являются простое устройство и меньшая цена.

Основными параметрами для выбора являются следующие:

  1. Питание. Подача напряжения производится по трем проводам. По белому передают импульс, через красный - рабочее напряжение, черный или коричневый является нейтральным.
  2. Размеры: большие, стандартные и микроустройства.
  3. Скорость. От нее зависит, за какой промежуток времени вал повернется на угол 60 0 . Недорогие устройства обладают скоростью 0,22 сек. Если требуется высокое быстродействие, она составит 0,06 сек.
  4. Величина момента. Параметр является приоритетным, поскольку при малом вращающем моменте управление затрудняется.

Как управлять цифровым сервоприводом?

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

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

Заключение

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

В этой статье мы поговорим о сервоприводах в проектах Ардуино. Именно благодаря серводвигателям обычные электронные проекты становятся робототехническими. Подключение серво к Arduino проекту позволяет реагировать на сигналы датчиков каким-то точным движением, например, открыть дверцу или повернуть в нужную сторону сенсоры. В статье рассмотрены вопросы управления сервоприводами, возможные схемы подключения серво к ардуино, а также примеры скетчей.

Сервопривод – это такой вид привода, который может точно управлять параметрами движения. Другими словами, это двигатель, который может повернуть свой вал на определенный угол или поддерживать непрерывное вращение с точным периодом.

Схема работы сервопривода основана на использовании обратной связи (контура с замкнутой схемой, в котором сигнал на входе и выходе не согласован). В качестве сервопривода может выступать любой тип механического привода, в составе которого есть датчик и блок управления, который автоматически поддерживает все установленные параметры на датчике. Конструкция сервопривода состоит из двигателя, датчика позиционирования и управляющей системы. Основной задачей таких устройств является реализация в области сервомеханизмов. Также сервоприводы нередко используются в таких сферах как обработка материалов, производство транспортного оборудования, обработка древесины, изготовление металлических листов, производство стройматериалов и другие.

В проектах ардуино робототехники серво часто используется для простейших механических действий:

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

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

Схема и типы сервоприводов

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

В реальных сервоприводов механизм управления гораздо сложнее и использует встроенные микросхемы-контроллеры. В зависимости от типа используемого механизма обратной связи выделяют аналоговые и цифровые сервоприводы. Первые используют что-то, похожее на потенциометр, вторые – контроллеры.

Вся схема управления серво находится внутри корпуса, управляющие сигналы и питание подаются, как правило, идут по трем проводам: земля, напряжение питания и управляющий сигнал.

Сервопривод непрерывного вращения 360, 180 и 270 градусов

Выделяют два основных вида серводвигателей – с непрерывным вращением и с фиксированным углом (чаще всего, 180 или 270 градусов). Отличие серво ограниченного вращения заключается в механических элементах конструкции, которые могут блокировать движение вала вне заданных параметрами углов. Достигнув угла 180, вал окажет воздействие на ограничитель, а тот отдаст команду на выключение мотора. У серводвигателей непрерывного вращения таких ограничителей нет.

Материалы шестерней сервопривода

У большинства сервоприводов связующим звеном между валом и внешними элементами является шестеренка, поэтому очень важно, из какого материала она сделана. Наиболее доступных вариантов два: металлические или пластмассовые шестерни. В более дорогих моделях можно найти элементы из карбона и даже титана.


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

Металлические шестеренки надежнее, но это, безусловно, сказывается как на цене, так и на весе модели. Экономные производители могут сделать часть деталей пластмассовыми, а часть металлическими, это тожно нужно иметь в виду. Ну и, естественно, что в самых дешевых моделях даже наличие металлической шестеренки не является гарантией качества.

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

Преимущества серводвигателей

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

Отличия серво и обычного двигателя

Включая или выключая обычный электрический двигатель, мы можем сформировать вращательное движение и заставить двигаться колеса или другие предметы, прикрепленные к валу. Движение это будет непрерывным, но для того, чтобы понять, на какой угол повернулся вал или сколько оборотов он сделал, потребуется устанавливать дополнительные внешние элементы: энкодеры. Сервопривод уже содержит все необходимое для получения информации о текущих параметрах вращения и мжет самостоятельно выключаться, когда вал повернется на необходимый угол.

Отличия серво и шагового мотора

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

Решающее значение в управлении сервоприводами выполняет управляющий сигнал, который представляет собой импульсы постоянной частоты и переменной ширины. Длина импульса – это один из важнейших параметров, который определяет положение сервопривода. Эту длину можно задать в программе вручную методом подбора через угол или использовать команды библиотеки. Для каждой марки устройства длина может быть различной.

Когда сигнал попадает в управляющую схему, генератор подает свой импульс, длительность которого определяется с помощью потенциометра. В другой части схемы происходит сравнение длительности поданного сигнала и сигнала с генератора. Если эти сигналы разные по длительности, включается электромотор, направление вращения которого определяется тем, какой из импульсов короче. При равенстве длины импульсов мотор останавливается.

Стандартная частота, с которой подаются импульсы, равна 50 Гц, то есть 1 импульс в 20 миллисекунд. При таких значениях длительность составляет 1520 микросекунд, и сервопривод занимает среднее положение. Изменение длины импульса приводит к повороту сервопривода – при увеличении длительности поворот осуществляется по часовой стрелке, при уменьшении – против часовой стрелки. Имеются границы длительности – в Ардуино в библиотеке Servo для 0° установлено значение импульса в 544 мкс (нижняя граница), для 180° – 2400 мкс (верхняя граница).

(Использовано изображение с сайта amperka.ru)

Важно учитывать, что на конкретном устройстве настройки могут несколько отличаться от общепринятых значений. У некоторых устройств среднее положение и ширина импульса может быть равной 760 мкс. Все принятые значения также могут незначительно отличаться из-за погрешности, которая может быть допущена при производстве устройства.

Способ управления приводом часто по ошибке называют PWM/ШИМ, но это не совсем корректно. Управление напрямую зависит именно от длины импульса, частота их появления не так важна. Корректная работа будет обеспечена как при 40 Гц, так и при 60 Гц, вклад внесет только сильное уменьшение или увеличение частоты. При резком спаде сервопривод начнет работать рывками, при завышении частоты выше 100 Гц устройство может перегреться. Поэтому правильнее называть PDM.

По внутреннему интерфейсу можно выделить аналоговые и цифровые сервоприводы. Внешних отличий нет – все различия только во внутренней электронике. Аналоговый сервопривод внутри содержит специальную микросхему, цифровой – микропроцессор, принимающий и анализирующий импульсы.

При получении сигнала аналоговый сервопривод принимает решение, менять или нет положение, и по необходимости подает на мотор сигнал с частотой 50 Гц. За время реакции (20 мс) могут произойти внешние воздействия, которые изменят положение сервопривода, и устройство не успеет среагировать. Цифровой сервопривод использует процессор, который подает и обрабатывает сигналы с большей частотой – от 200 Гц, поэтому он может быстрее отреагировать на внешние воздействия, быстрее развивать нужную скорость и крутящий момент. Следовательно, цифровой сервопривод будет лучше удерживать заданное положение. При этом для работы цифрового сервопривода требуется больше электроэнергии, что повышает их стоимость. Большой вклад в цену делает и сложность их производства. Высокая стоимость – единственный недостаток цифровых сервоприводов, в техническом плане они намного лучше аналоговых устройств.

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

Сервопривод обладает тремя контактами, которые окрашены в разные цвета. Коричневый провод ведет к земле, красный – к питанию +5В, провод оранжевого или желтого цвета – сигнальный. К Ардуино устройство подключается через макетную указанным на рисунке образом. Оранжевый провод (сигнальный) подключается к цифровому пину, черный и красный – к земле и питанию соответственно. Для управления серводигателем не требуется подключение именно к шим-пинам – принцип управления серво мы уже описывали ранее.

Не рекомендуется подключать мощные серво напрямую к плате, т.к. они создают для схемы питания Arduino ток, не совместимый с жизнью – повезет, если сработает защита. Чаще всего симптомы перегрузки и неправильного питания сервопривода заключаются в “дергании” серво, неприятному звуку и перезагрузке платы. Для питания лучше использовать внешние источники, обязательно объединяя земли двух контуров.

Скетч для управления сервоприводом в Arduino

Управление сервоприводом напрямую через изменение в скетче длительности импульсов – достаточно нетривиальная задача, но у нас, к счастью, есть отличная библиотека Servo, встроенная в среду разработки Arduino. Все нюансы программирования и работы с сервоприводами мы рассмотрим в отдельной статье. Здесь же приведем простейший пример использования Servo.

Алгоритм работы прост:

  • Для начала мы подключаем Servo.h
  • Создаем объект класса Servo
  • В блоке setup указываем, к какому пину подключен серво
  • Используем методы объекта обычным для C++ способом. Самым популярным является метод write, которому мы подаем целочисленное значение в градусах (для сервопривода 360 эти значения будут интерпретироваться по-другому).

Пример простого скетча для работы с сервоприводом

Пример проекта, в котором мы сразу сначала устанавливаем серводвигатель на нулевой угол, а затем поворачиваем на 90 градусов.

#include Servo servo; // Создаем объект void setup() { servo.attach(9); // Указываем объекту класса Servo, что серво присоединен к пину 9 servo1.write(0); // Выставляем начальное положение } void loop() { servo.write(90); // Поворачиваем серво на 90 градусов delay(1000); servo.write(1800); delay(100); servo.write(90); delay(1000); servo.write(0); delay(1000); }

Скетч для двух сервпоприводов

А в этом примере мы работаем сразу с двумя сервоприводами:

#include Servo servo1; // Первый сервопривод Servo servo2; // Второй сервопривод void setup() { servo1.attach(9); // Указваем объекту класса Servo, что серво присоединен к пину 9 servo2.attach(10); // А этот servo присоединен к 10 пину } void loop() { // Выставялем положения servo1.write(0); servo2.write(180); delay(20); // Меняем положения servo2.write(0); servo1.write(180); }

Управление сервоприводом с помощью потенциометра

В этом примере поворачиваем серво в зависимости от значения, полученное от потенциометра. Считываем значение и преобразовываем его в угол с помощи функции map:

//Фрагмент стандартного примера использования библиотеки Servo void loop() { val = analogRead(A0); // Считываем значение с пина, к которому подключен потенциометр val = map(val, 0, 1023, 0, 180); // Преобразуем число в диапазоне от 0 до 1023 в новый диапазон - от 0 до 180. servo.write(val); delay(15); }

Характеристики и подключение SG-90

Если вы собрались купить самый дешевый и простой сервопривод, то SG 90 будет лушим вариантом Этот серво чаще всего используется в управлении небольшими легкими механизмами с углом поворота от 0° до 180°.

Технические характеристики SG90:

  • Скорость отработки команды 0,12с/60 градусов;
  • Питание 4,8В;
  • Рабочие температуры от -30С до 60 С;
  • Размеры 3,2 х 1,2 х 3 см;
  • Вес 9 г.

Описание SG90

Цвета проводов стандартные. Сервопривод стоит недорого, он не обеспечивает точных настроек начальных и конечных позиций. Для того, чтобы избежать лишних перегрузок и характерного треска в положении 0 и 180 градусов лучше выставлять крайние точки в 10° и 170°. При работе устройства важно следить за напряжением питания. При сильном завышении этого показателя могут повредиться механические элементы зубчатых механизмов.

Сервоприводы MG995 и MG996 tower pro

Серво MG995 является второй по популярности моделью сервоприводов, чаще всего подключаемых к проектам Arduino. Это относительно недорогие сервомоторы, обладающие гораздо лучшими характеристиками по сравнению с SG90.

Характеристики MG995

Выходной вал у MG995 поворачивается на 120 градусов (по 60 в каждом направлении), хотя многие продавцы указывают на 180 градусов. Устройство выполняется в пластиковом корпусе.

  • Вес 55 г;
  • Крутящий момент 8,5 кг х см;
  • Скорость 0,2с/60 градусов (при 4,8В);
  • Рабочее питание 4,8 – 7,2В;
  • Рабочие температуры – от 0С до -55С.

Описание MG995

Подключение к ардуино также происходит по трем проводам. В принципе, для любительских проектов допускается подключение MG995 напрямую к Arduino, но ток двигателя всегда будет создавать опасную нагрузку для входов платы, поэтому рекомендуется все-таки запитывать серво отдельно, не забыв соединить землю обоих контуров питания. Другим упрощающим жизнь вариантом будет использование готовых сервоконтроллеров и шилдов, обзор которых мы подготовим в отдельной статье.

MG996R похож на MG995 по своим характеристикам, только он выполняется в металлическом корпусе.

Переделка сервопривода в серво непрерывного вращения

Как описывалось выше, сервопривод управляется импульсами переменной ширины, которые задают угол поворота. Текущее положение считывается с потенциометра. Если рассоединить вал и потенциометр, серводвигатель будет принимать положение движка потенциометра как в средней точке. Все эти действия приведут к тому, что будет убрана обратная связь. Это позволяет управлять скоростью и направлением вращения по сигнальному проводу, и создать серво непрерывного вращения. При этом важно отметить, что серво постоянного вращения не может поворачиваться на определенный угол и делать строго заданное количество оборотов.

Чтобы произвести вышеописанные действия, придется разобрать устройство и внести изменения в конструкцию.

В Ардуино IDE нужно создать небольшой скетч, который поставит качалку в среднее положение.

#include Servo myservo; void setup(){ myservo.attach(9); myservo.write(90); } void loop(){ }

После этого устройство нужно подключить к Ардуино. При подключении серво начнет вращаться. Нужно добиться ее полной остановки путем регулирования резистора. После того, как вращение прекратится, нужно найти вал, вытащить из него гибкий элемент и установить обратно.

Этот метод имеет несколько недостатков – настройка резистора до полной остановки неустойчива, при малейшем ударе/нагреве/охлаждении настроенная нулевая точка может сбиться. Поэтому лучше использовать способ замены потенциометра подстроечником. Для этого нужно вытащить потенциометр и заменить его на подстроечный резистор с таким же сопротивлением. Нулевую точку нужно настроить калибровочным скетчем.

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

Заключение

Сервоприводы играют очень важную роль для многих проектов Ардуино, от робототехнических до систем умного дома. Все, что связано с движением, традиционно требует особых знаний и создать полноценный правильно работающий привод – непростая задача. Но с помощью серводвигателей можно во многих случаях упростить задачу, поэтому серво постоянно используется даже в проектах начального уровня.

В этой статье мы постарались раскрыть разные аспекты использования сервоприводов в проектах arduino: от подключения до написания скетчей. Выбрав самую простую модель серво (например, sg 90) вы сможете без труда повторить приведенные примеры и создать свои первые проекты, в которых что-то движется и изменяется. Надеемся, эта статья поможет вам в этом.