Control de motor PMDC de circuito cerrado

0

Me gustaría lograr un RPM estático preciso (+/-. 1% de error) en un pequeño motor de CC con escobilla de imán permanente de bajo costo (por ejemplo, Mabuchi FA-130 ). El conjunto del motor / engranaje girará en diferentes orientaciones en relación con la gravedad, pero de lo contrario no habrá fuerzas variables en el eje / salida. Desde la experimentación con una fuente de alimentación de voltaje constante aplicada a un motor similar, mido un error de +/- 1% (7750 +/- 80 RPM) en condiciones estáticas. Por lo tanto, creo que será necesario un control de bucle cerrado para lograr la precisión deseada.

Para implementar el control de bucle cerrado a bajo costo, planeaba hacer un codificador óptico incremental a través de un disco ranurado y un "fotointerruptor" IR (por ejemplo, OPB610 ). Supongamos que el disco tiene 10 ranuras y está montado en el eje del motor girando a 6000 RPM, por lo que 1k pulsos / seg. También suponga que estoy usando un moderno microcontrolador de 16+ MHz que controla el motor a través de PWM.

1) ¿Qué especificaciones / ecuaciones debo considerar al determinar cuál será la precisión de control del motor resultante? ¿Cómo determinar el retraso en la actualización de la velocidad del motor, así como la resolución del control de velocidad?

2) ¿Existe una manera "mejor" (y aún de bajo costo) para lograr una retroalimentación de circuito cerrado que el método del codificador óptico descrito (por ejemplo, el codificador magnético)?

    
pregunta abc

2 respuestas

1

He usado motores pequeños Mabuchi de esa manera y he logrado resultados cercanos a los que necesitas usando un sensor de velocidad que es crudo en comparación con tu rueda ranurada.

Comience la prueba controlando el motor con un tren PWM que puede ajustar manualmente hacia arriba y hacia abajo. Registre el ciclo de trabajo de PWM que le acerca a 6000 RPM, este será un nivel de potencia inicial. Luego, suba el nivel de potencia PWM en un bit, y en un bit, y registre el cambio de RPM resultante. Según los valores que registre, debería poder predecir cuánta potencia agregar o eliminar de su nivel de potencia central cada 1/10 de rotación cuando la velocidad sea demasiado alta o demasiado baja.

A esa velocidad será necesario cronometrar el intervalo entre las ranuras con un temporizador de hardware disponible en la mayoría de los microcontroladores. No podrá medir el error de velocidad de 1/10 de rotación con la suficiente precisión con el software. Un error de 1 microsegundo en la medición reducirá su presupuesto de errores.

Como se menciona en los comentarios, si tiene una carga muy dinámica, es posible que desee mejorar el sistema básico de circuito cerrado para adaptarse a las cargas cambiantes. En mi proyecto descubrí que el nivel de potencia central no era el mismo para todos los motores. Así que incorporé una función de integración de tal manera que si la suma de los errores en el tiempo no fuera 0, entonces ajustaría el nivel de mi potencia central para intentar equilibrar los errores + y -

    
respondido por el Entrepreneur
0

1) Si desea obtener un RPM de +/-. 1% de precisión, debe verificar que el número de pulsos observados durante un período determinado no se desvíe por el número esperado de pulsos en más de +/-. 1%. El número mínimo de pulsos esperados para hacer cumplir esto es 1 / .001 = 1000 pulsos, lo que requeriría que los pulsos observados también sean exactamente 1000 (p. Ej., Si mide 1001 pulsos, ¿cómo sabría si estaba apagado en .1% o .15%?).

Si está recibiendo 1k pulsos / seg, entonces requerirá 1 segundo para recopilar suficientes pulsos para decidir si necesita aplicar retroalimentación positiva / negativa a través de PWM. Sin embargo, esto solo garantizará un 'promedio' de 100Hz durante la duración del muestreo y mostrará la especificación adicional de 'jitter de frecuencia' que no se mencionó en la pregunta original. No se puede garantizar una frecuencia instantánea, ya que esto requeriría calcular la pendiente de dos muestras cercanas infinitesimalmente. Por lo tanto, la precisión de '+/-. 1%' de una RPM / frecuencia debe ir acompañada por la duración promedio. En este caso, impongamos la duración del promedio de frecuencia como diez revoluciones de eje, o 10 * 60s / 6000 RPM = 100 ms. Esto es 10 veces menos que la duración de muestreo de 1s determinada anteriormente, por lo que necesitaría aumentar las ranuras / revolución y / o aumentar la velocidad del eje del codificador óptico (por ejemplo, a través de la aceleración del engranaje) de manera adecuada.

Necesitaré actualizar esta respuesta con las consideraciones del lado de control (resolución PWM, jitter del reloj), así como con el método de ajuste (es decir, cómo reaccionar cuando el conteo / período observado no es el esperado).

    
respondido por el abc

Lea otras preguntas en las etiquetas