Мотор вращается только в одном направлении с контроллером 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), и все будет в порядке.