condición de salida del bucle de control PID

3

Estoy ayudando a programar un robot LEGO FLL (dos ruedas motorizadas y un bolígrafo en la parte posterior son los contactos con el suelo), experimentando con un control PID para hacer que gire. Puede parecer excesivo, pero todo lo demás, incluido un control proporcional puro no puede explicar bien los motores y sensores "no tan precisos".

Dicho esto, ¿cuál es una buena condición de salida para un algoritmo PID? Por supuesto, esperar un poco hasta que la oscilación se vuelva imperceptible es bueno, pero me pregunto qué tiene que decir la literatura, ya que en mi aplicación necesito el control para el programa principal lo antes posible para hacer otras cosas.

Mis conjeturas:

  • afine el número de iteraciones con los termos derivados y proporcionales arbitrariamente cerca del punto de ajuste
  • un bucle de control paralelo que "tira del freno" después de que se haya alcanzado el punto de ajuste un cierto número de veces (y también afínelo)

Si este no es el lugar adecuado para hacer esta pregunta, siéntete libre de moverla a donde quieras.

    

1 respuesta

2

Un algoritmo PID corrige una señal de control basándose en un error, y su objetivo es reducir el error a cero.

Al 'girar', entiendo que desea que su robot se mueva a una posición requerida oa una cierta distancia. En ese caso, el error es la distancia que el robot aún tiene que cubrir, y la señal de control podría ser el ciclo de trabajo PWM que alimenta las ruedas motorizadas.

Considera este pseudo-código:

requiredPosition = obtainRequiredPosition();
error = requiredPosition - currentPosition;
while(error <> 0) {
    correction = PID(error);
    averagePower += correction;
    applyPower(averagePower);

    // Wait a little: either with a waiting loop
    // or, better, implement the whole thing in iterrupts.
    wait();

    currentPosition = captureCurrentPosition();
    error = requiredPosition - position;
};

No creo que necesites la parte integral del PID. No necesita que su robot pase la misma cantidad de tiempo con errores positivos y negativos.

Como ejemplo, necesitaría la parte integral para controlar el timón de un bote: cuando el bote se está dirigiendo en una dirección específica, desea compensar el tiempo que va demasiado a la izquierda con el mismo tiempo que va demasiado a la derecha.

    
respondido por el jmgonet

Lea otras preguntas en las etiquetas