Каталог
Проект 1: Сервопривод

Проект 1: Сервопривод

Сервопривод – это вращающийся исполнительный механизм с контролем положения. Он состоит из корпуса, печатной платы, безякорного мотора, шестерни и датчика положения. Приемник или микроконтроллер (MCU) передает сигнал на сервопривод. Мотор имеет встроенную эталонную схему, которая выдает эталонный сигнал с циклом 20 мс и шириной 1,5 мс. Мотор сравнивает полученное смещение постоянного тока с напряжением потенциометра и выдает разницу напряжений. Микросхема на плате определяет направление вращения и управляет мотором. Шестерня передает усилие на вал. Датчик определяет, достигнута ли заданная позиция, согласно обратному сигналу. Сервоприводы используются в системах управления, требующих удержания разных углов. Когда скорость мотора определена, шестерня заставляет потенциометр вращаться. Когда разница напряжений уменьшается до нуля, мотор останавливается. Обычно угол вращения находится в пределах 0-180 градусов.

Сервоприводы имеют множество спецификаций, но все они имеют три провода подключения, различающихся по цвету: коричневый, красный, оранжевый (у разных брендов цвета могут отличаться). Коричневый провод – GND, красный – питание, оранжевый – сигнальная линия.

thumb

Угол поворота сервопривода контролируется путем регулирования скважности PWM (широтно-импульсной модуляции) сигнала. Стандартный цикл PWM сигнала – 20 мс (50 Гц). Теоретически ширина распределяется между 1 мс и 2 мс, но на практике она находится в диапазоне от 0,5 мс до 2,5 мс. Ширина соответствует углу поворота от 0° до 180°. Однако у разных брендов моторов один и тот же сигнал может иметь разные углы поворота.

thumb

Теперь, освоив базовые знания, давайте научимся управлять сервоприводом. В этом эксперименте вам понадобятся только сервопривод и несколько соединительных проводов.

Подключение и пример программы

Есть два способа управления сервоприводом с помощью Arduino. Один из них – использовать обычный цифровой порт Arduino для создания прямоугольной волны с разной скважностью, имитируя PWM сигнал, и затем использовать этот сигнал для управления положением мотора. Другой способ – напрямую использовать функцию Servo библиотеки Arduino для управления мотором. Этот способ проще, но он может управлять только двухконтактным мотором, так как для функции сервопривода можно использовать только цифровые пины 9 и 10. Мощность Arduino ограничена, поэтому для управления более чем одним мотором потребуется внешнее питание.

Подключение

  • Коричневый провод (GND) подключите к GND на Arduino.
  • Красный провод (VCC) подключите к 5V на Arduino.
  • Оранжевый провод (сигнал) подключите к цифровому пину 9 на Arduino.

Схема подключения

Пример кода

int servopin = 9;  // выбрать цифровой пин 9 для сигнальной линии сервопривода
int myangle;      // инициализация переменной угла
int pulsewidth;   // инициализация переменной ширины импульса
int val;
void servopulse(int servopin, int myangle) {  // определение функции импульса сервомотора
  pulsewidth = (myangle * 11) + 500;  // преобразование угла в ширину импульса от 500 до 2480
  digitalWrite(servopin, HIGH);  // установить уровень пина сервопривода на "высокий"
  delayMicroseconds(pulsewidth);  // задержка на ширину импульса
  digitalWrite(servopin, LOW);  // установить уровень пина сервопривода на "низкий"
  delay(20 - pulsewidth / 1000);
}
void setup() {
  pinMode(servopin, OUTPUT);  // установить пин сервопривода как "выход"
  Serial.begin(9600);  // подключиться к серийному порту, установить скорость передачи данных 9600 бод
  Serial.println("servo=o_seral_simple ready");
}
void loop() {
  val = Serial.read();  // чтение значения из серийного порта
  if (val > '0' && val <= '9') {
    val = val - '0';  // преобразование численного значения в числовую переменную
    val = val * (180 / 9);  // преобразование числа в угол
    Serial.print("moving servo to ");
    Serial.print(val, DEC);
    Serial.println();
    for (int i = 0; i <= 50; i++) {  // дать сервоприводу время на поворот к заданной позиции
      servopulse(servopin, val);  // использование функции импульса
    }
  }
}

Результат

Когда вы вводите число в серийный монитор, мотор поворачивается на угол, соответствующий введенному числу, и значение угла отображается на экране, как показано на изображении ниже.

Предзаказ
Предзаказ успешно отправлен!
Имя *
Телефон *
Добавить в корзину
Название товара
100 тг
1 шт.
Перейти в корзину
Обратный звонок
Запрос успешно отправлен!
Имя *
Телефон *
Заказ в один клик
С помощью уведомлений о заказе можно не только получать актуальную информацию по заказу, но и иметь быстрый канал связи с магазином