Controlando un motor de corriente continua utilizando un controlador de motor L293D con PWM de Arduino
Este proyecto demuestra cómo controlar la velocidad y la dirección de un motor de corriente continua utilizando un chip controlador de motor L293D y las capacidades de Modulación por Ancho de Pulso (PWM) de Arduino. Esta configuración permite un control preciso del motor, lo que la hace adecuada para una variedad de aplicaciones.
Aquí hay algunas ideas de proyectos utilizando esta configuración:
- Robótica:Controla el movimiento de las ruedas de un pequeño robot.
- Dispositivos automatizados:Crea cortinas automáticas, persianas o una pequeña cinta transportadora.
- Control del ventilador:Ajusta la velocidad de un ventilador de enfriamiento según las lecturas de temperatura.
- Siguetrackers solares:Coloca paneles solares pequeños para seguir al sol durante todo el día.
Hardware/Componentes
- Arduino Uno (o placa compatible)
- Controlador de motor IC L293D
- Motor de CC (calificado para los límites de voltaje y corriente del L293D, hasta 600mA)
- Fuente de alimentación de 9V (para el motor)
- Conexión de cables
- Placa de prueba (recomendado)
Guía de cableado
El chip L293D actúa como una interfaz entre el Arduino y el motor de corriente continua. Permite que el Arduino controle tanto la velocidad como la dirección del motor. El chip requiere una fuente de alimentación separada para el motor porque el Arduino no puede suministrar suficiente corriente para la mayoría de los motores. (en el video a las 04:04)
%%WIRING%%
Explicación del código
El código de Arduino controla el driver L293D, que a su vez controla el motor de corriente continua. El código utiliza PWM para variar la velocidad del motor y señales digitales para cambiar la dirección.
Aquí están los parámetros configurables clave en el código:
#define P1A 10 // Arduino pin connected to L293D input 1A
#define P2A 11 // Arduino pin connected to L293D input 2A
#define EN12 9 // Arduino pin connected to L293D enable pin (1,2EN)
const int speedStep = 15; // Increment for speed changes
const int speedDelay = 1000; // Delay between speed steps (in milliseconds)
ElL293D()la función controla la dirección y velocidad del motor. 'L' establece el motor para que gire en sentido horario, 'R' lo establece para que gire en sentido antihorario. Elspdel parámetro controla la velocidad (0-255) yenactiva (1) o desactiva (0) el motor. (en el video a las 09:24)
void L293D(char dir,int spd, int en)
{
if(dir =='L') // Clockwise rotation
{
// ...
analogWrite(P1A,spd); // Set speed using PWM
digitalWrite(P2A,LOW);
}else{ // Counter-clockwise rotation
// ...
digitalWrite(P1A,LOW);
analogWrite(P2A,spd); // Set speed using PWM
}
}
Proyecto Vivo/Demostración
El video demuestra el proyecto en acción, mostrando la velocidad del motor y los cambios de dirección. Las lecturas del osciloscopio visualizan las señales PWM que controlan el motor. (en el video a las 11:07)
Capítulos
- [00:00] Introducción al Control de Motores de CC con L293D
- [00:30] Demostración y explicación del proyecto
- [01:12] Descripción general del controlador de motor L293D
- [02:08] Especificaciones del Motor de CC
- [02:30] Explicación de la hoja de datos de L293D
- [04:40] Explicación y demostración del cableado
- [07:05] Explicación del código de Arduino
- [11:07] Demostración del proyecto y lecturas del osciloscopio
Recursos y referencias
Archivos📁
No hay archivos disponibles.