Encuentra tu pasión a solo 4,17 US$/mes | Aprende Robótica, IA e IOT.

Cómo controlar motores en Tinkercad usando Arduino

La mayoría de los robots utilizan motores para desplazarse, girar o mover diferentes mecanismos. Por eso, aprender a controlar un motor DC es uno de los primeros pasos para iniciarse en la robótica.

Antes de invertir en componentes físicos, puedes practicar de forma gratuita con Tinkercad y adquirir experiencia mediante simulaciones, sin correr el riesgo de dañar componentes o gastar dinero innecesariamente.

En este guía descubrirás cómo controlar motores en Tinkercad usando Arduino mediante prácticas sencillas y progresivas. Comenzaremos creando una cuenta en Tinkercad y configurando nuestro primer circuito para que puedas seguir el tutorial desde cero.

Después, aprenderás a encender y apagar un motor DC con un interruptor. Una vez dominado este paso, utilizaremos el puente H L293D para invertir el sentido de giro y comprender cómo funciona el control de dirección.

Por último, controlaremos la velocidad del motor utilizando PWM y un potenciómetro, una técnica fundamental en proyectos de robótica, automatización y electrónica.

Tutorial de control de motor DC con Arduino y L293D, guía paso a paso para aprender conexión y funcionamiento del control de motores.

Al finalizar este tutorial, no solo habrás aprendido a simular el control de motores, sino que también comprenderás los conceptos necesarios para aplicar estos conocimientos en proyectos reales con Arduino.

¿Qué es Tinkercad?

Tinkercad es un simulador de circuitos online que permite crear y probar proyectos electrónicos utilizando Arduino y diferentes componentes.

Dentro de la plataforma podemos trabajar con motores DC, controladores como el L293D, potenciómetros, interruptores y otros elementos necesarios para comprender el control de motores.

Una de sus principales ventajas es que permite experimentar con conexiones y programación antes de llevar el circuito a un montaje físico, facilitando el aprendizaje y la detección de errores.

Si todavía no sabes como usar Tinkercad te reomiendo revisar primero nuestro tutorial:

Cómo usar Tinkercad para circuitos paso a paso desde cero

Materiales para la simulación

Al trabajar con un simulador, no necesitamos componentes físicos. Simplemente debemos buscar y arrastrar los siguientes elementos dentro del área de trabajo de Tinkercad:

  • 1x Motor DC (motor reductor de 3 a 6V)
  • 1x Driver L293D
  • 1x Arduino UNO
  • 1x Fuente de alimentación (3 a 6V)
  • 1x Switch
  • 1x Potenciómetro
  • 1x Resistencia de 10kΩ

Control ON/OFF Directo

Antes de utilizar Arduino es importante comprender el funcionamiento básico de un motor DC.

En esta primera práctica aprenderás a encender y apagar un motor utilizando únicamente una fuente de alimentación y un switch mecánico, sin necesidad de programación.

Cuando cierras el circuito con el switch, el motor recibe la tensión y gira. Cuando lo abres, el motor se apaga.

Es la forma más simple de control, ideal para pruebas básicas de funcionamiento y para comprobar el sentido de giro del motor sin necesidad de programación ni componentes adicionales.

Pasos para realizar las conexiones

  1. Conecta el positivo de la fuente de alimentación a un terminal del switch.

  2. Conecta el otro terminal del switch al terminal positivo del motor DC.

  3. Conecta el terminal negativo del motor DC al negativo de la fuente de alimentación.

  4. Cuando presiones el switch, el motor encenderá y girará en un sentido.

  5. Para cambiar el sentido de giro, invierte las conexiones positivo y negativo en el motor.

Limitación de este método

Este método no permite controlar la velocidad ni invertir el giro automáticamente. Solo puedes encender o apagar el motor, por lo que es limitado en aplicaciones de robótica y automatización donde se requiere velocidad variable o cambio de dirección.

Inversión de Giro con Puente H (L293D)

Ahora damos un paso más allá del control básico. Imagina que tu motor no solo debe encenderse y apagarse, sino también decidir hacia dónde debe girar.

Aquí es donde entra el L293D, un puente H que nos permite cambiar la dirección del motor DC de forma electrónica.

En este método, utilizamos señales digitales de Arduino para invertir la polaridad aplicada al motor, logrando así que el sentido de rotación cambie según la lógica del programa.

Este tipo de control es clave cuando empiezas a construir robots móviles o mecanismos que necesitan cambiar de dirección, por ejemplo grúas o sistemas de apertura y cierre.

Revisión de conexiones

Paso 1: Vcc1 (pin 16 del L293D): conecta a 5V de Arduino.

Paso 2: Vcc2 (pin 8 del L293D): conecta a la fuente de alimentación del motor (6-12V).

Paso 3: GND (pines 4, 5, 12, 13): conecta a GND común (Arduino y fuente).

Paso 4: IN1 (pin 2): conecta al pin 9 de Arduino.

Paso 5: IN2 (pin 7): conecta al pin 8 de Arduino.

Paso 6: Enable1 (pin 1): conecta al pin 10 de Arduino (en este método se pondrá en alto fijo para habilitar el puente H).

Paso 7: OUT1 (pin 3): conecta a un terminal del motor DC.

Paso 8: OUT2 (pin 6): conecta al otro terminal del motor DC.

Paso 9: Switch:

  • Un pin del switch conecta al pin 7 de Arduino.

  • El otro pin conecta a GND.

  • Se configura como INPUT_PULLUP, por lo que no requiere resistencia externa.

Código Arduino

				
					// Control inversión de giro motor DC con L293D y switch

const int in1 = 9;     // Pin IN1 L293D
const int in2 = 8;     // Pin IN2 L293D
const int enA = 10;    // Pin Enable1 L293D
const int switchPin = 7; // Pin del switch

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(enA, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP); // Configura switch como entrada con pull-up

  digitalWrite(enA, HIGH); // Habilita el puente H
}

void loop() {
  if (digitalRead(switchPin) == LOW) {
    // Switch presionado: giro horario
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
  } else {
    // Switch no presionado: giro antihorario
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
  }
}

				
			

Limitación de este método

🧠 Aprende IA con Arduino​

Explora nuestro eBook con proyectos guiados paso a paso para aprender inteligencia artificial con Arduino desde cero, en casa o en el aula.

Aunque permite invertir el giro, no controla la velocidad. Para velocidad variable es necesario implementar PWM en el pin Enable1, lo cual se verá en la siguiente forma.

Control de Velocidad y Giro con PWM

Ahora pasamos al nivel más completo del proyecto, donde combinamos todo lo aprendido en un solo sistema.

En este método implementamos el control completo de un motor DC, donde ya no solo encendemos o apagamos el motor, sino que también controlamos su comportamiento de forma más precisa.

Por un lado, utilizamos un switch conectado a un pin digital de Arduino para cambiar el sentido de giro del motor. De esta forma, podemos decidir hacia dónde debe moverse en cualquier momento.

Por otro lado, incorporamos un potenciómetro conectado al pin analógico A0, el cual nos permite ajustar la velocidad del motor. Este valor es enviado como señal PWM al pin Enable del L293D, regulando así la potencia entregada al motor.

Este tipo de control es muy utilizado en robótica, especialmente en sistemas donde se necesita movimiento controlado y cambios dinámicos de dirección.

 

Pasos para realizar las conexiones

Nota: Las conexiones anteriores se mantienen. Aquí solo se agrega el potenciómetro.

Paso 1: Conecta el terminal central del potenciómetro al pin A0 de Arduino.

Paso 2: Conecta un extremo del potenciómetro a 5V de Arduino.

Paso 3: Conecta el otro extremo del potenciómetro a GND.

Código Arduino

Aquí tienes el código para controlar velocidad y sentido de giro con PWM y switch:

				
					// Control de velocidad y giro motor DC con L293D, potenciómetro y switch

const int in1 = 9;     // Pin IN1 L293D
const int in2 = 8;     // Pin IN2 L293D
const int enA = 10;    // Pin Enable1 L293D (PWM)
const int potPin = A0; // Pin del potenciómetro
const int switchPin = 7; // Pin del switch

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(enA, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP); // Switch con pull-up
}

void loop() {
  int potValue = analogRead(potPin);         // Lee el potenciómetro (0-1023)
  int speed = map(potValue, 0, 1023, 0, 255); // Convierte a rango PWM (0-255)

  analogWrite(enA, speed); // Controla velocidad con PWM

  if (digitalRead(switchPin) == LOW) {
    // Switch presionado: giro horario
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
  } else {
    // Switch no presionado: giro antihorario
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
  }
}

				
			

Para finalizar, has recorrido un proceso completo desde el control más básico hasta un sistema mucho más avanzado del control de motor DC con Arduino y L293D. Empezaste con el encendido directo, luego entendiste cómo cambiar el sentido de giro y finalmente integraste el control de velocidad en un solo sistema.

Ahora ya tienes una base sólida en el control de motor DC con Arduino y L293D, lo que te permite seguir construyendo proyectos más complejos en robótica, como robots móviles o sistemas automatizados donde el control del movimiento es fundamental. A partir de aquí, puedes seguir experimentando y mejorando tus propios diseños.

🧠 Aprende IA con Arduino​

Explora nuestro eBook con proyectos guiados paso a paso para aprender inteligencia artificial con Arduino desde cero, en casa o en el aula.

Tabla de contenidos

Ingrese a su cuenta