Paso 6: Las sumas duras!
¿Cómo equilibra? Retroalimentación negativa se utiliza mediante la creación de un error entre el ángulo de inclinación deseado y el valor medido desde el giro. Si los dos se diferencian un voltaje del control se aplica a ambos motores simultáneamente para conducir el carro hacia adelante o hacia atrás para corregir este ángulo. Este enfoque se conoce como control proporcional y sufre por el hecho de que esto puede ser un gran error que se crea. La teoría nos dice al aumentar la cantidad de ganancia a la ruta de error que reduce este error. Lamentablemente para hacer pequeño el error suficiente requiere una ganancia grande que el circuito se vuelve inestable y se cae el carro. Podemos mejorar la situación mediante la adición de un segundo término que es proporcional al diferencial del tiempo de señal de error un segundo aumento término. Esto se conoce como control de diferencial y cuando agrega que el término proporcional se conoce como control PD o proporcional más derivado. El término D estabiliza el sistema y reduce la inestabilidad. Sería la respuesta, salvo que el error no siempre va a cero y hay una diferencia finita la izquierda. El carro se flop hacia atrás y adelante y no quedar recta. Podemos añadir un tercer término que es un integrador que quita el error. Lamentablemente este tercer supuesto que del término si en una cantidad demasiado grande conduce a inestabilidad adicional. Por lo tanto, se debe cumplir un compromiso entre los tres términos en lo que se conoce como un controlador PID. Sintonización de controladores PID es un poco un arte y hay reglas de sintonización, pero no son tan buenas cuando se tiene un sistema intrínsecamente inestable como lo hacemos. Sin embargo, funciona el PID y otros instructibles lo han utilizado.
El enfoque que utilizamos aquí es el enfoque que muchos utilizan para el Segway y no es el control PID. PID a menudo se conoce como teoría de control clásica mientras que lo que utilizamos aquí se conocen como teoría de Control moderna. De hecho, el enfoque clásico no es eso viejo y el enfoque moderno no que moderno! El enfoque moderno que usamos se conoce como retroalimentación de estado ubicación de los polos. En él nos proporciones retroalimentación de posición angular, velocidad y aceleración. Los indestructibles Segway sólo usar posición y retroalimentación de la velocidad a lo mejor de mi conocimiento. He añadido un tercer Estado de aceleración y un cuarto estado que es la acción de integración o integral. Este tipo de cosas está bien establecido en libros de texto de hecho pero pocas veces visto en las manifestaciones. Normalmente, se requiere un modelo matemático, es decir, las ecuaciones diferenciales que describen el sistema dinámico completo. Aquí utilizo un simple acercamiento y sintonía como un PID. Existe una similitud entre el feedback de control y estado de PD que sólo utiliza realimentación de posición y velocidad. La retroalimentación de velocidad se conoce como información sobre el ritmo y se calcula solo un término diferencial que se lee desde un sensor en lugar de ser explícitamente. La diferencia aquí es que la diferenciación es en la ruta de realimentación en lugar de la ruta hacia adelante como es el caso de PID. Esto da un poco de amortiguación más a expensas de un sistema un poco más lento - pero fácil puede ser compensado mediante el aumento de la ganancia global. Así que aquí medimos error angular directamente con el giro y la velocidad angular del acelerómetro.
El tercer Estado es aceleración que calculamos (hay mejores formas pero por ahora uso este método) directamente por diferenciar la velocidad. Mediante el control de aceleración podemos controlar la corriente de los motores y mejorar el rechazamiento del disturbio. Si usted no puede medir aceleración con un transductor (que es el caso habitual) entonces debe crearla por diferenciación o por usando un filtro de Estado observador o Kalman.
Por lo que la señal de control es
u (k) =-K * [Kp * y (k) + Kd * y (k) _dot + Ka * y (k) _double_dot]
donde K es la ganancia global ajustado desde el potenciómetro y Kp, Kd y Ka son la ganancia proporcional, aceleración y derivado ganancia ganan respectivamente. Aquí y(k) representa la lectura actual del sensor giroscópico (ángulo), y (k) _dot es la lectura actual de velocidad angular y _double_dot de y (k) es la lectura actual de aceleración en tiempo instantáneo k. En el diagrama es ganancia integral Ki.
Distinguir digitalmente podemos utilizar un simple método de Euler. Para un muestreo intervalo dT segundos (aquí es dT = 0.01 para una frecuencia de muestreo de 100 Hz) podemos diferenciar omega velocidad para darle aceleración aceleración como
calcular la velocidad angular aceleración angular
omega_old = omega; almacenar el último valor de la aceleración
Omega =.. .leer velocidad de acelerómetro aquí
distinguir
Accel =(omega-omega_old) /dT;
Generalmente dejamos despegue hacia fuera (es decir sistema dT = 1) como se convierte en un término de ganancia que podemos ajustar por separado.
Este es un buen diferenciador crudo y de hecho cualquier tipo de diferenciador puro es una mala idea para un lazo de control ya que amplifica el ruido de alta frecuencia y excita la resonancia estructural. Por lo tanto nos paso bajo filtro de la salida diferenciada. Usamos un filtro de paso bajo de orden primera - tomaría un tiempo para explicar todo de la teoría aquí. Este filtro no se muestra en el diagrama anterior. (sólo el caso ideal).
Integrar utilizamos una simple integración de Euler. por ejemplo, para integrar un error
Integración de error
punto de ajuste = 0 para cero grados vertical
error = setpoint-output_value;
y_out_past = y_out; / tienda/más allá del valor de salida del integrador
a y = y_out_past + dT * error;
sí se puede utilizar la notación de tipo += y en código, pero oculta lo que está sucediendo y la comprensión
donde y_out es la salida integrada. generalmente deja fuera dT y escala más adelante, es decir, dT = 1. Usted podría en principio utilizar una suma para hacer integración, pero el método anterior es mejor - método recursivo muestra por muestra y sólo requiere almacenaje mínimo. Suma requiere almacenar un número de valores pasados. También puede realizar la integración a través de z-transforma y sacar una versión un poco más precisa llamada un integrador Trapezoidal. No hay necesidad de esa complicación aquí, aunque uso z-transforma para nuestro simple-filtro de paso bajo.
La frecuencia de muestreo: utilicé el código anterior de Segway para establecer la frecuencia de muestreo de 100Hz y no podría conseguirlo para ir más rápido. He comprobado con un osciloscopio que se trataba de la verdadera frecuencia de muestreo poniendo una bandera lógica arriba y abajo - verdadera y falsa propia ejecución del bucle. Enviar esto a una salida digital y tiene una forma cuadrada. Medido el período medio y estaba en 0.01secs = dT. El diagrama de bloques se muestra con la acción integral y completa retroalimentación de estado.
También usé los filtros complementarios llamados especiales para combinar las lecturas del acelerómetro y giroscopio. Esto es porque el acelerómetro es bueno a bajas frecuencias mientras que el giro es bueno a altas frecuencias mientras que lo contrario es el caso de bajo rendimiento. Esto intenta reducir el efecto de deriva de giro. Otro enfoque es utilizar un filtro de Kalman, pero esto no se muestra aquí. Detalles del método de filtro complementario se muestra en el siguiente enlace.
http://www.chrismarion.net/index.php?option=com_co...
La idea principal se muestra en el diagrama (se muestra a continuación el diagrama de estado-feedback) tomado de este enlace.