Сервопривод для Ардуино
Сервопривод – это такой вид привода, который может точно управлять параметрами движения. Другими словами, это двигатель, который может повернуть свой вал на определенный угол или поддерживать непрерывное вращение с точным периодом.
Схема работы сервопривода основана на использовании обратной связи (контура с замкнутой схемой, в котором сигнал на входе и выходе не согласован). В качестве сервопривода может выступать любой тип механического привода, в составе которого есть датчик и блок управления, который автоматически поддерживает все установленные параметры на датчике. Конструкция сервопривода состоит из двигателя, датчика позиционирования и управляющей системы. Основной задачей таких устройств является реализация в области сервомеханизмов. Также сервоприводы нередко используются в таких сферах как обработка материалов, производство транспортного оборудования, обработка древесины, изготовление металлических листов, производство стройматериалов и другие.
В проектах ардуино робототехники серво часто используется для простейших механических действий:
- Повернуть дальномер или другие датчики на определенный угол, чтобы измерить расстояние в узком секторе обзора робота.
- Сделать небольшой шаг ногой, движение конечностью или головой.
- Для создания роботов-манипуляторов.
- Для реализации механизма рулевого управления.
- Открыть или закрыть дверку, заслонку или другой предмет.
Конечно, сфера применения серво в реальных проектах гораздо шире, но приведенные примеры являются самыми популярными схемами.
Схема и типы сервоприводов
Принцип работы сервопривода основан на обратной связи с одним или несколькими системными сигналами. Выходной показатель подается на вход, где сравнивается его значение с задающим действием и выполняются необходимые действия – например, выключается двигатель. Самым простым вариантов реализации является переменный резистор, который управляется валом – при изменении параметров резистора меняются параметры питающего двигатель тока.
В реальных сервоприводов механизм управления гораздо сложнее и использует встроенные микросхемы-контроллеры. В зависимости от типа используемого механизма обратной связи выделяют аналоговые и цифровые сервоприводы. Первые используют что-то, похожее на потенциометр, вторые – контроллеры.
Вся схема управления серво находится внутри корпуса, управляющие сигналы и питание подаются, как правило, идут по трем проводам: земля, напряжение питания и управляющий сигнал.
Сервопривод непрерывного вращения 360, 180 и 270 градусов
Выделяют два основных вида серводвигателей – с непрерывным вращением и с фиксированным углом (чаще всего, 180 или 270 градусов). Отличие серво ограниченного вращения заключается в механических элементах конструкции, которые могут блокировать движение вала вне заданных параметрами углов. Достигнув угла 180, вал окажет воздействие на ограничитель, а тот отдаст команду на выключение мотора. У серводвигателей непрерывного вращения таких ограничителей нет.
Материалы шестерней сервопривода
У большинства сервоприводов связующим звеном между валом и внешними элементами является шестеренка, поэтому очень важно, из какого материала она сделана. Наиболее доступных вариантов два: металлические или пластмассовые шестерни. В более дорогих моделях можно найти элементы из карбона и даже титана.
Пластмассовые варианты, естественно, дешевле, проще в производстве и часто используются в недорогих моделях серво. Для учебных проектов, когда сервопривод делает несколько движений, это не страшно. Но в серьезных проектах использование пластмассы невозможно, в виду очень быстрого снашивания таких шестеренок под нагрузкой.
Металлические шестеренки надежнее, но это, безусловно, сказывается как на цене, так и на весе модели. Экономные производители могут сделать часть деталей пластмассовыми, а часть металлическими, это тожно нужно иметь в виду. Ну и, естественно, что в самых дешевых моделях даже наличие металлической шестеренки не является гарантией качества.
Титановые или карбоновые шестерни – самый предпочтительный вариант, если вы не ограничены бюджетом. Легкие и надежные, такие сервоприводы активно используются для создания моделей автомобилей, дронов и самолетов.
Преимущества серводвигателей
Широкое использование сервоприводов связано с тем, что они обладают стабильной работой, высокой устойчивостью к помехам, малыми габаритами и широким диапазоном контроля скорости. Важными особенностями сервоприводов являются способность увеличивать мощность и обеспечение обратной информационной связи. И этого следует, что при прямом направлении контур является передатчиком энергии, а при обратном – передатчиком информации, которая используется для улучшения точности управления.
Отличия серво и обычного двигателя
Включая или выключая обычный электрический двигатель, мы можем сформировать вращательное движение и заставить двигаться колеса или другие предметы, прикрепленные к валу. Движение это будет непрерывным, но для того, чтобы понять, на какой угол повернулся вал или сколько оборотов он сделал, потребуется устанавливать дополнительные внешние элементы: энкодеры. Сервопривод уже содержит все необходимое для получения информации о текущих параметрах вращения и мжет самостоятельно выключаться, когда вал повернется на необходимый угол.
Отличия серво и шагового мотора
Важным отличием серводвигателя от шагового двигателя является возможность работать с большими ускорениями и при переменной нагрузке. Также серводвигатели обладают более высокой мощностью. Шаговые двигатели не обладают обратной связью, поэтому может наблюдаться эффект потери шагов, в серводвигателях потери шагов исключены – все нарушения будут зафиксированы и исправлены. При всех этих явных преимуществах серводвигатели являются более дорогостоящими приборами, чем шаговые двигатели, обладают более сложной системой подключения и управления и требуют более квалифицированного обслуживания. Важно отметить, что шаговые двигатели и сервоприводами не являются прямыми конкурентами – каждое из этих устройств занимает свою определенную сферу применения.
Общие принципы работы серводвигателей (сервомоторов)
Серводвигатели включают в свой состав небольшой двигатель постоянного тока, редуктор и схему управления, содержащую переменный резистор, дающий возможность установить выходной вал серводвигателя под определенным углом. Поэтому серводвигатели очень удобны для проектов, где требуется осуществлять весьма быстрое и относительно точное перемещение какого-либо рабочего органа.
Типы серводвигателей
Серводвигатели часто используются в радиоуправляемых моделях автомобилей для поворота рулевых колес или в моделях радиоуправляемых самолетов – для поворота управляющих поверхностей (рулей). На следующем рисунке показаны два серводвигателя разных размеров.
Серводвигатель справа представляет собой так называемый стандартный серводвигатель. Это наиболее распространенный тип серводвигателя. Такие серводвигатели достаточно часто имеют одинаковые размеры и монтажные расстояния между отверстиями. Намного меньший (и более легкий) серводвигатель слева предназначен для летательных аппаратов. Эти серводвигатели называются сервоприводами 9g .
Сервоприводы с более высоким качеством исполнения и более высоким крутящим моментом имеют редуктор с шестернями из металла, а не из нейлона. Большинство серводвигателей работают на номинальном напряжении питания около 5 В при допустимом диапазоне питающих напряжений от 4 до 7 В. Подключение любительских сервоприводов обычно осуществляется через провода, заканчивающиеся 3-контактным разъемом: питание +, питание — и управляющий сигнал.
Большие и иногда весьма мощные серводвигатели также доступны для использования, но они не так стандартизированы, как любительские маломощные сервомашинки.
Устройство сервопривода
Сервопривод (см. рисунок) состоит из электродвигателя, постоянного тока, приводящего в действие редуктор, уменьшающий скорость вращения двигателя и, в то же время увеличивающий крутящий момент на валу. Для контроля положения выходного вала он соединен с датчиком положения (как правило, это переменный резистор). Для управления мощностью и направлением, в котором поворачивается двигатель сервопривода, схема управления использует входной сигнал от датчика положения в сочетании с сигналом управления, задающим требуемое положение.
Блок управления, получив через сигнал управления величину желаемого положения вала, вычитает из него величину действительного его положения и вырабатывает «сигнал ошибки», который может быть положительным или отрицательным. Этот «сигнал ошибки» подается на питание двигателя, заставляя его изменить положение вала в нужном направлении. Чем больше разница между желаемым и действительным положением выходного вала, тем быстрее двигатель будет поворачиваться к желаемой позиции. Чем ближе к нулю становится значение ошибки (рассогласования), тем меньше становится питание двигателя.
Управление серводвигателем
Управляющий сигнал на серводвигатель — это не напряжение, как можно было бы ожидать, а сигнал широтно-импульсной модуляции (ШИМ). Этот сигнал является стандартным для всех любительских сервомашинок и выглядит так, как показано на следующем рисунке.
Серводвигатель ожидает прихода импульса управления каждые 20 мс. Импульс длительностью 1,5 мс установит серводвигатель в центральное положение, соответствующее повороту выходного вала на 90°. Более короткие импульсы в 1,0 мс установят выходной вал в начальное положение — 0°, а импульсы в 2,0 мс — крайнее положение — 180°. В реальности этот диапазон может быть немного меньше, чем полные 180°, без укорочения импульсов на одном конце и удлинения на другом. Не редкость и ситуация, когда для 0° нужен импульс 0,5 мс, а для 180° — 2,5 мс.
Назначение контактов сервомотора
Представлено на следующем рисунке. Я думаю, здесь все просто и понятно.
1. Red (красный) = Положительное напряжение питания (от 4.8V до 6V) 2. Brown (коричневый) = Ground (земля) 3. Orange (оранжевый) = Control Signal – управляющий сигнал (PWM Pin – контакт ШИМ)
Где купить популярные серво SG90, MG995, MG996
Самый доступный вариант сервопривода SG90 1.6KG | Сервоприводы SG90 и MG90S для Ардуино по цене ниже 70 рублей |
Еще один вариант серво SG90 Pro 9g от проверенного поставщика на Али | Servo SG90 от надежного поставщика RobotDyn |
Тестер для серво | Несколько вариантов тестеров сервоприводов |
Защищенные сервопривод с моментом 15 кг | Серво JX DC5821LV 21KG Full waterproof Core mental gear 1/8 1/10 RC car Scaler Buggy Crawler TRAXXAS RC4WD TRX-4 SCX10 D90 |
Серво MG996R MG996 Servo Metal Gear for Futaba JR | Серво 13KG 15KG Servos Digital MG995 MG996 MG996R Servo Metal Gear |
Управление сервоприводом
Решающее значение в управлении сервоприводами выполняет управляющий сигнал, который представляет собой импульсы постоянной частоты и переменной ширины. Длина импульса – это один из важнейших параметров, который определяет положение сервопривода. Эту длину можно задать в программе вручную методом подбора через угол или использовать команды библиотеки. Для каждой марки устройства длина может быть различной.
Когда сигнал попадает в управляющую схему, генератор подает свой импульс, длительность которого определяется с помощью потенциометра. В другой части схемы происходит сравнение длительности поданного сигнала и сигнала с генератора. Если эти сигналы разные по длительности, включается электромотор, направление вращения которого определяется тем, какой из импульсов короче. При равенстве длины импульсов мотор останавливается.
Стандартная частота, с которой подаются импульсы, равна 50 Гц, то есть 1 импульс в 20 миллисекунд. При таких значениях длительность составляет 1520 микросекунд, и сервопривод занимает среднее положение. Изменение длины импульса приводит к повороту сервопривода – при увеличении длительности поворот осуществляется по часовой стрелке, при уменьшении – против часовой стрелки. Имеются границы длительности – в Ардуино в библиотеке Servo для 0° установлено значение импульса в 544 мкс (нижняя граница), для 180° – 2400 мкс (верхняя граница).
(Использовано изображение с сайта amperka.ru)
Важно учитывать, что на конкретном устройстве настройки могут несколько отличаться от общепринятых значений. У некоторых устройств среднее положение и ширина импульса может быть равной 760 мкс. Все принятые значения также могут незначительно отличаться из-за погрешности, которая может быть допущена при производстве устройства.
Способ управления приводом часто по ошибке называют PWM/ШИМ, но это не совсем корректно. Управление напрямую зависит именно от длины импульса, частота их появления не так важна. Корректная работа будет обеспечена как при 40 Гц, так и при 60 Гц, вклад внесет только сильное уменьшение или увеличение частоты. При резком спаде сервопривод начнет работать рывками, при завышении частоты выше 100 Гц устройство может перегреться. Поэтому правильнее называть PDM.
По внутреннему интерфейсу можно выделить аналоговые и цифровые сервоприводы. Внешних отличий нет – все различия только во внутренней электронике. Аналоговый сервопривод внутри содержит специальную микросхему, цифровой – микропроцессор, принимающий и анализирующий импульсы.
При получении сигнала аналоговый сервопривод принимает решение, менять или нет положение, и по необходимости подает на мотор сигнал с частотой 50 Гц. За время реакции (20 мс) могут произойти внешние воздействия, которые изменят положение сервопривода, и устройство не успеет среагировать. Цифровой сервопривод использует процессор, который подает и обрабатывает сигналы с большей частотой – от 200 Гц, поэтому он может быстрее отреагировать на внешние воздействия, быстрее развивать нужную скорость и крутящий момент. Следовательно, цифровой сервопривод будет лучше удерживать заданное положение. При этом для работы цифрового сервопривода требуется больше электроэнергии, что повышает их стоимость. Большой вклад в цену делает и сложность их производства. Высокая стоимость – единственный недостаток цифровых сервоприводов, в техническом плане они намного лучше аналоговых устройств.
Подключение серводвигателя к ардуино
Сервопривод обладает тремя контактами, которые окрашены в разные цвета. Коричневый провод ведет к земле, красный – к питанию +5В, провод оранжевого или желтого цвета – сигнальный. К Ардуино устройство подключается через макетную указанным на рисунке образом. Оранжевый провод (сигнальный) подключается к цифровому пину, черный и красный – к земле и питанию соответственно. Для управления серводигателем не требуется подключение именно к шим-пинам – принцип управления серво мы уже описывали ранее.
Не рекомендуется подключать мощные серво напрямую к плате , т.к. они создают для схемы питания Arduino ток, не совместимый с жизнью – повезет, если сработает защита. Чаще всего симптомы перегрузки и неправильного питания сервопривода заключаются в “дергании” серво, неприятному звуку и перезагрузке платы. Для питания лучше использовать внешние источники, обязательно объединяя земли двух контуров.
Подключение сервопривода к Arduino.
Для достижения самых разных целей робототехники к программируемому контроллеру Arduino может быть подключен сервопривод. Подключение осуществляется через кабели, которые выходят из сервопривода. Обычно это три кабеля: красный; коричневый или черный; желтый, оранжевый или белый.
Подключение сервопривода к плате Arduino производится через ШИМ-выводы. Что Такое PWM (ШИМ) мы уже рассматривали в уроке: Плавное включение светодиода на Arduino с помощью ШИМ (PWM)
За основу возьмем урок Подключение кнопки и светодиода плате Arduino к схеме добавим сервопривод и вот что у нас должно получиться.
Изменим код:
#include // подключаем библиотеку для работы с сервоприводом Servo servo; // объявляем переменную servo типа «servo» int led_pin=3; // пин подключения int button_pin = 4; // пин кнопки // переменные int buttonState = 0; // переменная для хранения состояния кнопки void setup() { pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода. pinMode(button_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа. servo.attach(5); // привязываем сервопривод к аналоговому выходу 10 } void loop() { buttonState = digitalRead(button_pin);// считываем значения с входа кнопки if (buttonState == HIGH) { digitalWrite(led_pin, HIGH);// зажигаем светодиод servo.write(0); //ставим вал на 180 delay (1000); // задержка в 1 секунду } else { digitalWrite(led_pin, LOW);// выключаем светодиод servo.write(180); //ставим вал на 0 delay (1000); // задержка в 1 секунду } } #include // подключаем библиотеку для работы с сервоприводом
Мы еще не работали с библиотеками. Библиотека это класс, содержащий функции которые мы можем использовать в нашей программе. Библиотека позволяет сократить объем написанного кода и скорость разработки приложения.
Ка вы поняли строка выше подключает нашу библиотеку Servo.h, после чего мы можем использовать все функции данной библиотеки.
Servo servo; // объявляем переменную servo типа «servo»
Объявлением переменную, она нам понадобиться для работы с библиотекой.
servo.attach(5); // привязываем сервопривод к аналоговому выходу 5
Функция библиотеки Servo.
servo.write(180); //ставим вал на 180
С помощью данной функции мы можем повернуть сервопривод на заданный угол.
Скетч для управления сервоприводом в 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); }
Управление сервоприводом по заданной программе
Когда последовательность действий заранее известна, можно записать её в массив и затем поочередно передавать сервоприводу.
Соберем схему:
Подключение одного сервопривода к Ардуино
Для программного управления можно использовать следующую программу:
// Программное управление сервоприводом // (с) Роман Исаков, 2020 // (с) LabData.ru #include #define servo_pin 8 // Разъем для подключения сервы #define servo_speed 500 // Скорость обработки команд uint32_t servo_T = 0; // Служебная переменная int pos = 0; // Номер текущей команды int prog[] = {180, 100, 80, 90, 85, 90, 85, 90, 70, 60, 50, 40, 20, 10}; // Команды серве Servo servo1; // Объект сервы void setup() { servo1.attach(servo_pin); // Подключение сервы servo_T = millis(); } void loop() { int N = sizeof(prog)/sizeof(int); // число элементов массива prog if (millis() — servo_T >= servo_speed) { // Программное прерывание по таймеру servo_T = millis(); servo1.write(prog[pos]); // Отправка команды серве pos++; // Выбор следующей команды if (pos>=N) pos = 0; // Если дошли до конца – повторить сначала } }
Команды можно легко убирать и добавлять, программа сама рассчитает их число.
Сервопривод SG90
Характеристики и подключение 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°. При работе устройства важно следить за напряжением питания. При сильном завышении этого показателя могут повредиться механические элементы зубчатых механизмов.
Управление несколькими сервоприводами сигналом с датчика
Если сигнал управления зависит от каких-то внешних факторов, то нужно подключать к Ардуино соответствующий датчик. В данном примере — аналоговый датчик угла (потенциометр). Управлять будем независимо двумя сервоприводами. Задача — следить за напряжением на датчике и закрывать один сервопривод в одну строну, а другой — в другую. Как-бы имитируя ворота.
Схема подключения выглядит так:
Подключение двух сервоприводов и датчика к Ардуино
Алгоритм реализован в программе Ардуино:
// Управление сервоприводами с датчика // (с) Роман Исаков, 2020 // (с) LabData.ru #include #define servo_speed 200 // Установка скорости работы #define servo1_pin 8 // Выход 1 сервы #define servo2_pin 9 // Выход 2 сервы uint32_t servo_T = 0; #define DAT_pin A0 // Вход потенциометра Servo servo1; Servo servo2; void setup() { servo1.attach(servo1_pin); servo2.attach(servo2_pin); servo_T = millis(); } void loop() { if (millis() — servo_T >= servo_speed) { servo_T = millis(); int DAT = analogRead(DAT_pin); // Получение аналогового сигнала с потенциометра servo1.write(map(DAT, 0, 1024, 90, 180)); // Преобразование уровня напряжения от 0..1024 в угол от 90 до 180* и отправка на 1 серву servo2.write(map(DAT, 0, 1024, 90, 0)); // Преобразование уровня напряжения от 0..1024 в угол от 90 до 0* и отправка на 2 серву } }
Поворачивая ручку потенциометра сервоприводы приведутся в движение и станут следить за углом поворота.
Сервоприводы 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 по своим характеристикам, только он выполняется в металлическом корпусе.
Управление сервоприводом с помощью потенциометра.
#include Servo myservo; int potpin = 0; int val; void setup() { myservo.attach(9); } void loop() { val = analogRead(potpin); val = map(val, 0, 1023, 0, 180); myservo.write(val); delay(15); }
Схема подключения сервопривода и потенциометра к Arduino.
Следующий урок: IR Пульт. Включение выключение светодиода.
Переделка сервопривода в серво непрерывного вращения
Как описывалось выше, сервопривод управляется импульсами переменной ширины, которые задают угол поворота. Текущее положение считывается с потенциометра. Если рассоединить вал и потенциометр, серводвигатель будет принимать положение движка потенциометра как в средней точке. Все эти действия приведут к тому, что будет убрана обратная связь. Это позволяет управлять скоростью и направлением вращения по сигнальному проводу, и создать серво непрерывного вращения. При этом важно отметить, что серво постоянного вращения не может поворачиваться на определенный угол и делать строго заданное количество оборотов.
Чтобы произвести вышеописанные действия, придется разобрать устройство и внести изменения в конструкцию.
В Ардуино IDE нужно создать небольшой скетч, который поставит качалку в среднее положение.
#include Servo myservo; void setup(){ myservo.attach(9); myservo.write(90); } void loop(){ }
После этого устройство нужно подключить к Ардуино. При подключении серво начнет вращаться. Нужно добиться ее полной остановки путем регулирования резистора. После того, как вращение прекратится, нужно найти вал, вытащить из него гибкий элемент и установить обратно.
Этот метод имеет несколько недостатков – настройка резистора до полной остановки неустойчива, при малейшем ударе/нагреве/охлаждении настроенная нулевая точка может сбиться. Поэтому лучше использовать способ замены потенциометра подстроечником. Для этого нужно вытащить потенциометр и заменить его на подстроечный резистор с таким же сопротивлением. Нулевую точку нужно настроить калибровочным скетчем.
Любой из методов переделки сервопривода в серво непрерывного вращения имеет свои недостатки. Во-первых, сложно настроить нулевую точку, любое движение может ее сбить. Во-вторых, диапазон регулирования мал – при небольшом изменении ширины импульса скорость может значительно измениться. Расширить диапазон можно программно в Ардуино.
Arduino для начинающих. Урок 4. Управление сервоприводом
13.04.2014 Занимательная робототехника
Сервопривод
Продолжаем серию уроков “Arduino для начинающих”. Сегодня собираем модель с сервоприводом — это также одна из базовых схем. Сервоприводы используются в робототехнике для управления движениями робота. В посте помимо видео-инструкции листинг программы и схема подключения.
Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов.
Видео-инструкция сборки модели:
Для сборки модели с сервоприводом нам потребуется:
- плата Arduino
- 3 провода “папа-папа”
- сервопривод
- программа Arduino IDE, которую можно скачать с сайта Arduino.
Компоненты для сборки модели Arduino с сервоприводом
Схема подключения модели Arduino с сервоприводом:
Схема подключения сервопривода на Arduino
Для работы этой модели подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):
#include //используем библиотеку для работы с сервоприводом Servo servo; //объявляем переменную servo типа Servo void setup() //процедура setup { servo.attach(10); //привязываем привод к порту 10 } void loop() //процедура loop { servo.write(0); //ставим вал под 0 delay(2000); //ждем 2 секунды servo.write(180); //ставим вал под 180 delay(2000); //ждем 2 секунды }
Последние четыре команды программы задают угол поворота вала сервопривода и время ожидания (в миллисекундах) до следующего поворота. Эти цифры можно поменять — в видео во втором варианте мы поставили 0-1000-90-1000, что означает поворот на 90 градусов с ожиданием в 1 секунду (1000 миллисекунд), возврат обратно и т.д. (процедура loop повторяется циклично).
Кроме того, в этом уроке мы впервые используем библиотеки.
Библиотека — это набор дополнительных команд, который позволяет вводить программу в упрощенном формате. Здесь мы используем библиотеку для работы с сервоприводами Servo.h.
Так выглядит собранная модель Arduino с сервоприводом:
Собранная модель Arduino с сервоприводом
Продолжение следует!
Смотрите также:
Учебный курс «Arduino для начинающих»: главная страница.
Посты по урокам:
- Первый урок: Светодиод
- Второй урок: Кнопка
- Третий урок: Потенциометр
- Четвертый урок: Сервопривод
- Пятый урок: Трехцветный светодиод
- Шестой урок: Пьезоэлемент
- Седьмой урок: Фоторезистор
- Восьмой урок: Датчика движения (PIR) и E-mail
- Девятый урок: Подключение датчика температуры и влажности DHT11 или DHT22
Все посты сайта «Занимательная робототехника» по тегу Arduino.
Наш YouTube канал, где публикуются видео-уроки.
Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.
Автор: Александр Гагарин.