kz ru
Каталог

Проект 8: Управление моторами и регулировка скорости

Спецификация:

Входное напряжение для логики: постоянный ток 5 В
Входное напряжение для управления мотором: постоянный ток 6-9 В
Рабочий ток для логики: менее 36 мА
Рабочий ток для управления мотором: менее 2 А
Максимальная потеря мощности: 25 Вт (T=75°C)
Уровень входного сигнала для управления: высокий уровень 2,3 В < Vin < 5 В, низкий уровень -0,3 В < Vin < 1,5 В
Рабочая температура: -25°C до +130°C

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

Мы используем односторонний параллельный способ подключения для четырех моторов, который можно рассматривать как две группы моторов. Как показано на схеме подключения, B и B1 образуют одну группу, а A и A1 - другую группу. Моторы в одной группе должны вращаться в одном направлении. Если они вращаются в разных направлениях, пожалуйста, отрегулируйте соответствующие шунты рядом с терминалом, чтобы изменить направление. Как показано ниже, если направления A и A1 разные, отрегулируйте направление шунтов до тех пор, пока направление движения моторов в одной группе не станет одинаковым.

Когда мы устанавливаем направление в HIGH, чем меньше значение ШИМ, тем быстрее вращается мотор.

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

 

Тестовый код 8.1:

//****************************************************************************
/*
4wd BT Car
lesson 8.1
Motor driver shield
https://alash-electronics.kz/blogs/wiki
*/

// Подключения мотора A
int enA = 10;

int in1 = 9;
int in2 = 8;
// Подключения мотора B
int in3 = 7;
int in4 = 6;

int enB = 5;

void setup() {
  // Установить все контрольные пины мотора на выходы
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  // Выключить моторы - начальное состояние
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void loop() {
  directionControl();
  delay(1000);
  speedControl();
  delay(1000);
}

// Эта функция позволяет управлять направлением вращения моторов
void directionControl() {
  // Установить моторы на максимальную скорость
  // Для ШИМ максимально возможные значения от 0 до 255
  analogWrite(enA, 255);
  analogWrite(enB, 255);

  // Включить мотор A и B
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(2000);

  // Теперь изменить направления моторов
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(2000);

  // Выключить моторы
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

// Эта функция позволяет управлять скоростью моторов
void speedControl() {
  // Включить моторы
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);

  // Ускорение с нуля до максимальной скорости
  for (int i = 0; i < 256; i++) {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }

  // Замедление с максимальной скорости до нуля
  for (int i = 255; i >= 0; --i) {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }

  // Теперь выключить моторы
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}


//****************************************************************************


Тестовый результат 8.1:

После успешной загрузки кода на плату подключите провода в соответствии со схемой подключения, затем подайте питание внешнему источнику и переключите DIP-переключатель в положение ON, машина будет двигаться вперед в течение 2 секунд, назад 2 секунды и медленно меняет скорость

Тестовый код 8.2:

//****************************************************************************
/*
  4wd BT Car
  lesson 8.2
  Motor driver shield
  https://alash-electronics.kz/blogs/wiki
*/

// Подключения мотора A
int enA = 10;

int in1 = 9;
int in2 = 8;
// Подключения мотора B
int in3 = 7;
int in4 = 6;

int enB = 5;

void setup() {
  // Установить все контрольные пины мотора на выходы
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  // Выключить моторы - начальное состояние
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void loop() {
  forward();
  delay(1000);
  backward();
  delay(1000);
  left();
  delay(1000);
  right();
  delay(1000);
  stop();
  delay(1000);
}

// Эта функция позволяет управлять направлением вращения моторов
void forward(int a) {
  // Установить моторы на максимальную скорость
  // Для ШИМ максимально возможные значения от 0 до 255
  analogWrite(enA, a);
  analogWrite(enB, a);
  // Включить мотор A и B
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}
void backward(int a) {
  // Установить моторы на максимальную скорость
  // Для ШИМ максимально возможные значения от 0 до 255
  analogWrite(enA, a);
  analogWrite(enB, a);
  // Включить мотор A и B
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}

void right(int a) {
  // Установить моторы на максимальную скорость
  // Для ШИМ максимально возможные значения от 0 до 255
  analogWrite(enA, a);
  analogWrite(enB, a);
  // Включить мотор A и B
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
}
void left(int a) {
  // Установить моторы на максимальную скорость
  // Для ШИМ максимально возможные значения от 0 до 255
  analogWrite(enA, a);
  analogWrite(enB, a);
  // Включить мотор A и B
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

void stop() {
  // Установить моторы на максимальную скорость
  // Для ШИМ максимально возможные значения от 0 до 255
  analogWrite(enA, 0);
  analogWrite(enB, 0);
  // Выключить моторы
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

 

//****************************************************************************

 

После успешной загрузки кода на плату, подключите провода в соответствии с схемой подключения, затем включите внешнее питание и переключите DIP-переключатель в положение ON, и вы заметите, что скорость двигателя значительно медленнее. Примечание: Низкий заряд батареи может привести к замедлению скорости двигателя.

Комментарии
Отзывов еще никто не оставлял
Товары упомянутые в статье
В наличии
Предзаказ
арт. 000156
Модуль драйвера L298N является двуканальным драйвером двигателей постоянного тока и...
1200 тг 950 тг
Нет в наличии
Предзаказ
арт.
Электродвигатель постоянного тока, установленный в пластмассовый корпус желтого цвета с...
750 тг 700 тг
Нет в наличии
Предзаказ
арт.
4200 тг
Нет в наличии
Предзаказ
арт.
Комплект для сборки движущейся колесной платформы (4WD) на четырех двигателях....
7000 тг
Нет в наличии
Предзаказ
арт.
Комплект для сборки движущейся колесной платформы (2WD) на двух двигателях....
4800 тг
Нет в наличии
Предзаказ
арт.
Комплект для сборки движущейся колесной платформы (2WD) на двух двигателях....
5500 тг 5000 тг
Предзаказ
Предзаказ успешно отправлен!
Имя *
Телефон *
Добавить в корзину
Название товара
100 тг
1 шт.
Перейти в корзину
Обратный звонок
Запрос успешно отправлен!
Имя *
Телефон *
Заказ в один клик
С помощью уведомлений о заказе можно не только получать актуальную информацию по заказу, но и иметь быстрый канал связи с магазином