Мотор вращается только в одном направлении с контроллером L293D

Здравствуйте, у меня есть радиоуправляемая машина с двумя 3-вольтовыми моторами (один для левого / правого и другого для прямого / заднего). Левый и правый мотор работает нормально, но когда я пытаюсь вращать другой мотор, он вращается только назад. Я пробовал мотор отдельно, и он работает в обоих направлениях без контроллера.

Мой код следующий:

int enablePinMotorAF = 3;
int in1PinMotorAF = 5;
int in2PinMotorAF = 6;
int enablePinMotorLR = 11;
int in1PinMotorLR = 10;
int in2PinMotorLR = 9;
boolean reverse = true;

void setup() {
  pinMode(enablePinMotorAF, OUTPUT);
  pinMode(in1PinMotorAF, OUTPUT);
  pinMode(in2PinMotorAF, OUTPUT);
  pinMode(enablePinMotorLR, OUTPUT);
  pinMode(in1PinMotorLR, OUTPUT);
  pinMode(in2PinMotorLR, OUTPUT);
}

void loop() {
  //go forward  ->not working
  analogWrite(enablePinMotorAF, 230);  //max speed
  digitalWrite(in1PinMotorAF, reverse);
  digitalWrite(in2PinMotorAF, !reverse);
  delay(3000);
  //go back -> working
  analogWrite(enablePinMotorAF, 230); //max speed
  digitalWrite(in1PinMotorAF, !reverse);
  digitalWrite(in2PinMotorAF, reverse);
  delay(3000);
  //go right -> working
  analogWrite(enablePinMotorLR, 230); //max speed
  digitalWrite(in1PinMotorLR, !reverse);
  digitalWrite(in2PinMotorLR, reverse);
  delay(3000);
  //go left  -> working
  analogWrite(enablePinMotorLR, 230); //max speed
  digitalWrite(in1PinMotorLR, reverse);
  digitalWrite(in2PinMotorLR, !reverse);
  delay(3000);
}

Вот и проводка:

электропроводка

Зеленый и оранжевый провода предназначены для модуля Bluetooth.

У вас есть идеи, как я могу решить эту проблему и заставить ее работать?

Спасибо.

1 ответ

Чтобы перевернуть двигатели, вам нужно четыре контакта, по два на каждый двигатель. На легкодоступном модуле L293 они часто обозначаются как IN1, IN2, IN3 и IN4.

Чтобы заставить один двигатель двигаться вперед, вы можете установить IN1 на 5 В и IN2 на 0 В. Чтобы изменить его, просто переключите входы, IN1 на 0V и IN2 на 5V. В этом случае 5V является digitalWrite(pin, HIGH),

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

Похоже, что с помощью пинов Enable вы ошиблись. Enable2 и Enable1 должны быть подключены к контактам, с которыми вы делаете analogWrite() но enablePinMotorAF = 3 например, подключается к входному сигналу двигателя, а не к Enable2, как это должно быть. Начните с исправления этого... ваши два контакта 3 и 11 должны быть подключены к Enable1 и Enable2. Вам нужен только ШИМ на контактах включения. Остальные должны быть просто активированы с помощью digitalWrite(),

После того, как вы подключите контакты n к ШИМ, у вас будет хороший сигнал включения ШИМ. Просто подключите другие контакты на той же стороне чипа (IN1 и IN2 для Enable1 и IN3 и IN4 для Enable2) и включите и выключите их с помощью `digitalWrite(pin, HIGH), и все будет в порядке.

Другие вопросы по тегам