Convertir los parámetros PID al formato Q15

2

He calculado la función de transferencia de mi sistema para aplicarle un PID. Con MATLAB y la herramienta PID Tuner obtuve los parámetros Kp , Ki y Kd de mi controlador PID. Por ejemplo, en mi caso son 0.175, 371.22 y 0 respectivamente.

Ahora, necesito usar estos valores en mi DSP pero el algoritmo PID usa el formato fraccionario Q15 para todo. Sé cómo debo escalar los valores de entrada y salida de mi PID:

  • Si el valor de entrada máximo es x , divídalo por x si va de -x a x , o haga (x/2)-1 si va de 0 a x y luego convertir a Q15 fraccional

  • Para el valor de salida, solo escálelo a sus necesidades

¿Pero cómo convierto mis parámetros PID Kp , Ki y Kd a Q15 correctamente? Si les aplico algún factor como lo hago para los valores de entrada y salida, en realidad estoy cambiando la respuesta del bucle, ¿cómo se hace esto? Creo que esto debería ser algo bastante común cuando se diseñan PID digitales.

    
pregunta Andres

2 respuestas

1

En primer lugar, los valores máximos representables del formato Q15 son -1 y 0.9999. Por lo que podría tener un problema con su Ki.

La solución más común para convertir un doble a un Q15 es multiplicarlo por 2 ^ 15.

Normalmente uso esta macro:

#define Q15(x)(s16) ((x<0.0) ? (s16)(32768*(x) - 0.5):(s16)(32768*(x) + 0.5))

Pero debido a que su Ki no funciona con el formato Q15, debe usar otro formato Q. por ejemplo: Q6 o Q7.

Para obtener más información, puede consultar wikipedia .

    
respondido por el user118405
0

Puede usar la función matlab interna: fi (v) para construir un objeto numérico de punto fijo: enlace

    
respondido por el Don

Lea otras preguntas en las etiquetas