Ребятушки всем Привет. Сегодня создадим еще один интересный проект и попробуем разобраться с сервоприводом и как его подключить к трем самым популярным платформам для разработки. Да да вы хорошо с ними знакомы это — Arduino, Esp8266, Raspberry Pi. Но дабы наш проект не сводился к банальному описанию подключения сервопривода к чему-либо, оброс значимостью . В итоге вот что должно получиться.

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

Сервопривод. Устройство. Принцип работы.

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

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

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

Препарируем Кота

И так Друзья. Хватит сухой теории относительно сервоприводов давайте уже приступим к проекту. Но для начала немного предыстории. Для модификации мне под руки попался кот породы китайский обыкновенный. Такие обычно стоят в магазинчиках или лавках и при проходе человека мимо, начинают активно махать своей левой лапкой, призывая заглянуть в лавку или магазин. Друзья китайцы активно пропагандируют, что кот этот денежный и мол при махании лапкой призывает бабло. И как активно машет кот своей лапкой, также активно друзья китайцы втюхивают нашему брату этих котов. Таким образом у меня оказался данный экземпляр. Но как подобает всему шерпотрепному и китайскому ценой меньше 5$, данный котяра не выдержал краш-тест от тогда еще годовалого сына. Лапа была вырвана с корнем, а кот отправлен на полку заслуженно отдыхать. Но недавно под рукой совсем случайным образом у меня оказался сервопривод SG-90 и я почему-то сразу же вспомнил про «денежного кота» и его лапку.

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

Ну а для тех у кого все нормально с юмором и нервами, предлагаю продолжить.

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

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

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

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

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

Ну а где же код?

Друзья все будет, не беспокойтесь. Однако перед началом написания кода и принципах подключения еще немного сухой теории по принципу управления сервоприводом. И так все управление сервоприводом осуществляется при помощи ШИМ по управляющему проводу. Управляющий сигнал представляет собой импульсы переменной ширины. Импульсы повторяются с постоянной частотой, которая измеряется в герцах. Для примера. Большая часть приемников  для управления моделями генерирует импульсы с частотой 50Гц. Это означает, что они передают команды о требуемом положении сервопривода 50 раз в секунду. Положение сервопривода определяется шириной импульса. Для типичного сервопривода, используемого в радиоуправляемых моделях, длительность импульса в 1520 мкс означает, что сервопривод должен занять среднее положение. Увеличение или уменьшение длины импульса заставит сервопривод повернуться по часовой или против часовой стрелки соответственно.

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

Arduino

Ну куда же без него любимого. И очень странно, что с таким набором у нас не получилась метеостанция. Шутка. Схема подключения очень простая. 

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

Для работы этой модели подойдет следующий код (код вы можете просто скопировать в Arduino IDE):

Последние четыре команды программы задают угол поворота вала сервопривода и время ожидания (в миллисекундах) до следующего поворота. (процедура loop повторяется циклично). Эффект вы видели в начале статьи на Gif-ке. Котэ машет лапкой с определенным интервалом.

ESP8266

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

Ну так давайте так и сделаем. Но перед началом работы с ESP8266 и написание кода необходимо определиться куда подключать и в чем писать код. Я предлагаю писать код в уже знакомой Arduino IDE, но для этого нам необходимо провести небольшие настройки. Я довольно подробно описал порядок настройки Arduino IDE для работы с ESP8266 в одной из предыдущих статей про Счетчик подписчиков Youtube на ESP8266 и NEXTION DISPLAY.  Переходим по ссылке, читаем настраиваем.

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

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

Raspberry Pi

Raspberry Pi имеет несколько путей реализации PWM (ШИМ) (Широтно-импульсной модуляции). Мы рассмотрим как реализовать, ШИМ программно, и задействуем для генерации ШИМ аппаратные ресурсы Raspberry Pi.

Писать будем на Python. Используем библиотеку RPi.GPIO для программной генерации ШИМ сигнала. А это значит, что тратятся вычислительные ресурсы микрокомпьютера. Если микрокомпьютер будет отвлекаться на другие задачи, ШИМ сигнал будет искажаться и не будет стабильным. Это не принципиально, если ШИМ применяется для управления яркостью светодиода. Но может стать неприемлемым, когда ШИМ применяется для формирования управляющего сигнала. Например, при управлении сервоприводами программная реализация ШИМ не может стабильно удерживать сервоприводы в заданном положении.

Raspberry Pi имеет техническую возможность использовать аппаратный ресурс для генерации ШИМ.

Устанавливаем RPIO:

Создаем срипт servo.py:

Текст кода:

Запустим его следующей командой

Коте машет лапкой как и в двух предыдущих примерах. А это ли не счастье друзья. Распиновку для Raspberry Pi не давал т.к. от версий к версии она бывает разная. Поэтому в Google забиваем запрос Raspberry Pi дальше ваша версия малины pinout И находим номер порта с ШИМ для вашей версии.

На этом пожалуй и все. Надеюсь статья была интересная и не сильно мудреная. Да кстати все три платы можно прикрутить к интернету и сделать кота немного умнее и полезнее, но об этом как-нибудь в другой раз. Кстати. Котяра голодный поэтому Заданать ему на Whiskas.

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