Интерактивный проект сервопривода с Arduino и датчиками HC‑SR04
Компоненты и материалы
| Arduino UNO | × | 1 |
| Adafruit 16‑канальный PWM‑контроллер сервоприводов | × | 3 |
| Микросервопривод SG90 | × | 36 |
| Импульсный блок питания 5 В, 30 Вт | × | 1 |
| Провода‑удлинители для сервоприводов | × | 1 |
| Перфорированная плата 24×48 дюймов | × | 1 |
| Палочки для мороженого, обрезанные до 82 мм | × | 36 |
| Ультразвуковой датчик HC‑SR04 (опционально) | × | 5 |
Необходимые инструменты
- Паяльник
- Клейкий пистолет
Программное обеспечение
- Arduino IDE
О проекте
Видео демонстрирует работу 36 сервоприводов, создающих электронное искусство. Управление осуществляется Arduino Uno и тремя 16‑канальными PWM‑контроллерами Adafruit. Идея вдохновлена крупной установкой с 450 сервоприводами в музее современного искусства, но даже эта мини‑версия даёт впечатляющие эффекты.
Интерактивный режим (опционально)
Пять ультразвуковых датчиков HC‑SR04 монтируются на верхнем крае панели. При помещении руки над центральным датчиком система переходит в интерактивный режим: все сервоприводы следуют за движением руки. Через несколько секунд после ухода руки программа возвращается к демонстрационному шоу. Функция полностью опциональна — код работает и без датчиков.
Аппаратная часть
Проект собран на перфорированной плате 24×48 дюймов (ширина уменьшена до 32 дюймов). Сервоприводы закреплены клеевым пистолетом с шагом 4 дюйма. Палочки для мороженого (длиной 82 мм) клеятся на валы сервоприводов.
SG90 — самая затратная позиция. Набор из 8 штук стоит около $20 на Amazon, итого ~$100. Формально SG90 — 180° сервоприводы, но многие не достигают полного хода. Из 5 наборов (40 шт.) обычно можно отобрать 36 хороших с ходом ≥160°.
Сервоприводы предварительно устанавливают в минимальную позицию (PWM 150), палочки крепят горизонтально вправо (вид спереди). Для проверки предоставлен скетч SetServosToMinimum.

На фото видна обратная сторона: три PWM‑контроллера слева, блок питания 30 Вт справа. Arduino питается отдельно через USB‑адаптер — удобно для перепрошивки. Опциональные ультразвуковые датчики закреплены сверху на клее и палочках. Маленькая макетная плата под Arduino распределяет питание и землю на датчики.
Программная часть
Используется библиотека Adafruit PWM Servo Driver (установить через менеджер библиотек). Код работает как с датчиками, так и без них. Шоу длится чуть более 3 минут, затем повторяется. При наличии датчиков включается интерактивный режим.
Алгоритм использует две таблицы: curPos (текущие позиции /3) и tarPos (целевые позиции /3). Деление на 3 позволяет хранить значения в byte и двигать сервоприводами шагами по 3 единицы.
В setup() все сервоприводы выравниваются в вертикальное положение, таблицы инициализируются. Основная подпрограмма goToTargets() плавно перемещает сервоприводы к целям. Скорость задаётся параметрами reps (кратность 15 шагов) и mydelay (задержка в мс).
Интерактивность обрабатывает подпрограмма trackRoutine: вызывается, когда goToTargets обнаруживает руку над центральным датчиком. Сервоприводы пытаются повторить движение руки. После потери сигнала на несколько секунд управление возвращается к основной программе.
Код
ServosArt Software for Arduino Uno — скачать из репозитория (превью недоступно).
Схемы
Подключение Arduino и сервоприводов через три 16‑канальных контроллера:

Подключение 5 ультразвуковых датчиков для отслеживания руки:

Производственный процесс
- Raspoulette: Прототип солнечной автономной системы двери курятника
- Simple Pi Robot — Сборка 2WD автономного ровера на Raspberry Pi
- Профессиональные услуги по ремонту сервоприводов Fanuc
- Профессиональный ремонт сервоприводов Siemens — быстро и надежно
- Экспертное руководство: ремонт и диагностика сервоприводов
- Набор MOSMusic: MOSFET, Arduino и управление светом по музыке
- Понимание линейных моторов: от электрической энергии к точному линейному движению
- Почему планетарные редукторы повышают производительность сервоприводов
- Основы сервопрессов: мощность, точность и эффективность
- Серводвигатели: принцип работы и значение