Control de la velocidad del motor cepillado con carga variable con un PWM

Estoy considerando conducir un controlador de motor de escobillas con un puente H y PWM. Me gustaría controlar aproximadamente la velocidad del motor independientemente de la carga del motor (imagine un pequeño robot subiendo/descendiendo colinas).

Como sé que si alimenta un motor con escobillas con una fuente de alimentación de voltaje constante, siempre girará aproximadamente a la misma velocidad, con la corriente consumida reflejando la carga (a la inversa, condúzcalo con una fuente de alimentación de corriente constante, y el la velocidad y el voltaje del motor variarán según la carga).

Sabiendo lo anterior, parece sencillo obtener retroalimentación a través de un A/D para leer el voltaje que se aplica al motor y hacer que el software ajuste el PWM, para mantener el voltaje en el motor establecido de acuerdo con la velocidad demandada.

Necesitaría un LC en el circuito, porque no podría leer el voltaje que tiene ruido PWM.

¿Tiene sentido lo anterior?

Tu pregunta no está redactada correctamente. Así que edítelo para que otros puedan buscarlo en el futuro. Lo que en realidad está tratando de decir es que la velocidad del motor es proporcional a Back EMF (BEMF). Desea una forma de medir el BEMF para que pueda ajustar el PWM para que el BEMF se mantenga constante, manteniendo así una velocidad constante del motor. Pero, ¿cómo hace eso cuando el BEMF es el voltaje medido a través de los terminales del motor, pero también está aplicando un voltaje de control a los terminales del motor al mismo tiempo? Si el motor estuviera en inercia, podría medir el BEMF, pero no está en inercia.
@DKNguyen Eso no es lo que está tratando de decir, pero tal vez es lo que debería estar preguntando...
@BruceAbbott Je, tal vez. De todos modos, lo que literalmente está diciendo está mal y no funciona. Lo que literalmente está diciendo es que quiere convertir su controlador de motor PWM en un regulador de voltaje para que el motor mantenga una velocidad constante bajo carga, excepto que no lo hará. Solo se asegurará de que su motor tenga un voltaje constante aplicado a medida que cambia el voltaje de la batería. Pero lo que dije presentado es lo más parecido a su idea real que funcionará.
Por cierto, si solo desea compensar las variaciones de voltaje de suministro, mida eso y ajuste la relación PWM para que se adapte.
Sí, estoy sugiriendo un regulador de voltaje descuidado. No, no estaba hablando de BEMF. Este es un proyecto KIS real.

Respuestas (3)

Tu idea es incorrecta y no funcionará. Pero hay una idea muy similar que funcionará.

" un motor cepillado con una fuente de alimentación de voltaje constante, siempre girará aproximadamente a la misma velocidad " No. Si lo carga mucho, se ralentizará mucho.

Su idea es básicamente monitorear el voltaje promedio en los terminales del motor y ajustar el PWM para que se aplique un voltaje promedio constante al motor para mantener una velocidad constante con par (esto también requeriría monitorear el voltaje de la batería también). Pero esto no mantendrá la velocidad constante con el par. Simplemente mantendrá una relación entre el voltaje de la batería y el voltaje promedio aplicado al motor a medida que el voltaje de la batería disminuye a medida que se agota. Además, si este es su objetivo, es más fácil medir el voltaje de la batería directamente y ajustar el PWM en consecuencia. No es necesario medir el voltaje desordenado en los terminales del motor. Pero la velocidad del motor seguirá cambiando a medida que cambie el par.


Lo que realmente desea es medir la fuerza contraelectromotriz del motor (BEMF) y ajustar el PWM para mantener constante la BEMF. El BEMF es el voltaje que genera un motor cuando está en marcha libre. En otras palabras, este es el voltaje que genera el motor cuando está retroalimentado y actúa como generador. Pero ahora la pregunta es, ¿cómo se mide el voltaje en el motor mientras está en marcha por inercia si lo está conduciendo con una forma de onda PWM para que no esté en marcha por inercia?

Bueno, en primer lugar, no desea estar muestreando continuamente el voltaje del terminal del motor de manera descontrolada mientras se produce PWM porque el voltaje del controlador (cuando los interruptores están cerrados y envían corriente a través del motor) se mezclan con el voltaje BEMF (cuando los interruptores están abiertos y la corriente no pasa por el motor)

Si desea muestrear el BEMF mientras aplica PWM al motor, debe realizar el muestreo cuando sepa que ambos interruptores laterales HI están abiertos para que el motor no esté accionado, pero desea que un interruptor lateral LO esté cerrado para que pueda midiendo con respecto a GND.

Su MCU puede permitir que su temporizador PWM active muestras ADC para que pueda muestrearlo directamente e ignorarlo cuando la corriente del motor no se fuerza a través del motor e ignorarlo en todos los demás momentos. Es posible que necesite un poco de filtrado RC, pero no algo como un LC.

Si no puede hacer esto, existen soluciones alternativas menos elegantes, como tener interrupciones en la unidad de señal PWM que hacen que el ADC tome una muestra. En el peor de los casos, podría alimentar directamente la señal PWM desde un pin de salida directamente a un pin de interrupción.

.. Ya que estoy usando hw pwm, podría deshabilitarlo, medir el voltaje, ajustar el pwm cuando vuelva a encender el pwm. Incluso si solo a una velocidad de 200 ms, eso probablemente me pondrá en el estadio de béisbol.
@TomCumming Eso sería muy crudo pero podría funcionar. Si tiene HW PWM, probablemente pueda producir interrupciones a partir de él, o incluso activar el ADC.

Como sé que si alimenta un motor con escobillas con una fuente de alimentación de voltaje constante, siempre girará aproximadamente a la misma velocidad,

Más o menos a la misma velocidad, pero no igual. De hecho, a medida que carga más el motor, su velocidad cae linealmente, hasta llegar a cero en la parada. Esto es causado por las resistencias internas del motor (escobillas, devanados del inducido, etc.) que reducen el voltaje de activación efectivo. Cualquier otra resistencia en serie en el circuito (p. ej., resistencia interna de la batería, dispositivo de conmutación del controlador y resistencias del diodo de retorno) tendrá un efecto similar.

Hay varias formas de compensar este efecto. Una es medir la fuerza contraelectromotriz durante el período de 'apagado' de PWM y controlarlo en un circuito de retroalimentación, como sugiere DKNguyen. Una variación de esto es usar un sensor óptico o de efecto Hall que mide la velocidad directamente.

Otra forma es medir la corriente y aumentar PWM proporcionalmente para producir una "resistencia negativa" que cancela las resistencias positivas en el circuito. La resistencia no se puede cancelar por completo porque si el total es negativo, la velocidad se volverá inestable, pero puede reducir en gran medida la variación de velocidad sin necesidad de una medición sofisticada de back-emf y un bucle PID completo. Este método se usa a menudo en reproductores de casetes y motores de tocadiscos.

¿Cómo selecciona su corriente de referencia y ciclo de trabajo para el método de resistencia negativa?
Al accionar un motor de CC con escobillas con una resistencia demasiado negativa, la velocidad del motor en realidad aumenta cuando se aplica una carga mecánica. Muy raro. Hubiera pensado que la estabilidad también sería un problema, pero parece que se porta bien. Es un tipo de método de retroalimentación frente a un método de retroalimentación. Funciona muy bien.
@glen_geek Depende de la carga. Normalmente se alcanzará un punto de operación estable donde la curva de rpm/torque de la carga ascendente se cruza con la curva de rpm/torque descendente del motor, pero con una resistencia negativa, la curva del motor también sube, por lo que es posible que las dos curvas apenas o nunca se crucen y entonces el punto de operación es inestable. Pero incluso si es 'estable' (es decir, no oscila ni se bloquea a toda velocidad), es más sensible a las variaciones de carga, lo contrario de lo que desea. Para empeorar las cosas, la resistencia del motor en sí no es muy estable.
Me estoy dando cuenta de que no hay nada más fácil que usar BEMF. Medir la corriente requeriría una resistencia de bajo valor en serie, todavía necesitaría el LC, etc.
Con BEMF, podría reducir el número de piezas, pero activar el adc cuando no está pwm'ing es un problema.
Tuve la idea de usar voltaje cuando investigaba motores BLDC que se especifican en RPM/V. También probé mi teoría usando una fuente de alimentación ajustable y ajustando la carga con mis dedos.
"Me estoy dando cuenta de que no hay nada más fácil que usar BEMF. Medir la corriente requeriría una resistencia de bajo valor en serie, todavía necesitaría el LC, etc.". Ambos tienen sus problemas . si desea limitar la corriente, entonces ya necesita esa derivación. Si utiliza un circuito de muestreo y retención externo (controlado directamente por el pulso PWM) para mantener el voltaje de la fuerza contraelectromotriz durante el tiempo de activación de PWM, el ADC puede leerlo de forma asíncrona. Esto elimina el PWM, pero la señal sigue siendo ruidosa debido a la ondulación de la salida del generador y al ruido del cepillo.

En resumen, mi idea original (usar una fuente de alimentación de voltaje constante cruda) no funcionará debido a la resistencia en el circuito y el motor.

El uso de BEMF en realidad podría reducir el recuento de piezas (un objetivo que originalmente debería haber establecido) y realmente funcionaría.

Gracias DKNguyen y Bruce Abbott por sus respuestas reflexivas y exhaustivas.