¿Controlando un motor DC muy pequeño con PWM?

8

Tengo un motor de CC muy pequeño (de un Walkman), me gustaría controlar la velocidad desde un microcontrolador. Para eso me gustaría conectar un MOSFET en serie y aplicar una señal PWM a su puerta para cambiar la velocidad del motor.

He medido L & R del motor = 4.7mH, 11.5Ohm (Tao 0.41msec).

Al realizar algunos experimentos con el motor usando una fuente de alimentación de banco, puedo ver que funciona bien desde un voltaje de 0.2V hasta alrededor de 0.4V, ese es todo el rango que necesito.

La fuente de alimentación que tengo para esto está configurada en 1.8V (utilizada para la parte digital del circuito), por lo que esto hace que el uso de MOSFET estándar sea un poco difícil porque no puedo suministrar el voltaje requerido para la saturación de la puerta. Compré algunos MOSFET de canal P como este .

Entonces, aunque hubiera pensado que esta configuración funcionaría (Vcc -> motor -> FET -> GND), parece que no puedo obtener una buena resolución sobre el control y no obtengo tanto torque del motor como solía para obtener cuando se ejecuta desde una fuente de alimentación de CC.

No estoy seguro de qué frecuencia. Debería estar usando y no estoy seguro de qué otros parámetros deben verificarse para que esto funcione según lo previsto. Cualquier ayuda en esto será apreciada.

* ACTUALIZACIÓN * Siguiendo la respuesta de Olin, he construido el circuito que sugirió. He usado un transistor 2N3904, resistencia de 180 ohmios en paralelo con una tapa de 4.7nF. Se adjunta el voltaje del colector cuando se ejecuta desde el código PWM 100 (de 256). Vcc es 1.8V.

ingrese la descripción de la imagen aquí

usuario34920
fuente
1
¿por qué no usar un BJT en su lugar? Es un motor pequeño y obtendrá fácilmente una señal de 0.6V para encenderlo.
Jim Dearden
@JImDearden Probé algunos 2N5088 que tenía alrededor, pero la caída de voltaje a través del transistor fue tan grande que casi no se aplicó voltaje al motor, por lo que simplemente zumbó y no se movió.
user34920
1
Pruebe con un transistor de conmutación como el 2N3904 con una resistencia base de 1k. También necesitará un diodo de retorno en el motor con tanta inductancia y sobretensión. 1kHz debería estar bien para el PWM.
Jon

Respuestas:

8

La solución más simple sería usar un interruptor NPN del lado bajo:

Usted dice que la resistencia de CC del motor es de 11.5 Ω, por lo que la corriente máxima que puede consumir es de 1.8 V / 11.5 Ω = 160 mA. En realidad, el transistor consumirá unos 100 mV, reduciendo la corriente máxima posible, por lo que este es un máximo seguro para diseñar. Figura que el transistor es bueno para una ganancia de 50 mínimo, por lo que necesitamos al menos 160 mA / 50 = 3.2 mA de corriente base. 5 mA es un buen objetivo para asegurarse de que el transistor esté sólidamente saturado cuando está encendido. Calcule que la caída BE será de 700 mV, de modo que deje 1.1 V a través de la resistencia cuando esté encendida. 1.1 V / 5 mA = 220 Ω.

C1 está allí para acelerar el encendido y apagado. (220 Ω) (4.7 nF) = 1 µs, que es la constante de tiempo C1-R1.

La frecuencia PWM debe ser lo suficientemente rápida como para que la corriente a través del motor cambie poco en cada fase de encendido y apagado. La ondulación causada por el PWM es un voltaje de CA superpuesto al voltaje de CC promedio. Solo el voltaje de CC va a mover el motor. El componente de CA no produce par, solo calor, por lo que desea mantenerlo bajo en relación con la CC. Por lo general, los motores funcionan un poco por encima del límite de audición humana, que también suele ser lo suficientemente rápido como para mantener pequeño el componente de CA. A 25 kHz, por ejemplo, el período PWM es de 40 µs, lo que debería brindarle una resolución suficiente de cualquier periférico PWM razonable en un microcontrolador.

Se agregó en respuesta al rastreo del alcance del recopilador

La forma básica de la forma de onda se ve bien, por lo que parece que el transistor está cambiando correctamente y el voltaje se aplica a través del motor correctamente.

Los picos en el desvío son preocupantes. Posiblemente podrían ser artefactos de alcance, pero si su rastreo de alcance es preciso, entonces el diodo no funciona o no está conectado correctamente. Los picos no deben estar más de un voltio por encima del suministro.

D1 no solo evita que el transistor se fríe, sino que conserva gran parte de la corriente del motor durante el tiempo de apagado. El primero es necesario, y el segundo aumenta la eficiencia.

Agregado 2

Mirando más de cerca el alcance de su alcance, veo que el voltaje del colector cuando el motor está apagado es de 2.48 V. Usted dice que el suministro es de 1.8 V, por lo que el voltaje de apagado es de 680 mV por encima del suministro. Eso significa que no construiste el circuito como dije. Obviamente usó un diodo de silicio común, probablemente uno lento como un 1N400x. El tiempo de encendido lento del diodo explica el pico de voltaje y reduce un poco los niveles generales del variador en un ciclo de trabajo PWM específico. También causará disparos durante un tiempo cuando el transistor se enciende nuevamente, ya que el diodo todavía está conduciendo. Un diodo Schottky tendrá una caída hacia adelante más baja y una recuperación inversa instantánea instantánea en el contexto de este circuito.

El sistema aún debería funcionar en general, pero intente con un diodo Schottky como especifiqué.

Olin Lathrop
fuente
De hecho, he ensamblado este circuito en este momento. PWM freq. es de aproximadamente 31 kHz. Utilicé un transistor 2N3904 con una resistencia de 180 ohmios a la base y un límite de aceleración de 4.7nF. Tengo una resolución PWM de 8 bits de mi MCU. Alrededor del código 100 (de 256) puedo ver que el motor comienza a girar. ¿Alguna idea sobre cómo aumentar la resolución? ¿Quizás agregar algo de compensación de CC a la base? También me gustaría señalar que los motores funcionan con el código 100, sin embargo, funciona un poco más rápido que el mínimo. velocidad que requiero. No puedo bajar el código PWM ya que se detendrá.
user34920
gracias Olin por la buena respuesta. ¿Podría elaborar sobre la elección de C1? Usted habla de la constante de tiempo, entiendo que debería ser aproximadamente 1/10 del período de conmutación, pero esperaría que el tamaño C1 solo sea importante para el tiempo de encendido / apagado, ya que proporciona una carga "instantánea".
Vladimir Cravero
1
@vlad: descargar carga adicional en la base al encender y absorber algunos de los transportistas gratuitos al apagar son eventos a corto plazo. Probablemente duran solo unas 100 ns después de cada borde. Desea que la constante de tiempo sea un poco más larga que eso, pero también lo suficientemente corta como para que el límite se "restablezca" antes del siguiente borde. 1 nos pareció un buen compromiso, pero pueden importar muchos factores que son difíciles de predecir. Comenzaría con los valores mostrados, luego miraría las formas de onda y las ajustaría si fuera necesario.
Olin Lathrop
@usuario: Echa un vistazo a la forma de onda del colector. Tal vez las cosas no están sucediendo según lo previsto. ¿Qué hace el motor con un voltaje de CC variable? ¿Hay un voltaje donde comienza pero luego no va demasiado rápido una vez que va?
Olin Lathrop
@OlinLathrop Agregué una foto de la forma de onda del colector (esta medición se toma a través del CE del transistor). Cuando se usa un suministro de CC, el motor comienza a girar a 0.2V y esa velocidad es la que me gustaría como mínimo (aproximadamente 50-60 RPM).
user34920
0

Supongamos que tiene experiencia básica con microcontroladores y puede construir un circuito.

La forma más directa de conducir el motor es utilizando el puente H, la resistencia de detección de corriente y PWM. Básicamente, el puente H permitirá usar 3.3V o 5V, lo que sea más conveniente.

De hecho, dependiendo de la aplicación, incluso puede omitir el control de corriente, probablemente no causará ningún daño, incluso si el motor se detiene.

Por cierto, ¿necesitas control de velocidad o posición?

Gregory Kornblum
fuente