Пример 23. Сервопривод
Примеры
ПРИМЕРЫ
- Пример 1. Светодиоды
- Пример 2. Подключение кнопки
- Пример 3. Переключатель
- Пример 4. Активный зуммер
- Пример 5. Пассивный зуммер
- Пример 6. Фоторезистор
- Пример 7. RGB-светодиод
- Пример 8. Семисегментный индикатор и 74HC595N
- Пример 9. Четырехразрядный 7-сегментный индикатор
- Пример 10. Светодиодная матрица
- Пример 11. Светодиодная шкала
- Пример 12. ЖК-дисплей
- Пример 13. Джойстик
- Пример 14. Вольтметр
- Пример 15. Термистор
- Пример 16. Модуль DHT11
- Пример 17. Модуль HC-SR04
- Пример 18. Датчик движения HC-SR501
- Пример 19. Матричная клавиатура
- Пример 20. ИК датчик и пульт
- Пример 21. Модуль часов DS-1302
- Пример 22. RFID-модуль RC522
- Пример 23. Сервопривод
- Пример 24. Модуль реле
- Пример 25. Двигатель постоянного тока
- Пример 26. Шаговый двигатель и драйвер ULN2003
- Пример 27. Драйвер двигателей на L298N
- Пример 28. MP3-плеер DFPlayer Mini
- Пример 29. Датчик уровня воды
- Пример 30. Serial Port
- Пример 31. Симуляция парковки
- Пример 32. Датчик температуры DS18B20
- Пример 33. Bluetooth-модуль HC-06
- Пример 34. Плата расширения с дисплеем и кнопками
- Пример 35. Плата расширения для двигателей на L293D
- Пример 36. Ethernet шилд W5100
- Пример 37. GSM/GPRS шилд SIM900
- Пример 38. GPS модуль Ublox NEO-6M
- Пример 39. Модуль считывания отпечатков пальцев
- Пример 40. Шаговый двигатель NEMA17 и драйвер TB6600
Если сказать полнее, сервопривод — это привод с управлением через отрицательную обратную связь, позволяющую точно управлять параметрами движения. Сервоприводом является любой тип механического привода, имеющий в составе датчик (положения, скорости, усилия и т.п.) и блок управления приводом, автоматически поддерживающий необходимые параметры на датчике и устройстве согласно заданному внешнему значению.
- Сервопривод получает на вход значение управляющего параметра. Например, угол поворота.
- Блок управления сравнивает это значение со значением на своём датчике.
- На основе результата сравнения привод производит некоторое действие, например: поворот, ускорение или замедление так, чтобы значение с внутреннего датчика стало как можно ближе к значению внешнего управляющего параметра.
Наиболее распространены сервоприводы, которые удерживают заданный угол и сервоприводы, поддерживающие заданную скорость вращения.
Сервоприводы имеют несколько составных частей.
Описание:
В данном примере подключим простой и легкий сервопривод SG90, пусть он будет каждую секунду поворачиваться на 15 градусов в одном направлении до 90 градусов, затем в обратном. Подключение сервопривода так же очень простое:
- Коричневый провод – Земля (Ground, подключается к пину GND на плате Arduino)
- Красный провод – Питание +5 V (подключается к пину 5V на плате Arduino)
- Желтый провод – Сигнал управления (подключается к цифровому пину Arduino)
Компоненты:
Схема:
Скетч:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#include <Servo.h> Servo myservo; // создаем объект для управления сервоприводом void setup() { myservo.attach(9); // подключим сигнал к 9 пину myservo.write(0); // 0 градусов delay(1000); // пауза 1с } void loop() { myservo.write(5); // 5 градусов delay(1000); myservo.write(25); // 25 градусов delay(1000); myservo.write(45); // 45 градусов delay(1000); myservo.write(65); // 65 градусов delay(1000); myservo.write(85); // 85 градусов delay(1000); myservo.write(105); // 105 градусов delay(1000); myservo.write(125); // 125 градусов delay(1000); myservo.write(150); // 150 градусов delay(1000); myservo.write(175); // 175 градусов delay(1000); myservo.write(150); // 150 градусов delay(1000); myservo.write(125); // 125 градусов delay(1000); myservo.write(105); // 105 градусов delay(1000); myservo.write(85); // 85 градусов delay(1000); myservo.write(65); // 65 градусов delay(1000); myservo.write(45); // 45 градусов delay(1000); myservo.write(25); // 25 градусов delay(1000); } |
Скетч для 360° сервопривода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// Подключаем библиотеку #include "Servo.h" // Создаем сервообъект Servo myservo; // Функция setup (выполняется один раз) void setup() { myservo.attach(9); // управляемый вывод сервопривода подключен к 9-му порту myservo.write(90); // нейтраль, остановка сервопривода } // Функция setup (выполняется циклически) void loop() { myservo.write(45); // движение мотора против часовой стрелки delay(5000); // в течение 5 секунд (5000 мс) myservo.write(90); // остановка сервопривода delay(5000); // в течение 5 секунд myservo.write(135); // движение мотора по часовой стрелке delay(5000); // в течение 5 секунд myservo.write(90); // остановка сервопривода delay(5000); // в течение 5 секунд } |