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

Refine this doc
Ask about this doc
Notas de diseño — Puente H Arduino Bluetooth
Requisitos del usuario
  • 2 motores DC.
  • Módulo Bluetooth HC-05.
  • Arduino Uno.
  • Batería de 9 V.
Arquitectura seleccionada
  • Driver: TB6612FNG dual H-bridge.
  • Alimentación motor: batería 9 V a través de diodo Schottky de protección contra polaridad inversa.
  • Lógica: 5 V desde Arduino Uno para VCC del TB6612FNG.
  • Bluetooth: HC-05 alimentado desde 3.3 V del Arduino Uno.
  • UART Bluetooth: HC-05 TXD directo a Arduino RX; Arduino TX hacia HC-05 RX mediante divisor 1 kΩ / 2 kΩ para bajar 5 V a ~3.3 V.
Límites eléctricos importantes
Según hoja de datos del TB6612FNG:
  • VM recomendado: 2.5–13.5 V; batería 9 V válida.
  • VCC recomendado: 2.7–5.5 V; Arduino 5 V válido.
  • Corriente recomendada por canal: hasta 1.0 A continuo en VM ≥ 4.5 V.
  • Pico absoluto: 3.2 A durante 10 ms, no continuo.
Presupuesto de corriente
Suposición de diseño: coche educativo con motores pequeños.

Table


CargaCorriente continua estimadaPico corto
Motor A1.0–1.2 Ahasta 3 A
Motor B1.0–1.2 Ahasta 3 A
TB6612 lógica~2 mAbajo
HC-05~30–50 mAbajo
Arduino Uno~50–100 mAbajo
La batería debe poder entregar al menos ~2.5 A para uso real con ambos motores. Una pila rectangular de 9 V normalmente no puede entregar esa corriente de forma fiable; se recomienda pack 6×AA, 2S Li-ion/LiPo con regulación adecuada, o batería recargable con capacidad de descarga suficiente.
Asignación de pines Arduino

Table


FunciónArduino UnoTB6612 / HC-05
PWM motor AD5PWMA
Dirección A1D7AIN1
Dirección A2D8AIN2
PWM motor BD6PWMB
Dirección B1D9BIN1
Dirección B2D10BIN2
Bluetooth TX ArduinoD1/TXdivisor hacia HC-05 RXD
Bluetooth RX ArduinoD0/RXHC-05 TXD
Advertencias para montaje
  • Unir siempre GND de batería, Arduino, HC-05 y TB6612.
  • Colocar C1/C2 muy cerca de pines VM del TB6612; C3/C4 cerca de VCC.
  • El diodo Schottky protege contra polaridad inversa, pero disipa calor a corrientes altas.
  • Para programar el Arduino por USB, desconectar el HC-05 de D0/D1 o usar SoftwareSerial en otros pines en una revisión futura.

    Requisitos del usuario

    Arquitectura seleccionada

    Límites eléctricos importantes

    Presupuesto de corriente

    Asignación de pines Arduino

    Advertencias para montaje

Documents

    Notas de diseño — Puente H Arduino Bluetooth

    Firmware — Arduino Uno + HC-05 + L293D

    Motor Driver 9 V Design Notes

Assets

Assets are files uploaded to this project which can be used in various ways.

USB-C ESP32 Environmental Node thumbnail
Low-power USB-C environmental sensor node using a dual-radio Wi‑Fi/BLE MCU, digital temperature/humidity sensing, protected 5 V USB-C input, and 3.3 V regulation for consumer use.

Properties

Properties describe core aspects of the project.

Pricing & Availability

Distributor

Qty 1

Arrow

$8.95–$13.35

Digi-Key

$13.19

HQonline

$4.36

LCSC

$1.46–$5.43

Mouser

$15.55

TME

$6.16

Verical

$5.17–$10.17

Controls