Драйвер моторов L293

Перемычка PWR нужна для объединения питания. Тогда моторы будут запитываться от вывода VCC. При таком варианте будьте внимательны, не спалите выводы.

Управляющие выводы:

  • VCC - питание драйвера
  • GND - земля драйвера
  • IN1 - управляющий сигнал 1 мотора А
  • IN2 - управляющий сигнал 2 мотора А
  • IN3 - управляющий сигнал 1 мотора B
  • IN4 - управляющий сигнал 2 мотора И
  • EN1 - сигнал скорости мотора A
  • EN2 - сигнал скорости мотора И

Выводы для подключения шагового моторов:

  • VCC - питание мотора
  • A+ -

Пример 1. Один мотор. Подключение: мотор красный провод в А+, мотор чёрный провод в А-. От Ардуино: 5в - VСС, GND - GND, EN1 - 10, IN1 - 9, IN2 - 8

Внешнее питание в VIN и GND.

Скетч:

#define MOTOR_EN_1    10
#define MOTOR_IN1     9
#define MOTOR_IN2     8
 
int Speed = 128;
 
void Forward() {
  analogWrite(MOTOR_EN_1, Speed);
  digitalWrite(MOTOR_IN1, HIGH);
  digitalWrite(MOTOR_IN2, LOW);
}
 
void Back() {
  analogWrite(MOTOR_EN_1, Speed);
  digitalWrite(MOTOR_IN1, LOW);
  digitalWrite(MOTOR_IN2, HIGH);
}
 
void Brake() {
  digitalWrite(MOTOR_IN1, HIGH);
  digitalWrite(MOTOR_IN2, HIGH);
}
 
void setup() {
 
  Serial.begin(9600);
  Serial.println("L293D motor driver test");
 
  pinMode(MOTOR_EN_1, OUTPUT);
  pinMode(MOTOR_IN1, OUTPUT);
  pinMode(MOTOR_IN2, OUTPUT);
}
 
void loop() {
 
  Forward();
  delay(1000);
 
  Brake();
  delay(500);
 
  Back();
  delay(1000);
 
  Brake();
  delay(500);
 
}

Пример 2. Два мотора. Подключение: мотор 1 красный провод в А+, мотор чёрный провод в А-, мотор 2 красный провод в B-, мотор чёрный провод в B+. От Ардуино: 5в - VСС, GND - GND, EN1 - 10, IN1 - 9, IN2 - 8, EN2 - 11, IN3 - 12, IN4 - 13

Внешнее питание в VIN и GND.

#define MOTOR_EN_1    10
#define MOTOR_EN_2    11
#define MOTOR_IN1     9
#define MOTOR_IN2     8
#define MOTOR_IN3     12
#define MOTOR_IN4     13
 
int Speed = 128;
 
void Forward() {
  analogWrite(MOTOR_EN_1, Speed);
  digitalWrite(MOTOR_IN1, HIGH);
  digitalWrite(MOTOR_IN2, LOW);
 
  analogWrite(MOTOR_EN_2, Speed);
  digitalWrite(MOTOR_IN3, HIGH);
  digitalWrite(MOTOR_IN4, LOW);
}
 
void Back() {
  analogWrite(MOTOR_EN_1, Speed);
  digitalWrite(MOTOR_IN1, LOW);
  digitalWrite(MOTOR_IN2, HIGH);
 
  analogWrite(MOTOR_EN_2, Speed);
  digitalWrite(MOTOR_IN3, LOW);
  digitalWrite(MOTOR_IN4, HIGH);
}
 
void Brake() {
  digitalWrite(MOTOR_IN1, HIGH);
  digitalWrite(MOTOR_IN2, HIGH);
  digitalWrite(MOTOR_IN3, HIGH);
  digitalWrite(MOTOR_IN4, HIGH);
}
 
void setup() {
 
  Serial.begin(9600);
  Serial.println("L293D motor driver test");
 
  pinMode(MOTOR_EN_1, OUTPUT);
  pinMode(MOTOR_IN1, OUTPUT);
  pinMode(MOTOR_IN2, OUTPUT);
 
  pinMode(MOTOR_EN_2, OUTPUT);
  pinMode(MOTOR_IN3, OUTPUT);
  pinMode(MOTOR_IN4, OUTPUT);
}
 
void loop() {
 
  Forward();
  delay(1000);
 
  Brake();
  delay(500);
 
  Back();
  delay(1000);
 
  Brake();
  delay(500);
 
}