Спецификация:
Входное напряжение для логики: постоянный ток 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, и вы заметите, что скорость двигателя значительно медленнее. Примечание: Низкий заряд батареи может привести к замедлению скорости двигателя.