Controlador PID de FreeRTOS (stm32duino) [cerrado]

0

Actualmente estoy trabajando con un sistema integrado implementado en el microcontrolador Blue Pill SMT32F103C8T6 basado en FreeRTOS. Quiero controlar la velocidad y la posición del motor de CC con el controlador PID. Para el control de posición, no tengo ningún problema en absoluto. Pero, para el control de velocidad, estoy confundido sobre cómo obtengo la diferencia de tiempo para calcular la suma de error (para el controlador integral) y el delta de error (para el controlador derivado). sum_error + = current_error * delta_time; diff_error = (current_error - prev_error) / delta_time;

En la mayoría de las aplicaciones, podríamos usar time = millis () - prevMillis; . Pero en FreeRTOS, no usaremos milis, ya que esto perturbaría la programación de tareas del RTOS.

Entonces, ¿hay alguna otra manera de obtener la diferencia horaria? Notas: He intentado usar un valor constante de 0.01 (ms), pero no funciona (el controlador PID parece no funcionar).

    
pregunta Marchio Kevin

1 respuesta

1

La forma estándar de FreeRTOS de obtener "tiempo" es xTaskGetTickCount() . Puede usar configTICK_RATE_HZ para convertir los ticks a tiempo.

También puede usar uno de los temporizadores de hardware que probablemente tenga para la marca de tiempo.

    
respondido por el filo

Lea otras preguntas en las etiquetas