Tengo problemas para que mi controlador PID sea preciso en un rango de valores. Mi objetivo es ingresar un ciclo de trabajo para una onda PWM, que controla la velocidad de un rotor del ventilador. El rango de velocidades posibles debe ser de 300 RPM a 2700 RPM.
Actualmente, el controlador PID está logrando velocidades precisas cuando se solicitan de 800 a 1600 RPM, pero por debajo de esas velocidades, la salida es demasiado alta, y por encima de esas velocidades, la salida es demasiado baja. Creo que esto puede deberse a que la relación entre el ciclo de trabajo y la velocidad del rotor no es completamente lineal.
Aquí está nuestra ecuación PID actual: duty_cycle = [speedset + control + 735] / 4300 Speedset es la velocidad solicitada, el control es la variable de control PID y las constantes son de la ecuación que encontramos mayormente precisa para vincular el ciclo de trabajo con la velocidad de salida (sin embargo, es una ecuación lineal y no fue del todo precisa para extremadamente baja) y altos puntos de datos).
La variable de control es: control = 0.104 * error + 0.104 * previous_error + 0.13 * next_error
Esta es la primera vez que trabajo con PID, así que corríjame en cualquier cosa que esté haciendo mal. ¿Alguien tiene algún consejo sobre cómo podría mejorar la precisión del sistema a velocidades muy bajas y muy altas?