octubre 13, 2024

Manejo de motores DC y PWM

 

Introducción al Manejo de Motores DC con Arduino y L293D

Controlar motores de corriente continua (DC) es una de las aplicaciones más emocionantes y útiles de Arduino. Los motores DC se utilizan en una variedad de proyectos, desde robots hasta ventiladores y vehículos a control remoto. Para manejar la velocidad y la dirección de estos motores, podemos usar un controlador de motor como el L293D.

El L293D es un circuito integrado que permite controlar la potencia de un motor, permitiéndonos girar el motor en ambas direcciones y regular su velocidad. Esto se logra mediante la modulación por ancho de pulso (PWM), una técnica que ajusta la energía suministrada al motor para cambiar su velocidad.

En este proyecto, utilizaremos un potenciómetro, un dispositivo que actúa como un control deslizante, para variar la velocidad del motor. Cuando giramos el potenciómetro, su posición se convierte en un valor que Arduino puede leer. Este valor se mapea a un rango que el motor puede entender, lo que nos permite controlar su velocidad de manera suave y precisa.

En resumen, al combinar Arduino, el controlador L293D y un potenciómetro, podemos crear un sistema que no solo controla la velocidad de un motor DC, sino que también permite interactuar de manera intuitiva con él. Esto abre un mundo de posibilidades en robótica y automatización.

Nota: Abajo te dejo un video para que puedas recrear todo desde tu celular. ¡¡Suerte!!  

 

A continuación realizaremos un ejemplo: 

Lista de materiales: 

  • Arduino uno
  • Potenciómetro 250k ohms
  • Protoboard 
  • Jumpers
  • Controlador L293D
  • Motor DC 

Conexiones


  1. Potenciómetro:

    • Conecta un terminal del potenciómetro a GND.
    • Conecta el otro terminal a VCC (5V).
    • Conecta el terminal del medio (wiper) al pin A0 del Arduino.
  2. L293D:

    • Conecta el pin 1 (Enable 1,2) del L293D al pin D9 del Arduino.
    • Conecta el pin 2 (Input 1) del L293D al pin D8 del Arduino.
    • Conecta el pin 7 (Input 2) del L293D al pin D7 del Arduino.
    • Conecta el pin 3 (Output 1) del L293D al terminal positivo del motor.
    • Conecta el pin 6 (Output 2) del L293D al terminal negativo del motor.
    • Conecta los pines 4, 5, 12 y 13 del L293D a GND.
    • Conecta el pin 8 (Vcc2) del L293D a VCC (5V).
    • Si tu motor necesita una tensión diferente, conecta el pin 16 (Vcc1) a la tensión adecuada.

Consideraciones

  • Verifica que la corriente del motor no exceda la capacidad del L293D.
  • Usa un diodo de protección en paralelo con el motor si es necesario para evitar picos de voltaje.
  • Puedes ajustar la dirección del motor cambiando el estado de in1Pin e in2Pin.

Codigo de programacion C++:

// Pines de conexión
const int potPin = A0;    // Pin del potenciómetro
const int pwmPin = 9;     // Pin PWM para controlar la velocidad del motor
const int in1Pin = 8;     // Pin de entrada 1 del L293D
const int in2Pin = 7;     // Pin de entrada 2 del L293D

void setup() {
    pinMode(pwmPin, OUTPUT);
    pinMode(in1Pin, OUTPUT);
    pinMode(in2Pin, OUTPUT);
    
    // Configurar la dirección del motor (hacia adelante)
    digitalWrite(in1Pin, HIGH);
    digitalWrite(in2Pin, LOW);
}

void loop() {
    // Leer el valor del potenciómetro (0 a 1023)
    int potValue = analogRead(potPin);
    
    // Mapear el valor del potenciómetro a un rango de PWM (0 a 255)
    int pwmValue = map(potValue, 0, 1023, 0, 255);
    
    // Enviar el valor PWM al motor
    analogWrite(pwmPin, pwmValue);
    
    delay(100); // Pequeño retraso para estabilidad
}


Explicacion del codigo: 

¿Qué hace este código?

  1. Conexiones:

    • Primero, el código dice dónde están las cosas conectadas. Piensa en esto como una lista de amigos y a qué silla se sientan en la mesa.
    • potPin es el lugar donde se conecta el potenciómetro, que nos dice cuánta energía queremos darle al motor.
    • pwmPin es donde enviamos la señal que controla la velocidad del motor.
    • in1Pin y in2Pin son como botones que le dicen al motor hacia dónde debe girar.

  2. Configuración inicial (setup):

    • Aquí preparamos todo. Decimos que pwmPin, in1Pin, y in2Pin son salidas, como si estuvieras diciéndole a tus amigos que ahora son los que van a hablar.
    • Luego, le decimos al motor que empiece a girar hacia adelante. Es como decirle a tu amigo que empiece a caminar hacia la derecha.

  3. Bucle principal (loop):

    • En este bucle, el código se repite una y otra vez.
    • Primero, lee cuánto giramos el potenciómetro. Esto va de 0 a 1023, como si estuvieras subiendo el volumen de 0 a 10.
    • Después, convertimos ese número en un rango más pequeño (de 0 a 255). Esto es como convertir el volumen de un altavoz grande a uno más pequeño, que el motor pueda entender.
    • Luego, le enviamos esa señal al motor, diciéndole qué tan rápido debe girar.
    • Por último, hacemos una pequeña pausa (100 milisegundos) para que todo funcione de manera estable, como si dijéramos "espera un momento" antes de volver a preguntar.

Resumiendo

Así que este código ayuda a que un motor gire más rápido o más lento, dependiendo de cómo movemos el potenciómetro, y también le dice en qué dirección debe girar. ¡Es como tener un control remoto para un pequeño coche!




0 comentarios:

Publicar un comentario