TowerPro SG90 — один из самых дешевых и популярных сервоприводов. Он используется в основном при моделировании. Но он также может успешно вращать небольшую камеру или какой-либо датчик.
Я использовал TowerPro SG90 для вращения ультразвукового дальномера HC-SR04. В набор, купленный на Алиэкспресс, входили три тяги и три винта.
Технические характеристики TowerPro SG90
- Размеры: 22 х 11,5 х 22,5 мм
- Вес: 9 г
- Источник питания: 4,8 В
- Потребление тока: 550 мА
- Напряжение управляющего сигнала: 3,3 В или 5 В
- Управление: ШИМ, частота сигнала 50 Гц
- Рабочий цикл ШИМ: 500 — 2400 микросекунд
- Скорость: поворот на 60 градусов за 0,12 с (4,8 В без нагрузки)
- Сила: 1 кг / см (4,8 В)
- Поворот в диапазоне 0 — 180 градусов
Описание
Возвращаясь к спецификации, необходимо добавить, что она несколько отличается для данного устройства, потому что просматривая разные страницы, вы можете найти различную информацию, например, мощность или диапазон напряжения питания.
В случае источника питания это может быть проблемой согласования управляющего напряжения с напряжением питания. Пока что проверил сервопривод с питанием и управлением 5В, с которым все работает без проблем.
Сервопривод можно модифицировать так, чтобы он поворачивался на 360 градусов. Это описано в статье «Модифицировать сервопривод TowerPro Micro для вращения 360 / непрерывного вращения». Электрическую схему и печатную схему можно найти в статье «Микро Сервопривод T-Pro SG90 — Вскрытие». Электроника построена на базе контроллера AA51880.
Положение сервопривода зависит от длительности импульса:
- центр (0 градусов) — 1,5 мс
- крайнее левое положение (-90 градусов) — 1 мс
- крайнее правое положение (+90 градусов) — 2 мс
при 20 мс (50 Гц) управляющего сигнала.
Контакты
- питание (Vcc, красный кабель)
- масса (GND, провод коричневый)
- управление PWM (оранжевый провод)
Запуск
Я использовал код из учебника Sweep, доступного на официальном сайте Arduino, на основе библиотеки Servo. Эта библиотека позволяет одновременно работать с 12 сервоприводами.
#include <servo.h> Servo myservo; //создаем объект для управляющего сервопривода int pos = 0; //положение сервопривода void setup() { myservo.attach(13); //сервоуправление на выводе 13 } void loop() { for (pos = 0; pos <= 180; pos += 1) { //поворот от 0 до 180 градусов с шагом 1 градус myservo.write(pos); //установка положения на сервопривод delay(15); //время 15 мс для установки позиции } for (pos = 180; pos >= 0; pos -= 1) { //поворот от 180 до 0 градусов с шагом 1 градус myservo.write(pos); delay(15); } }