Caracterización de un sistema de levitación magnética

Me he estado golpeando la cabeza con este proyecto por un tiempo y necesito orientación. Es un dispositivo de levitación magnética que se utiliza en la clase de teoría de control. Nunca he tomado la clase, así que he estado tratando de aprenderla a través de cursos y libros en línea. Creo que entiendo algunos de los conceptos básicos, pero no lo suficiente como para resolver esto.

La forma en que se supone que funciona el sistema es que un electroimán pulsa su salida para mantener levitado un objeto (imán permanente en mi caso).

Breve descripción del sistema: Hay un electroimán que está siendo controlado por una señal PWM de un Arduino. El Arduino sabe, o se supone que sabe, qué ciclo de trabajo proporcionar en función de la corriente a través del electroimán y el sensor de efecto Hall.

A medida que el objeto se acerca al sensor de pasillo, el valor del sensor de pasillo aumenta. El problema aquí es que a medida que la corriente, que es controlada por el PWM, cambia a través del electroimán, el sensor de pasillo también reacciona a esto. Para deshacernos de este efecto, medimos la corriente a través del electroimán, la convertimos a un "valor hall" y la restamos para normalizar la lectura del sensor hall. En efecto, esto da una lectura pura de la distancia del objeto en relación con el sensor de pasillo.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí Esquema

Ahora mi problema es cómo caracterizar y ajustar el sistema.

Una de las técnicas para caracterizar el sistema es proporcionar un impulso o un paso y medir la respuesta del sistema. Intenté usar una respuesta escalonada, que esencialmente proporciona energía al electroimán. Ahora la pregunta es cómo mido la respuesta. Si le doy toda la potencia al electroimán, el imán permanente se dispara y se atasca. Tengo una situación de sobregiro. Si proporciono menos energía, realmente no pasa nada. Estoy atrapado en una situación binaria: el imán permanente no se mueve o se dispara y se atasca.

¿Cómo puedo caracterizar este sistema con esta limitación?

También intenté usar un controlador PID y hacer algunas suposiciones para ajustarlo, pero seguí teniendo los mismos problemas.

Gracias,

Si está buscando averiguar la respuesta al paso, ¿no es dispararse y quedarse atascado la respuesta al paso?
Este sistema no es lineal, querrá modelar el sistema desde los primeros principios, dibujar un punto de operación (altura nominal de la bola), obtener una aproximación lineal para ese punto de operación y luego producir un controlador que pueda controlar ese sistema lineal.
@immibis tiene razón, pero si se atasca, ¿no está recortando algo de información? Supongo que aquí es donde me estoy atascando.
@pgyvoorhees De hecho, hice el modelo de un sistema analógico y realicé la linealización sobre un punto. Mucho de esto se basa en escritos que he visto de problemas similares. Sin embargo, no he descubierto cómo tomar eso e implementarlo. Un problema es la transformación Z (digitalización) y también averiguar cómo impactan el muestreo y PWM.
@IGr ¿Cómo está su familiaridad con el modelado de espacio de estado (esa parte de la teoría de control que mencionó) y los vectores/valores propios? Necesitará TODOS los términos para PID aquí. Definitivamente se necesita D para producir una respuesta de estado estacionario en una posición de equilibrio. No veo ninguno de sus trabajos con lápiz y papel sobre las ecuaciones, el espacio de estado o el análisis cuantitativo específico de su situación aquí. Nada. Sólo un diagrama de bloques. Hay una enorme brecha vacante entre estos dos. Además, PID solo funcionará para un rango computable pero estrecho de puntos de partida. Demasiado lejos o demasiado cerca para comenzar será un problema para PID.
@john, tendré que escanearlo. Tengo una brecha de conocimiento entre hacer el análisis del sistema en papel y descubrir la implementación. Tengo la respuesta de bucle cerrado del sistema (plano s). Me atasqué un poco y pensé en intentar conectar algunos valores de PID. Necesito descubrir cómo dar cuenta de la digitalización y también cómo obtener valores reales para conectar las constantes. Para esto, pensé que necesitaría obtener la respuesta del sistema, pero no sé cómo medirla.

Respuestas (1)

Hay algunos problemas con su implementación.

  • Necesita un diodo flyback a través de esa bobina si no quiere un transistor de sobrecalentamiento e interferencia masiva. Su esquema actual al menos no muestra uno. Sugeriría usar un diodo schottky, ya que son rápidos y tienen una caída de voltaje baja.

ingrese la descripción de la imagen aquí

  • Si tiene problemas para estabilizar el imán, tenga en cuenta que es posible que no tenga nada que ver con las ganancias de su PID y sí con la tasa de actualización del lazo de control. Cuando hice mi levitación magnética, lo mínimo que pude hacer fue 200 Hz. Especialmente si está utilizando matemáticas de coma flotante para el controlador PID en un AVR, apuesto a que no puede obtener una levitación estable. Haga todo con matemáticas enteras de 8 bits y 16 bits en su lugar (conocido como punto fijo ), y podrá alcanzar fácilmente tiempos de ciclo por debajo de un milisegundo.

  • Tanto la entrada como la salida de su controlador PID no están relacionadas linealmente con lo que desea controlar (desea detectar la distancia y controlar la fuerza hacia arriba). En cambio, la salida del sensor de efecto Hall es proporcional al inverso multiplicativo de la distancia al cuadrado, y la fuerza ejercida sobre el imán por el electroimán no solo es proporcional a la corriente de la bobina, sino también inversamente proporcional a la distancia al cuadrado .
    A los controladores PID no les gusta esta no linealidad. Debe compensar las no linealidades en su sistema de control, para que el controlador opere en un espacio lineal. Para la entrada, calcule una distancia lineal desde la salida del sensor de efecto Hall y aliméntelo .al controlador en lugar del valor bruto. Para la salida, aplique menos corriente para una fuerza solicitada determinada cuando el imán esté más cerca, de modo que la atracción sea independiente de la distancia.


También hay una mejor manera de eliminar la contribución del electroimán de la salida del sensor de efecto Hall:

Muestree la salida del sensor de efecto Hall de forma sincrónica con su salida PWM, de modo que el flujo se mida solo cuando la corriente de la bobina haya disminuido a cero al final de cada período PWM. En cuanto al hardware es mucho más simple, el único inconveniente es que necesita programar a un nivel más bajo, comenzando la conversión de analógico a digital cada ciclo en una interrupción del temporizador. Sin embargo, no filtre en paso bajo la entrada ADC si hace esto.

Gracias por la info. Para su primer punto, en realidad tengo el diodo en mi circuito; debe haberse vuelto perezoso al copiar del papel a la computadora.
Para su segundo punto, estoy usando una interrupción para activar el cálculo de PID. Originalmente se configuró en 2,5 mS, luego lo aceleré a intervalos de aproximadamente 0,25 mS. Lo que no consideré es que es posible que mi cálculo de coma flotante no se complete en este momento. Intentaré hacer todo el punto fijo y me pondré en contacto contigo. No estoy seguro de entender completamente su tercer punto. Así que convierta la lectura del sensor Hall en una distancia, que debería ser lineal; y reduzca la corriente de salida (PWM) con la distancia.
@IGr Quise decir que debe escalar la corriente de salida en proporción a la distancia al cuadrado para compensar el comportamiento no lineal. Por ejemplo, podría necesitar 250 mA a 10 mm, 1 A a 20 mm, 2,25 A a 30 mm y 4 A a 40 mm para generar 0,1 N de fuerza.