Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Сервопривод

В этом разделе мы подключим микросервопривод SG90 к ESP32 и будем управлять его поворотом с помощью ШИМ. Перед тем как двигаться дальше, убедитесь, что вы прочитали введение в ШИМ.

Аппаратные требования

  • Микросервопривод SG90: недорогой сервопривод, созданный для любителей и хобби-проектов.
  • Провода-перемычки: провода «male-to-male» (или «female-to-male», в зависимости от подключения) для соединения ESP32 с выводами сервопривода (земля, питание и сигнал).

Введение в сервоприводы

Сервоприводы широко используются в робототехнике (например, в руках роботов), радиоуправляемых машинах, поворотных креплениях для камер и других встраиваемых системах. Один из самых популярных сервоприводов — SG90, небольшой и лёгкий сервопривод, который часто применяют в самодельных и хобби-проектах. SG90 поворачивается на угол до 180°.

Сервопривод SG90

Как работают сервоприводы (SG90)?

Обычно сервопривод содержит коллекторный двигатель постоянного тока, схему управления, редуктор и потенциометр. Двигатель соединён с выходным валом через редуктор, который поворачивает качалку (horn) сервопривода. Мы не будем разбирать, как внутри работают двигатель и редуктор: это выходит за рамки книги, а если интересно, можно изучить это самостоятельно. Нам важно лишь, как повернуть качалку с помощью микроконтроллера.

Чтобы управлять положением качалки, микроконтроллер (MCU) посылает сервоприводу сигнал с частотой 50 Гц, то есть импульс каждые 20 миллисекунд. Меняя длительность высокого уровня в каждом цикле (ширину импульса), мы управляем углом поворота качалки.

Для большинства сервоприводов (по данным даташитов из разных источников):

  • Импульс 1 мс поворачивает качалку на 0 градусов.
  • Импульс 1,5 мс поворачивает её на 90 градусов (нейтральное положение).
  • Импульс 2 мс поворачивает её на 180 градусов.

Тонкая настройка сервопривода

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

  • примерно 0,5 мс для 0 градусов;
  • примерно 1,5 мс для 90 градусов;
  • примерно 2,5 мс для 180 градусов.

Note

Ширина импульса и положение качалки сервопривода

Сервопривод удерживает своё положение, пока мы не изменим ширину импульса. Например, если продолжать посылать импульс 1,5 мс, он будет оставаться в положении 90 градусов. Когда мы изменим ширину импульса на 2,0 мс, он повернётся на 180 градусов. Однако нужно дать ему достаточно времени, чтобы дойти до нужного положения.

Также, если отправить неправильную ширину импульса (например, 10 мс), сервопривод вообще не будет двигаться.

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

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