kz ru
Каталог

Проект 21: Управление Сервоприводом

Принцип Работы

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

Серводвигатели используются в системах управления, требующих поддержания различных углов. Когда скорость мотора определена, шестерни заставляют потенциометр вращаться. Когда разница напряжений уменьшается до нуля, мотор останавливается. Обычно диапазон угла вращения составляет от 0 до 180 градусов.

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

thumb

 

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

 

thumb

 

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

Необходимое Оборудование

Плата Arduino UNO * 1
9G Сервомотор * 1
Перемычки * 3
USB - кабель * 1


Подключение и Пример Кода

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

Метод 1

Подключите двигатель к цифровому пину 9. Скомпилируйте программу для управления двигателем, чтобы он вращался под командным углом и отображал угол на экране.

Пример Кода A

//////////////////////////////////////////////////////////
//Серво


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() // преобразование чисел от 0 до 9 в соответствующие углы от 0 до 180 градусов, LED мигает соответствующее количество раз
{
  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); // использование функции импульса
    }
  }
}
//////////////////////////////////////////////////////////

Метод 2
Давайте сначала рассмотрим встроенную в Arduino функцию сервопривода и некоторые общие команды.

attach (интерфейс) — выбор пина для серво, можно использовать только пин 9 или 10.
write (угол) — используется для управления углом вращения серво, можно установить угол от 0 до 180 градусов.
read () — используется для чтения угла серво, считайте это функцией для чтения значения в функции write().
attached () — определение, отправлен ли параметр серво на пин серво.
detach () — отключение серво от пина, и пин (цифровой пин 9 или 10) может использоваться для порта ШИМ.
Обратите внимание, что форма написания вышеуказанных команд - "имя переменной серво. конкретная команда ()", например, myservo.attach(9).

 


Снова подключите серво к пину 9.

Пример Кода B

//////////////////////////////////////////////////////////
//Серво


#include <Servo.h> // подключение библиотеки Servo
Servo myservo; // определение переменной серво

void setup(){
  myservo.attach(9); // выбор пина серво (9 или 10)
}

void loop(){
  myservo.write(90); // установка угла вращения мотора
}
//////////////////////////////////////////////////////////

Выше представлены два метода управления сервоприводом. Вы можете выбрать любой из них в зависимости от ваших предпочтений или фактических потребностей.

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