Conceptos de control electrónico de velocidad

Soy un programador que nunca antes había trabajado con electrónica. Estoy aprendiendo los conceptos y espero construir un cuadricóptero, con el software de control completamente escrito por mí. El control motor parece ser la parte más importante.

¿Es cierto que el típico motor de corriente continua sin escobillas y el ESC (control electrónico de velocidad) solo pueden controlar aproximadamente la velocidad? Eso se debe a que el ESC parece tener solo una idea muy aproximada de qué tan rápido gira el motor. Esto todavía funciona para un controlador PID (Proportional Integral Derivative) porque recibe retroalimentación indirecta de, por ejemplo, un giroscopio si el motor va lo suficientemente rápido y puede decirle al ESC que lo haga girar "aún más rápido" o "aún más lento", y Eso es lo suficientemente bueno.

¿Es correcto mi entendimiento en el párrafo anterior?

Si es así, me pregunto si un servomotor que pueda informar sobre su velocidad de rotación actual podría ayudar a eliminar por completo el ESC. Siento que si el microcontrolador puede recibir una entrada sobre las velocidades del motor y enviar una salida solicitando una cierta velocidad, no necesitaría el ESC. Pero no estoy seguro de cómo funcionan los servomotores: ¿qué sucede inmediatamente después de que solicita 100 rpm cuando dice que estaban a 80 rpm?

Dado que no pueden ajustar inmediatamente, ¿debería el microcontrolador ajustar inmediatamente otros motores para tener en cuenta el hecho de que no todos los motores están a 100 rpm todavía? ¿Eso implica que el microcontrolador solo debe solicitar deltas muy pequeños de la velocidad medida actualmente, de modo que el período de desviación del estado deseado sea insignificante?

En el último modelo, al solicitar solo deltas muy pequeños de la velocidad medida actualmente, ¿parece que el algoritmo no sería realmente PID ya que no hay forma de controlar la aceleración? ¿Pero puede ser que solicitar que el servo pase de 80 rpm a 100 rpm haga que alcance las 81 rpm mucho más rápido que solicitar que pase de 80 rpm a 81 rpm?

Siento que sé tan poco que no puedo identificarlo con mayor precisión, pero espero que esto dé una idea de los conceptos que estoy luchando por absorber.

Para resumir, las preguntas son:

  • ¿Puede un motor servo (cc sin escobillas) permitir eliminar ESC?
  • ¿Un servomotor acepta entradas de control como "girar a 100 rpm"?
  • ¿Un servomotor ofrece una salida que dice "ahora estoy a 80 rpm"?
  • ¿Un servomotor a 80 rpm pasa a 81 rpm más rápido si se le pide que gire a 100 rpm en lugar de a 81 rpm?
  • las preguntas menos precisas implícitas en el texto anterior.
Si elimina un ESC y usa un microcontrolador, algunos dispositivos de potencia discretos impulsados ​​desde el microcontrolador para alimentar el motor, algún tipo de mecanismo de retroalimentación del motor para informar al microcontrolador sobre su velocidad, y luego escribe un software ingenioso para traer todo junto, básicamente te has construido un ESC :-)
@RJR Gracias por confirmar lo que aprendí desde que publiqué la pregunta. Específicamente por la respuesta más antigua a continuación, aprendí que la noción de servo es discutible, que todos los motores sin escobillas ofrecen una salida de posición/velocidad, que un ESC ejecuta un programa ingenioso, que también es lo que hace un controlador de motor.
@necromancer: un ESC es un controlador de motor. La mayoría de los controladores de motores RC no ofrecen mucho acceso a su estado interno, pero tienen ese estado.
@ConnorWolf sí, deberían decir eso en grandes letras parpadeantes en alguna parte. Estoy tentado a programar un controlador de motor como un primer proyecto más satisfactorio que programar un cuadricóptero sin interactuar con el motor de primera mano.
@necromancer: hacer un controlador de motor serio puede ser bastante desafiante, porque el diseño electrónico involucrado en cambiar correctamente la corriente necesaria para impulsar un motor (sin escobillas o de otro tipo) no es trivial. Podría ser mejor trabajar en la ingeniería inversa de un ESC preconstruido y simplemente escribir su propio firmware para él. De cualquier manera, espere explotar muchos dispositivos de energía en el camino.

Respuestas (2)

Primero, hay varios errores de definición en sus suposiciones:

  1. No, no hay forma de eliminar por completo un ESC, ya que la mayoría de lo que hace el ESC es tomar la pequeña señal del receptor y convertirla en una señal mucho más grande capaz de alimentar las bobinas del motor. La mayoría de los motores requieren mucha más potencia de la que puede suministrar el microcontrolador.
  2. Incluso los motores con escobillas en realidad requieren ESC. Un ESC es, en su forma más básica, un tipo de amplificador especializado (los modelos sin escobillas requieren más complejidad local). Tal vez eche un vistazo a la página de wikipedia sobre ESC para obtener más claridad.
  3. Los ESC sin escobillas realmente conocen la posición y la velocidad del rotor con un alto grado de precisión. El problema es que con los típicos ESC de nivel "hobby", no hay forma de acceder a esta información. Sin embargo, para conmutar correctamente un motor sin escobillas, el controlador debe saber "dónde" en la rotación se encuentra el rotor del motor, para poder determinar qué bobina energizar.
  4. Cuando dices "Servomotor", ¿a qué te refieres exactamente ? ¿Te refieres a los pequeños servos "Modelo RC" encapsulados? Esos no son servomotores , sino pequeños servosistemas autónomos . Consulte la definición de wikipedia de un servomotor para obtener más claridad.

Entonces, en resumen:

  • can a servo (brushless dc) motor allow doing away with ESC?
    En primer lugar, no existe un motor de "CC sin escobillas" . Los motores son fundamentalmente dispositivos de corriente alterna . Los motores de "CC" en realidad convierten la potencia de CC en CA internamente, a través de las escobillas. Un motor sin escobillas simplemente reemplaza los cepillos internos con electrónica de estado sólido.
  • does a servo motor accept control inputs such as "revolve at 100rpm"?
    No. Un servosistema puede aceptar tales entradas de control, pero lo haría con un motor, un ESC/controlador de motor de algún tipo, un mecanismo para leer la velocidad del motor y un microcontrolador/circuito para controlar la entrada al motor. conductor en respuesta a las lecturas del tacómetro/interfaz de medición de velocidad.
  • does a servo motor offer an output saying "i am at 80rpm now"?
    Una vez más, no, pero un servosistema podría ofrecer esa interfaz.
  • does a servo motor at 80rpm go to 81rpm faster if it is requested to revolve at 100rpm versus at 81rpm?
    Esto depende un poco de la configuración del servosistema, pero la mayoría de las veces, probablemente . Un sistema de bucle cerrado adecuado tiene que tener en cuenta el tiempo que tardará en dejar de cambiar la velocidad, que está dentro del tiempo para la velocidad de 80-81 rpm y no dentro del tiempo para el cambio de velocidad de 80-100 rpm.
    Piense en ello como un movimiento físico. Si corres 10 pies y te detienes, ¿te tomaría más tiempo que correr hasta los 10 pies y continuar a toda velocidad? Sí, porque debe comenzar a detenerse antes de llegar al destino, ya que la aceleración y la desaceleración infinitas son físicamente imposibles.
  • the less precise questions implicit in the text above.
    Por favor aclara

Siendo realistas, existen numerosos factores limitantes en la precisión de un sistema de control (como un lazo de control basado en PID). Incluso si tiene retroalimentación directa de la velocidad de rotación de un motor, la capacidad del lazo de control para corregir errores en la velocidad está limitada por el par disponible, la inercia del rotor, el ancho de banda de la electrónica de control y la precisión de la medición. interfaz.

Lectura adicional: http://en.wikipedia.org/wiki/Servomechanism

+1 gracias por tu excelente respuesta. Lo estoy digiriendo lentamente y leyendo los enlaces que has dado.
@necromancer: uno de los principales problemas aquí es que la comunidad de modelos controlados por radio ha tomado la terminología existente para los sistemas de control y los ha contaminado al usarlos en contextos incorrectos/diferentes, lo que genera mucha confusión.

¿Es cierto que el típico motor de corriente continua sin escobillas y el ESC (control electrónico de velocidad) solo pueden controlar aproximadamente la velocidad?

No. Los motores de CC sin escobillas (BLDC) son un tipo de motor síncrono (más específicamente, son motores síncronos de imanes permanentes (PMSM)) y los motores síncronos requieren que el campo magnético del estator y el campo magnético del rotor estén "sincronizados". ." Prácticamente, lo que esto significa es que la corriente que fluye a través de las bobinas dependerá de la posición en la que se encuentre el rotor. La siguiente imagen muestra las formas de onda de corriente para las fases A, B y C para un motor BLDC. Notará que solo hay 2 fases activas en un momento dado. Cuando cualquier fase en particular se enciende o se apaga, se activa por la posición del rotor. Cuanto mejor sea la detección de la posición del rotor, mejor funcionará su motor (más eficiente, más par, etc.).

Formas de onda de corriente BLDC

En los motores de hobby, es bastante común usar la detección de posición del rotor sin sensores. Esto generalmente funciona mirando la fase que no está encendida y usando la forma de onda en esa fase para determinar la posición del rotor. Otros motores tienen sensores de efecto Hall o codificadores que determinan la posición del rotor. La detección de posición sin sensores a menudo es lo suficientemente buena cuando todo lo que intenta hacer es controlar la velocidad. Si necesita tener control de posición (a menudo llamado "servo"), entonces debe considerar el uso de un codificador.

Si es así, me pregunto si un servomotor que pueda informar sobre su velocidad de rotación actual podría ayudar a eliminar por completo el ESC.

Tenga en cuenta que la función más básica de un ESC o control sin escobillas es proporcionar corriente a las bobinas en la secuencia correcta en el momento correcto. En otras palabras, la función más básica es conmutar el motor. Este es el mínimo que se requiere para que un motor BLDC funcione correctamente. Entonces, no, no puede eliminar por completo un ESC.

... ¿qué sucede inmediatamente después de solicitar 100 rpm cuando dicen que estaban a 80 rpm?

Eso depende. Un sistema de circuito abierto muy simple podría calibrarse de modo que 12 V = X RPM, 6 V = X/2 RPM, etc. En este caso, ordenar 100 RPM equivale a aumentar el voltaje a algún voltaje Y que ya se conoce. darte 100 RPM. Un sistema de circuito cerrado podría usar la posición del rotor para observar el cambio en la posición del rotor a lo largo del tiempo para determinar la velocidad y luego ajustar el voltaje hasta que la nueva velocidad sea de 100 RPM. De cualquier manera, el voltaje tendrá que aumentar.

¿Un servomotor a 80 rpm pasa a 81 rpm más rápido si se le pide que gire a 100 rpm en lugar de a 81 rpm?

Esto es imposible de decir a menos que tenga un control específico en mente. Para una carga dada, lo que determina qué tan rápido acelera el eje es el par. Cuanto más torque pueda proporcionar su motor, más rápido acelerará. En los motores BLDC, el par es proporcional a la corriente. Entonces, asumiendo la misma carga y asumiendo que proporciona la misma cantidad de corriente, deberían alcanzar 81 RPM al mismo tiempo.

¿Un servomotor acepta entradas de control como "girar a 100 rpm"?

Como mencioné anteriormente, "servomotor" a menudo se refiere a motores/controles que se utilizan para el control de posición. Es más probable que el comando "girar a 100 RPM" se vea en un sistema de motor/control que se usa para controlar la velocidad. Muchos sistemas de servomotor/control pueden controlar la velocidad, pero no todos están configurados para hacerlo.

Diré una última cosa sobre la terminología por algo que mencionó Connor Wolf. No existe un estándar industrial para la terminología de los motores sin escobillas. He visto nada menos que los siguientes acrónimos/términos para motores sin escobillas: BLDC (CC sin escobillas), BLAC (CA sin escobillas), PMSM (motor síncrono de imán permanente o servomotor de imán permanente), BPM (imán permanente sin escobillas), SMPMSM ( motor síncrono de imán permanente de montaje en superficie), IPM (motor de imán permanente interior), etc. BLDC, BLAC y PMSM son los más comunes, según mi experiencia.

BLDC se refiere con mayor frecuencia a motores que están diseñados para tener una fuerza contraelectromotriz trapezoidal y están destinados a funcionar con un control de 6 pasos (trapezoidal) (este es el tipo de control mencionado en mi respuesta anterior). BLAC generalmente se refiere a motores que están diseñados para tener una fuerza contraelectromotriz sinusoidal y están destinados a funcionar con un control sinusoidal (es decir, el control proporciona corriente sinusoidal al motor en lugar de las formas de onda en la imagen de arriba). Los motores "servo" suelen ser motores BLAC. En mi opinión, hay poca diferencia entre un motor BLDC y BLAC y deberían considerarse el mismo tipo de motor. Los motores con back-emf trapezoidal pueden funcionar con controles sinusoidales y viceversa. Todo depende de lo que estés tratando de hacer con ellos. Mi terminología preferida para cubrir estos dos tipos de motores es PMSM (motor síncrono de imanes permanentes). Pero, de nuevo, aquí no hay un estándar de la industria, así que mi preferencia es solo eso, una preferencia.