Arrow Electronic Components Online

Control simple de velocidad de motor DC con PWM

Control de Motor23 mar 2023
Un microcontrolador Raspberry Pi Pico está conectado a un circuito de protoboard, controlando un pequeño motor de corriente continua.
Ver todos los artículos

Por: Jeremy Cook

Una de las operaciones más fundamentales en electrónica es el control de velocidad de motores de corriente continua. Aquí, veremos qué significa eso desde lo básico: enviar una señal PWM a un MOSFET o a un controlador dedicado. Esta señal controla directamente la velocidad del motor de corriente continua, utilizando corrientes más altas (y a menudo voltajes) que el controlador puede producir por sí mismo.

Control PWM sencillo para LED

A blue handheld oscilloscope is shown capturing waveforms from a small electronic circuit on a white breadboard.

Jeremy Cook | LED externo con pulsos indicados por osciloscopio

PWM (es decir, modulación por ancho de pulso) simula una salida de voltaje analógico mediante la repetición de pulsos por periodos de tiempo variables. En esta configuración, el periodo se define como el tiempo que tarda un ciclo de encendido/apagado en completarse. El ciclo de trabajo, a menudo expresado como un porcentaje, es la proporción de tiempo de encendido respecto al tiempo de apagado.
 
Una señal de cinco voltios con un ciclo de trabajo del 50% resultaría en una señal analógica simulada de 2.5V. Un periodo de 1ms produciría este cambio de estado de encendido/apagado 1000 veces por segundo (o 1000 Hz), definido como la frecuencia de la señal PWM. El control PWM funciona bien con motores de CC y otras cargas de cambio lento. Una salida analógica verdadera es preferible en diferentes situaciones, como la reproducción de audio.
 
Usaremos el Raspberry Pi Pico ejecutando CircuitPython para explorar este principio y generar señales PWM. Para una breve introducción, cargue el código que se encuentra aquí. Este código alternará el LED a bordo desde su máxima intensidad, o 65,535 (2^16 – 1), a 4095 (2^12 -1), menos de 1/10 del valor original. Uno puede observar el cambio de luz, aunque puede ser difícil correlacionar la salida de luz observada con el valor numérico.

Circuito de control de motor MOSFET

This schematic diagram features a Raspberry Pi Pico microcontroller connected to a simple DC motor driver circuit.

Jeremy Cook | Circuito de control de motor DC con MOSFET

La metodología de control utilizando un MOSFET (FQP30N06L) es esencialmente la misma que para un LED. El código para nuestro próximo experimento se encuentra aquí. Conecte la salida de control al pin de ganancia del MOSFET a través de una pequeña resistencia (~100Ω). Añada una resistencia de 10k a tierra para mantenerlo bajo cuando no haya entrada presente. El cable positivo del motor va al drenaje del MOSFET, mientras que la fuente del MOSFET está conectada a tierra.
 
El pin VBUS inicialmente suministró el voltaje positivo; sin embargo, generalmente sería mejor utilizar una fuente de voltaje externa conectada a una tierra común con el Pico. También sería recomendable implementar un diodo de recuperación para encargarse de las cargas inductivas residuales.

Controlador de motor L293D: Una manera más fácil de construir un circuito de control de motor de CC

A Raspberry Pi Pico microcontroller is connected on a white breadboard alongside a small DC motor.

Jeremy Cook | Título: Driver de motor L293D

MOSFETs son excelentes dispositivos de propósito general, pero si quieres controlar la velocidad y la dirección, o si tienes más de un motor que atender, las cosas se complican muy rápidamente. Afortunadamente, hay circuitos integrados de control de motor listos para manejar este desafío, incluyendo el venerable controlador L293D utilizado aquí. Los requisitos de conexión se pueden determinar a partir de la hoja de especificaciones. El método que utilicé para conectarlo a mi Raspberry Pi Pico está diagramado a continuación:

This schematic shows a Raspberry Pi Pico microcontroller connected to an L293D motor driver IC.

Jeremy Cook | Pines U4 GND conectados internamente

El código de rotación digital (encendido/apagado) para esta configuración se encuentra aquí, lo que hace que el motor avance y retroceda a plena potencia, con pausas entre medias. Este código PWM inicializa el motor a un ciclo de trabajo específico, lo incrementa gradualmente y luego se detiene. Luego, aumenta en la otra dirección y se detiene nuevamente antes de repetir la secuencia.

Una advertencia sobre el controlador L293D

Mientras usaba ese último fragmento de código (con una entrada de 12V VCC2 y sin condensador), terminé deshabilitando una placa Raspberry Pi Pico. Una buena práctica hubiera sido usar condensadores para equilibrar las entradas de energía y lógica. El L293D proporciona capacidades internas de sujeción para manejar cargas inductivas, por lo que no deberían haberse necesitado diodos de retroceso externos. Hay varios posibles culpables de cómo sucedió esto, pero debería servir como recordatorio para asegurar que el hardware esté especificado e implementado para cumplir con los requisitos del mundo real una vez que salga del banco.

¿Conectar y usar, o personalización completa?

Sus diseños de circuitos de control de motores DC probablemente no residirán en una placa de pruebas para siempre. A partir de aquí, hay dos caminos divergentes:
 
Para prototipos más avanzados o diseños únicos, hay disponibles escudos de motor y placas de desarrollo que añaden controladores como el L293D como una solución plug-and-play para motores DC, paso a paso, servos, y más. El Arduino Motor Shield es quizás el más conocido y es compatible con el formato Arduino Uno. Si desea continuar con la plataforma RP2040, el Maker Pi RP2040 podría ser una excelente solución plug-and-play para controlar motores y otros dispositivos.
 
En el otro extremo del espectro, es posible integrar diseños de controladores de motor directamente en su propio diseño de placa de circuito impreso. Esta integración le brinda una libertad de diseño casi infinita, permitiéndole, por ejemplo, implementar algunas de las funciones del Maker Pi RP2040 mientras prescinde de lo que no necesita. También puede diseñar su placa en el formato físico perfecto para su aplicación.

A Raspberry Pi Pico microcontroller is connected to a breadboard circuit alongside a JF-0530B solenoid.

Jeremy Cook | MOSFET para motor eléctrico y otros controles de carga. Como el solenoide actúa como un inductor, un diodo de protección habría sido una buena idea.

Los principios generales de control por PWM presentados aquí son efectivos y pueden utilizarse para una variedad de cargas; sin embargo, el hardware presentado se ensambló rápidamente como una demostración para este artículo. Para diseños finales, querrá considerar cuidadosamente cada situación particular, junto con especificaciones e información de la hoja de datos disponible en Arrow. Su dispositivo puede tener años de funcionamiento sin problemas con la configuración adecuada de control de motor DC por PWM.
 
Sin importar cómo se desarrolle su diseño, Arrow está aquí para suministrar los microcontroladores, MOSFETs, controladores de motores, y otros dispositivos necesarios para hacer realidad su controlador de velocidad de motor DC por PWM.

Etiquetas de artículo

Global
Artículo
Control de motores
Motores

Contenido relacionado