Controlling DC Motors


FORGET EVERYTHING!!
Ok I have 2 motors DC that´ll work at 9V (inputs) controlled from the pins of the Arduino and the integrated circuit LM293D (throughole version).
The Arduino will run this code:
//Motor1
int IN1 = 9;
int IN2 = 8;
int ENA1 = 10;
// Motor 2
int IN4 = 6;
int IN3 = 5;
int ENA2 = 3;
int speedmotor = 127;
//1=Hacia delante, 2=Hacia atrás, 3=Giro izquierdas, 4=Giro derechas
int movimiento = 0;
int movAnterior = -1;
bool estado = true;
//Bluetooth(incluir libreria y softwareserial)
void setup()
{
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA1, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA2, OUTPUT);
//Se imprime un texto cada vez que se conecte
Serial.println("CONTROL INALAMBRICO CONECTADO ");
}
void loop()
{
if(Serial.available()){ //Digo al Arduino que lea si el valor almacenado es mayor a 0
movimiento = Serial.parseInt(); //devuelve un numero entero y lo soobreescribe en la variable de movimiento
}
if(movimiento != movAnterior){
movAnterior = movimiento;
if(movimiento == 0){
Serial.println("Coche Detenido");
digitalWrite(IN1, 0);
digitalWrite(IN2, 0);
digitalWrite(IN3, 0);
digitalWrite(IN4, 0);
analogWrite(ENA1, 0);
analogWrite(ENA2, 0);
estado = true;
}
if(movimiento == 1){
Serial.println("Ir hacia adelante: "+String(speedmotor));
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
digitalWrite(IN3, 0);
digitalWrite(IN4, 1);
analogWrite(ENA1, speedmotor);
analogWrite(ENA2, speedmotor);
estado = true;
}
else if(movimiento == 2){
Serial.println("Ir hacia atras: "+String(speedmotor));
digitalWrite(IN1, 0);
digitalWrite(IN2, 1);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
analogWrite(ENA1, speedmotor);
analogWrite(ENA2, speedmotor);
estado = true;
}
else if(movimiento == 3){
Serial.println("Girar hacia la derecha: "+String(speedmotor));
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
analogWrite(ENA1, speedmotor);
analogWrite(ENA2, 0);
estado = true;
}
else if(movimiento == 4){
Serial.println("Girar hacia la izquierda: "+String(speedmotor));
digitalWrite(IN1, 0);
digitalWrite(IN2, 1);
digitalWrite(IN3, 0);
digitalWrite(IN4, 1);
analogWrite(ENA1, 0);
analogWrite(ENA2, speedmotor);
estado = true;
}
Serial.println("movimiento: "+String(movimiento));
if(movimiento == 5 && estado == true){
Serial.println("speedmotor antes de cambiar: "+String(speedmotor));
speedmotor = speedmotor - 50;
speedmotor = constrain(speedmotor, 10, 255);
Serial.println("speedmotor despues de cambiar: "+String(speedmotor));
analogWrite(ENA1, speedmotor);
analogWrite(ENA2, speedmotor);
delay(500);
estado = false;
}
else if(movimiento == 6 && estado == true){
Serial.println("speedmotor antes de cambiar: "+String(speedmotor));
speedmotor = speedmotor + 50;
speedmotor = constrain(speedmotor, 10, 255);
Serial.println("speedmotor despues de cambiar: "+String(speedmotor));
analogWrite(ENA2, speedmotor);
analogWrite(ENA1, speedmotor);
delay(500);
estado = false;
}
delay(1000);
}
}
It is design to run bassed on a 9V 2100mAh battery.
There will also be a bluetooth model (HC-04) that will be connected to a mobile phone that through an APP will send the respective number (1 or 2 or 3... depending on what the user want to do at that moment) put all the respective resistors and capacitors that you consider necessary but everything throughole please
He actualizado el esquema para tu robot con Arduino Uno + L293D DIP + 2 motores DC a 9 V + Bluetooth HC-05.
Hecho:
  • L293D rewired para tu código:
    • Motor 1: D9 → IN1, D8 → IN2, D10 → ENA1/PWM
    • Motor 2: D5 → IN3, D6 → IN4, D3 → ENA2/PWM
  • VCC2 del L293D ahora va al rail de 9 V, no a 5 V.
  • Añadí entrada de batería de 9 V, capacitores through-hole, HC-05 y divisor resistivo para RX del Bluetooth.
  • Actualicé la documentación:
Estado de verificación:
  • La revisión eléctrica y de fabricación no mostró errores.
  • Queda pendiente revisar/limpiar DRC de layout porque añadí componentes nuevos through-hole y todavía habría que colocarlos físicamente en la PCB y rutearlos.
Nota importante: verifica que cada motor no supere aprox. 600 mA continuos con el L293D. Si los motores consumen más, conviene cambiar a un driver más potente.
Auto-place components
Run ERC/DRC
Add terminals
Check motor current

U1
A1
C1
Capacitance
1µF
C5
Capacitance
1µF
J3
R1
Resistance
1kΩ
R2
Resistance
2.2kΩ

USB-C ESP32 Environmental Node

USB-C ESP32 Environmental Node thumbnail