Чтобы задать желаемое положение вала, по предназначенному для этого проводу необходимо посылать управляющий сигнал. Управляющий сигнал
– импульсы постоянной частоты и переменной ширины.
Рисунок 14 – Управляющий сигнал
То, какое положение должен занять сервопривод, зависит от длины импульсов. Когда сигнал поступает в управляющую схему, имеющийся в ней генератор импульсов производит свой импульс, длительность которого определяется через потенциометр. Другая часть схемы сравнивает длительность двух импульсов. Если длительность разная, включается электромотор. Направление вращения определяется тем, какой из импульсов короче. Если длины импульсов равны, электромотор останавливается.
Наибольшее распространение получили сервоприводы, представленные на рисунках 15 и 16.
Рисунок 15 – Сервопривод с питанием +5V
11
Рисунок 16 – Сервопривод с питанием +9 – 12 V
Для первого не требуется никаких дополнительных элементов, и подключение происходит напрямую к плате. На рисунке 17 представлена схема подключения для сервопривода с питанием +5V.
Второй же требует подключения понижающего DC-DC преобразователя на базе LM2596. В качестве источника питания будет так же использоваться блок питания с переходником, как при подключении ленты и помпы. + и – питания необходимо подключить к IN+/VIN и IN–/GND преобразователя.
Рисунок 17 – Подключение сервопривода с питанием +5V
12
Рисунок 18 – Подключение сервопривода с питанием +12V
Программирование
Рисунок 19 – Управляющий сигнал
Для работы используем стандартную библиотеку Servo.h. Для задания угла поворота необходимо использовать метод «write» и указать его значение в промежутке от 0 до 180 градусов.
ВЫПОЛНЕНИЕ
Ввиду отсутствия водяной помпы и светодиодной ленты, проведём ра-
13
боту по управлению сервоприводом.
В листинге 1 представлена программа для управления сервоприводом через 18-й пин контроллера ESP32, резервируя необходимые таймеры и задавая параметры ШИМ-сигнала. В основном цикле она бесконечно переключает положение сервомотора между 0 и 180 градусами с задержкой в две секунды между движениями. На рисунке 20 представлен результат работы программы.
Листинг 1 – Программа управления сервоприводом с помощью ESP32
#include <ESP32Servo.h>
Servo servo;
int servoPin = 18;
void setup() { ESP32PWM::allocateTimer(0);
ESP32PWM::allocateTimer(1);
ESP32PWM::allocateTimer(2);
ESP32PWM::allocateTimer(3);
servo.setPeriodHertz(50); servo.attach(servoPin, 500, 2400);
}
void loop() { servo.write(0); delay(2000); servo.write(180); delay(2000);
}
14
Рисунок 20 – Управление сервоприводом с цикличным проворачиванием лепестков между положениями 0 и 180 градусов
ВЫВОДЫ
Собрана схема подключения сервопривода к контроллеру ESP32. Написана и загружена программа для цикличного поворота мотора в положения 0 и 180 градусов.
15
