Control PID bidireccional

0

Actualmente soy un estudiante de ingeniería mecánica y estoy tratando de crear un dispositivo que equilibre dos pesos moviendo el punto de apoyo entre ellos. Todo parece un balancín con un motor y un giroscopio acoplados, principalmente porque eso es exactamente lo que es.

Elproblemaquetengoeshacerqueelmotormuevalaplacaparacolocarsucentrodemasaporencimadelmotorparaequilibrarlacarga.Elmotortieneunengranajegrandeenélqueengranaconunengranajelinealenlaparteinferiordeltablero.EstoyusandounmegaarduinoparacontrolaruncontroladordemotorSparkusandoPWM.Miprimeraideafuesimplementemedirelángulodesdeelgiro(entre-4y4grados)yactivarelmotorsiemprequenoleyera0grados(nivel).Estotiróeltablerofueradelmotor.MástardedecidíqueunbuclePIDseríaunamejorsolución.Queríateneralgocomoestevideomuestra. enlace El problema es que, por lo que sé, la PID solo funciona en una dirección. Un pedal de gasolina en un automóvil es un buen ejemplo porque el circuito PID solo puede dar más o menos gasolina y no puede pisar el pedal del freno. En mi caso, necesito dos bucles PID para controlar la posición izquierda y derecha. Actualmente estoy ejecutando los dos bucles lado a lado utilizando la biblioteca Arduino con el ángulo como entrada y la potencia del motor como salida. Tomo la diferencia entre las salidas y el valor positivo o negativo resultante va al motor. Realmente no creo que esta sea la forma correcta de hacerlo, ya que todavía no puedo ni siquiera equilibrar el tablero. ¿Qué necesito hacer para obtener el movimiento correcto?

    
pregunta E Sully

2 respuestas

2

Chris está en lo correcto y el PID generalmente opera para dar salidas positivas y negativas. Incluso el ejemplo de control de crucero de su automóvil está fuera de datos, los controles de crucero modernos controlados por radar pueden operar los frenos, así como el acelerador. Un ejemplo más general se llama un servo. Los modelos a pequeña escala se utilizan para modelos.

Aquí hay otro ejemplo de un Arduino que usa un bucle PID para equilibrar una viga de una manera diferente:

Ejemplo de balanceo de haz

    
respondido por el Kevin White
1

No hay nada sobre un bucle PID que lo restringe a valores positivos. La incapacidad de usar números negativos es una limitación del acelerador, no del controlador PID. Intenta con las matemáticas.

$$ u (t) = K_p e (t) + K_i \ int_0 ^ t e (\ tau) d \ tau + K_d {de (t) \ over dt} $$

  • \ $ e (t) \ $ es el error en el momento \ $ t \ $.
  • \ $ u (t) \ $ es el valor de control, la entrada al controlador del motor.
  • \ $ K_p \ $, \ $ K_i \ $ y \ $ K_d \ $ son los coeficientes, que ajusta para obtener la respuesta que desea del controlador PID.

Supongamos que definimos "0" para que sea el nivel, los valores positivos que se inclinan hacia la derecha y los valores negativos que se inclinan hacia la izquierda. El objetivo es aportar alguna información al controlador del motor \ $ u (t) \ $ que hace que la punta \ $ e (t) \ $ cero.

Un cero \ $ u (t) \ $ significa que el motor no está accionado en absoluto. Un \ $ u (t) \ $ positivo hace que el motor gire el fulcro hacia la derecha, mientras que un \ $ u (t) \ $ negativo hace lo contrario.

Para simplificar las cosas, digamos \ $ K_p = K_i = 1 \ $, y \ $ K_d = 0 \ $.

Lay se está inclinando hacia la izquierda. Eso significa que \ $ e (t) \ $ es negativo. \ $ K_p e (t) \ $ es entonces negativo, y \ $ K_i \ int e (t) dt \ $ está disminuyendo, y se volverá negativo si no lo está ya. Ignoraremos el término derivado porque es posible que no lo necesite.

Por lo tanto, \ $ u (t) \ $ es negativo o tiende a ser negativo, lo que desplazará el fulcro hacia la izquierda.

    
respondido por el Phil Frost

Lea otras preguntas en las etiquetas