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.
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,
Hay algunos problemas con su implementación.
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.
usuario253751
pgvoorhees
yo gr
yo gr
broma
yo gr