Autor Tema: Dudas PID  (Leído 13103 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dudas PID
« Respuesta #30 en: 02 de Enero de 2010, 17:29:54 »
Citar
Realizar un código puede ser sencillo, pero diseñar un PID debe hacerse de forma correcta para obtener un sistema de control adecuado  Confused No es simplemente una resta  lol Hay que determinar de forma correcta las constantes Kp, Kd y Ki, eso es lo "complicado"

Esta bien hay tantos caminos para llegar a roma! muchisimos procesos dicho de otra forma un alto porcentaje permite hacer ciertos ajustes a travez de metodos de entonacion (hallar los valores correctos de Kp Ki Kd) ejemplo el metodo de  Ziegler-Nichols o mas atevido aun un simple metodo de tanteo donde en resumen se van disminuyendo los valores hasta obterner la estabilidad.

Jejeje! Pero debe haber uno que sea mas rápido, que se necesite menos gasto de energía, ect. y a prueba y error (Sin haber hecho un pequeño estudio del sistema anteriormente) veo difícil que logre encontrar el mejor debido a la subjetividad de la propia ignorancia  :? Con esto no quiero atacar a nadie ni mucho menos, solo quiero que se sepa que tiene su nivel de complejidad, que necesita ser entendido para saber fijar un objetivo, encararlo, saber explicar las respuestas acertadas y des-acertadas para obtener un resultado adecuado a las necesidades. Que al final va a ser lo más reconfortante  :lol:


Saludos!
« Última modificación: 02 de Enero de 2010, 17:32:09 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado Eyedol

  • PIC16
  • ***
  • Mensajes: 129
Re: Dudas PID
« Respuesta #31 en: 02 de Enero de 2010, 18:05:33 »
Citar
Jejeje! Pero debe haber uno que sea mas rápido, que se necesite menos gasto de energía, ect. y a prueba y error (Sin haber hecho un pequeño estudio del sistema anteriormente) veo difícil que logre encontrar el mejor debido a la subjetividad de la propia ignorancia  Confused Con esto no quiero atacar a nadie ni mucho menos, solo quiero que se sepa que tiene su nivel de complejidad, que necesita ser entendido para saber fijar un objetivo, encararlo, saber explicar las respuestas acertadas y des-acertadas para obtener un resultado adecuado a las necesidades. Que al final va a ser lo más reconfortante  Laughing

 :o jajajajajaja bien bien no puedo luchar contra las matematicas, tienes razon con el analisis previo lograras con gran precision buen resultado estoy totalmente deacuerdo contigo. Solo espero Tambien puedas aceptar que no siempre se requieren tales niveles de precision y con un poco de habilidad se logra el objetivo. Generalmente no me gusta utilizar la palabra complejidad la gente tiende a asociarla con complicado o dificil  y para mi tal cosa solo existe en la mente de cada persona! si tu puedes hacerlo de dificil no tiene nada, si abordas un problema desde el principio pensando que sera dificil de resolver (pesimismo) creo que sera tal y como lo has imaginado (dificil). Por ultimo muchas de las mejores cosas que se hacen comienzan siendo simples bocetos o modelos experimentales que poco a poco se mejoran hasta obtener Excelentes resultados y no siempre tratar de lograr la excelencia a la primera . Buena charla Saludos amigo suky!

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Dudas PID
« Respuesta #32 en: 02 de Enero de 2010, 19:14:01 »
Es muy interesante todo lo que han hecho. Pero me gustaria saber si es posible realizar algun tipo de controlador auto-tunning, es decir que el mismo controlador sea el que se ajuste a la planta y los valores que nosotros deseamos.

Mi otra duda es que cada vez que nosotros ponemos un compensador, lo que hace este es que realiza convoluciones instantanesa en cada instante de tiempo por lo tanto queria saber si era posible hacer un algoritmo que realice estas convoluciones y obtenga los parametros del controlador automaticamente.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dudas PID
« Respuesta #33 en: 02 de Enero de 2010, 21:04:54 »
:o jajajajajaja bien bien no puedo luchar contra las matematicas, tienes razon con el analisis previo lograras con gran precision buen resultado estoy totalmente deacuerdo contigo. Solo espero Tambien puedas aceptar que no siempre se requieren tales niveles de precision y con un poco de habilidad se logra el objetivo. Generalmente no me gusta utilizar la palabra complejidad la gente tiende a asociarla con complicado o dificil  y para mi tal cosa solo existe en la mente de cada persona! si tu puedes hacerlo de dificil no tiene nada, si abordas un problema desde el principio pensando que sera dificil de resolver (pesimismo) creo que sera tal y como lo has imaginado (dificil). Por ultimo muchas de las mejores cosas que se hacen comienzan siendo simples bocetos o modelos experimentales que poco a poco se mejoran hasta obtener Excelentes resultados y no siempre tratar de lograr la excelencia a la primera . Buena charla Saludos amigo suky!

jejeje! La experiencia es una arma que aveces no se la puede combatir con la teoría  :? Eso lo tengo clarito  ;-) Y también pienso exactamente igual con respecto a la complejidad, si ya nos metalizamos que es complejo difícilmente logremos romper esa barrera.

Es muy interesante todo lo que han hecho. Pero me gustaria saber si es posible realizar algun tipo de controlador auto-tunning, es decir que el mismo controlador sea el que se ajuste a la planta y los valores que nosotros deseamos.

Mi otra duda es que cada vez que nosotros ponemos un compensador, lo que hace este es que realiza convoluciones instantanesa en cada instante de tiempo por lo tanto queria saber si era posible hacer un algoritmo que realice estas convoluciones y obtenga los parametros del controlador automaticamente.

Si se puede, hay PID autosintonizados, buscando por la red encontraras que utilizan redes neuronales, que seguramente utilizan cierto periodos de muestreo para aprender y luego determinar las constantes. Es solo una idea que expongo con el poco conocimiento de redes que poseo  :? Otros tienen identificación en linea y modelo de referencia, hay que leer al respecto  :mrgreen:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Eyedol

  • PIC16
  • ***
  • Mensajes: 129
Re: Dudas PID
« Respuesta #34 en: 02 de Enero de 2010, 21:46:48 »
Siempre me he preguntado sobre la auto entonacion tambien, una idea Tambien puede ser aun algo mas rudimentaria utilizar el metodo de entonacion de Ziegler-Nichols Pero digamos en automatico uno de estos es el de la ganancia ultima pero deben hacer oscilar los lazos de control en un momento y este es un metodo grafico que igualmente se puede colocor a un pic a tomar esos datos para la luego aplicar la formulita que han dado estos genios. Es una idea muy posible aun de plano detecto la primera inconveniencia de hacer oscilar momentaneamente el proceso para lograrlo ya que esto abeces no es posible, pero siempre hay posibilidades no!

aqui mas info sobre este metodo!

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Dudas PID
« Respuesta #35 en: 03 de Enero de 2010, 06:31:39 »
Primero mi más felicitaciones por tan enorme esfuerzo y tan vistosos resultados y además muchas gracias por compartir tu tan estupendo trabajo y esfuerzo compañero Nocturno. Pero ahora me quedo con la duda de como has implementado al final el PID, es decir, has recogido datos y has obtenido posteriormente la fdt como decía Suky

Citar
Lo que hay que obtener es f=F(PWM), osea una función para determinar la frecuencia (Salida del sistema, y) a partir del PWM (Entrada, u). Para obtener una función de transferencia adecuada (Conocer bien la dinámica) se debe aplicar un escalón PWM, por ejemplo al 50%, esperar que la frecuencia se estabilice, aumentar al 80%, bajar al 30%, ect. siempre esperando que se estabilice. Hacer varios escalones y después ingresar los datos a Matlab o Eurega (No se si sirve  Confused) y con ello determinar una función de transferencia. Teniendo la función de transferencia puedes determinar el ancho de banda del sistema, y con ello puedes fijar una velocidad de muestro para el sistema de control digital que suele ser 10 veces más rápido que el ancho de banda.

Has obtenido los parámetros característicos del motor como te comenté anteriormente

Citar
Si quieres hacer un PID, mi recomendación es que saques los parámetros característicos del motor que estes usando y a partir de ahí sacas el modelo de la planta, ya que de esta forma tu modelo será más exacto a la realidad.

Me refiero a sacar la planta del sistema...mira esta simulación y los parámetros que puedes variar dependen de los parámetros o características del motor.
http://www.fceia.unr.edu.ar/tesys/vlab/MCCSimulationFranco.htm
Mira este paper para que sepas a que me refiero, seguro que de esta forma te será mucho más sencillo implementar un PID.
http://automatica.li2.uchile.cl/exp/files/man_motor/modelacion_motor_cc.pdf

o al final no has realizado ninguno de estos dos anteriores y has realizado algún método "nuevo".

Un saludete.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dudas PID
« Respuesta #36 en: 03 de Enero de 2010, 06:53:40 »
Pues el algoritmo ha quedado básicamente así:
    pError1 = ((float)VDeseada1 - (float)Velocidad1);
    Potencia1 = PotenciaBase1 + (Kp * (float)pError1 + Kd*(pError1 - ErrorAnterior1) + Ki*Ierror1)/Ko;
    if (Potencia1<0) Potencia1=0;
    if (Potencia1>255) Potencia1=255;
    ErrorAnterior1=pError1;
    Ierror1 += pError1;   
   set_pwm1_duty((int8)Potencia1);

Como se puede ver, hay una variable llamada PotenciaBase1 que calculo mediante la fórmula que obtuve con Eureqa, y que en teoría es la potencia necesaria para conseguir la velocidad deseada. A partir de ese valor, el pid trabaja corrigiendo al alza o la baja las desviaciones para mantener la velocidad constante.

Para calcular las constantes Kp, Kd y Ki he utilizado el método de poner a Kd=Ki=0 y buscar el Kp más alto posible hasta que el sistema oscile. Una vez encontrado, lo he reducido al 60% y he incrementado Kd de la misma manera.

Creo que todavía se puede depurar más, pero de momento los valores con los que estoy trabajando, que son los de las gráficas anteriores, son estos:
#define Kp              3.0
#define Kd              1.5
#define Ki               0.0
#define Ko              1.0

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: Dudas PID
« Respuesta #37 en: 23 de Julio de 2010, 18:26:45 »
hola
Antes q nada felicitaciones.
Dado que tenés la curva de respuesta del sistema al escalón, podés probar con otros métdos de sintonía no necesariamente empíricos que creo te darían un mejor cálculo de las constantes.
También me parece que tuviste una buena idea en inicializar con lo que obtuviste haciendo una regresión de la curva.
Estaría interesante probar alguno de los métodos de autosintonía.

Saludos