Autor Tema: PID Digital (paso a paso)  (Leído 74597 veces)

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

Desconectado b3rsui

  • PIC10
  • *
  • Mensajes: 13
Re: PID Digital (paso a paso)
« Respuesta #75 en: 13 de Agosto de 2012, 14:34:06 »
Hola gente! Como andan? Bueno tengo una duda en concreto que no logro identificar.

Eh seguido los pasos para hallar la funcion que describa el comportamiento de mi sistema (horno) el cual planeo controlarlo mediante un control PID. El tema es que no entiendo como encontrar los valores de Kd, Ki y Kp. Por favor les ruego me iluminen en este sentido.

Eh levantado la curva de temperatura del horno cada 5 segundos y mediante el metodo explicado por krakc eh obtenido que:

y(t) = -1841/20000*exp(377/10000*t)+2639/50*exp(997/100000*t)

Y(S) = 7/2*(15053700000*s-568253789)/(10000*s-377)/(100000*s-997) 

Luego mi funcion transferencia sera:

                 52.69 s^2 - 1.989 s
H(S) = ----------------------------------
           s^2 - 0.04767 s + 0.0003759

Finalmente la transformada Z

Transfer function:
52.69 z^2 - 105.4 z + 52.71
---------------------------
       z^2 - 2 z + 1
 
Sampling time: 0.01

Pero no entiendo de donde y como sacar las constantes que me refiero.

Bueno si alguien puede orientarme en el lio que tengo de conceptos se lo voy a agradecer.

Saludos a todos y continuen asi!

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: PID Digital (paso a paso)
« Respuesta #76 en: 21 de Junio de 2014, 15:45:04 »
Retomo este tema para practicar un poco, resulta que encontré esto por casualidad y me puse a recordar los sistemas de control:

http://real2electronics.blogspot.com.es/2011/07/maqueta-de-control-pid-con-arduino.html

he echo ese mismo montaje con un envase de aceitunas, y con seis resistencias de 10homios, dos grupos de tres en serie puestas en paralelo, total 15homios. Y para medir la temperatura NTC de 10K al positivo, con una resistencia de 3k3 a masa, midiendo en la de fija de 3k3.

Con eso obtengo los siguientes datos:
Código: [Seleccionar]
tiempo=[0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210];

%son voltios de un divisor, ntc 10k al positivo, 3k3 a masa.
%medido en la de 3k3 a masa.
temperatura=[4.77 4.69 4.61 4.51 4.40 4.29 4.14 4.04 3.94 3.86 3.78 3.70 3.64 3.60 3.55 3.51 3.49 3.46 3.40 3.36 3.34 3.34];
plot(tiempo,temperatura)

%en eje x tiempo. Eje y voltios o temperatura.


Me voy a curvefitting y obtengo lo siguiente:

Código: [Seleccionar]
syms t
a =      3.406;
b =     -0.1962;
c =      0.3603;
d =      0.5446;
yt = a*exp(b*t) + c*exp(d*t)
YS = laplace (yt)



%yt =
 
%(1703*exp(-(981*t)/5000))/500 + (3603*exp((2723*t)/5000))/10000
 
 
%YS =
 
%1703/(500*(s + 981/5000)) + 3603/(10000*(s - 2723/5000))

introduzco la función de tranasferencia multiplicado por 's':

Código: [Seleccionar]
g1=tf([1703 0],[500 500* 981/5000])
g2=tf([3603 0],[10000 -(10000*( 2723/5000))])
g=g1+g2
%rltool(g)
step(g)

y resulta un sistema inestable, tiene un polo en positivo.

Para obtener la función de la planta he puesto tensión en las resistencias, he esperado que se calienten, y luego he puesto en marcha el ventilador y cada 10 segundos he tomado un valor de voltaje en la resistencia de 3k3, es correcto ¿no? ¿alguna idea?

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: PID Digital (paso a paso)
« Respuesta #77 en: 23 de Junio de 2014, 13:07:39 »
Bueno, he modelado mi planta como he podido segun dice Blackcat al inicio de este hilo (faltan imagenes, el post es antiguo  :D), y he obtenido esta funcion de transferencia que es estable:

Código: [Seleccionar]
K =0.94116;
 
Tp1 = 6.2583e-05;
 
Tp2 =1.9424;
 
num = K;
 
den = conv([Tp1 1],[Tp2 1]);
 
sys = tf(num,den)

%sys =
 
%            0.9412
%  ---------------------------
%  0.0001216 s^2 + 1.942 s + 1

Lo que ocurre es que mi sistema al ser de enfriamiento es inverso, y si hago un step(sys) la respuesta es creciente, va de 0 a 1, en lugar de 1 a 0, ó ¿es correcto y tiene que ser de 0 a 1?

Saludos!!
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: PID Digital (paso a paso)
« Respuesta #78 en: 25 de Junio de 2014, 18:09:56 »
Creo que no lo estoy haciendo bien... segun dice blackcat hace falta una señal de entrada, una de salida y una base de tiempo, cual serian estos en mi sistema:

- Entrada: ¿Valores aumentando el voltaje del ventilador?

- Salida: ¿La lectura de temperatura?

- Base de tiempo: ¿tiempos entre los que cambio-mido voltaje-temperatura?

Y, ¿tendria que esperar a que se estabilice la temperatura para cada incremento de voltaje?

Saludos!!
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: PID Digital (paso a paso)
« Respuesta #79 en: 25 de Junio de 2014, 19:23:36 »
hola , no he leido el post completo, pero cuando tuve que identificar una planta de nivel de agua usando matlab tuve que hacer lo siguiente:
-tomar como T0(tiempo cero) el tanque vacio y medir el voltaje de salida de mi sensor
-empezar a llenar hasta cierto nivel, y tomar el tiempo que tardó en llegar a ese nivel y medir el voltaje de salida del sensor
-así mismo para las siguientes muestras

Matlab modela con parámetros en el dominio del tiempo, asi que usé el comando "Ident" y le pase los parametros en forma de vector del tiempo y el voltaje



Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: PID Digital (paso a paso)
« Respuesta #80 en: 26 de Junio de 2014, 07:40:15 »
¿No puedes ajustar el PID a mano? Creo que será más sencillo.

Un problema que te vas a encontrar en el ventilador, es que su comportamiento no es lineal. ¿Lo estás controlando con tensión o con PWM?

Saludos.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: PID Digital (paso a paso)
« Respuesta #81 en: 26 de Junio de 2014, 08:14:56 »
ojo, que con los sistemas por aire, en ocasiones hay que aplicar soluciones anti WIND-UP.
un ejemplo.

Click Click
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: PID Digital (paso a paso)
« Respuesta #82 en: 26 de Junio de 2014, 14:59:01 »
hola , no he leido el post completo, pero cuando tuve que identificar una planta de nivel de agua usando matlab tuve que hacer lo siguiente:
-tomar como T0(tiempo cero) el tanque vacio y medir el voltaje de salida de mi sensor
-empezar a llenar hasta cierto nivel, y tomar el tiempo que tardó en llegar a ese nivel y medir el voltaje de salida del sensor
-así mismo para las siguientes muestras

Matlab modela con parámetros en el dominio del tiempo, asi que usé el comando "Ident" y le pase los parametros en forma de vector del tiempo y el voltaje

Sí, pero en la herramienta ident pide tres variables: entrada, salida y tiempo (mira la imagen adjunta)

Yo tengo como salida el array de temperatura, y como tiempo desde 0 en pasos de 10seg. ¿que pongo como entrada? sin array de entrada no se puede ejecutar "process models".

¿No puedes ajustar el PID a mano? Creo que será más sencillo.

Un problema que te vas a encontrar en el ventilador, es que su comportamiento no es lineal. ¿Lo estás controlando con tensión o con PWM?

Saludos.

La idea es aprender a utilizar ident para encontrar la función de transferencia de una planta y rltool para calcular el controlador.

De momento estoy usando voltaje para controlarlo, luego será un PWM de salida de un micro.

ojo, que con los sistemas por aire, en ocasiones hay que aplicar soluciones anti WIND-UP.
un ejemplo.

Click Click


Lo tendré en cuenta, de momento necesito la planta.

Saludos!!
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: PID Digital (paso a paso)
« Respuesta #83 en: 26 de Junio de 2014, 15:13:30 »
Yo probé a hacer un control PID para controlar la temperatura de un disipador de pc y acabé volviendome loco
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: PID Digital (paso a paso)
« Respuesta #84 en: 26 de Junio de 2014, 15:17:02 »
Yo probé a hacer un control PID para controlar la temperatura de un disipador de pc y acabé volviendome loco

Yo estoy medio majareta ya  :D :D
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: PID Digital (paso a paso)
« Respuesta #85 en: 26 de Junio de 2014, 17:07:33 »
Micro_pepe sí consigues encarrilar el tema, te llevarás un gran aplauso por mi parte :):):)
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: PID Digital (paso a paso)
« Respuesta #86 en: 27 de Junio de 2014, 13:51:17 »
bueno, estaba leyendo los otros mensajes y creería que el método para identificar no es el correcto, pienso lo siguiente:
como de entrada se sabe que las resistencias estan calientes , entonces aplicaría por ejemplo 2v al ventilador y tomaría los datos estables, luego aumentaria en 2v el voltaje aplicado al ventilador y tomo datos, y así tomaría N muestras, pienso que ese seria el camino, pero no me aclaro con la toma del tiempo
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: PID Digital (paso a paso)
« Respuesta #87 en: 27 de Junio de 2014, 14:42:03 »

Yo tengo como salida el array de temperatura, y como tiempo desde 0 en pasos de 10seg. ¿que pongo como entrada? sin array de entrada no se puede ejecutar "process models".

La idea es aprender a utilizar ident para encontrar la función de transferencia de una planta y rltool para calcular el controlador.


La planta será muy parecida a un sistema con un polo.

Puedes calentar las resistencias hasta que la temperatura sea estable sin tensión en el ventilador  (Vin = 0v)

Luego pones en marcha el ventilador con 6 voltios y tomas medidas cada segundo:

Vin   = [6     6       6      6       6      6      6      6     6      6      6      6       6      ....
Vout = [4     3.8    3.5    3.2    2.9   2.6    2.3   2.1   1.9   1.8    1.7   1.6    1.6    ....


El array de entrada es la tensión del ventilador.

Saludos.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: PID Digital (paso a paso)
« Respuesta #88 en: 28 de Junio de 2014, 16:46:20 »

Yo tengo como salida el array de temperatura, y como tiempo desde 0 en pasos de 10seg. ¿que pongo como entrada? sin array de entrada no se puede ejecutar "process models".

La idea es aprender a utilizar ident para encontrar la función de transferencia de una planta y rltool para calcular el controlador.


La planta será muy parecida a un sistema con un polo.

Puedes calentar las resistencias hasta que la temperatura sea estable sin tensión en el ventilador  (Vin = 0v)

Luego pones en marcha el ventilador con 6 voltios y tomas medidas cada segundo:

Vin   = [6     6       6      6       6      6      6      6     6      6      6      6       6      ....
Vout = [4     3.8    3.5    3.2    2.9   2.6    2.3   2.1   1.9   1.8    1.7   1.6    1.6    ....


El array de entrada es la tensión del ventilador.

Saludos.

Muchas gracias a todos!!

Con ese dato he conseguido llegar a buen puerto, o eso creo, el invento mantiene la temperatura al nivel indicado.

Dejo todo esto documentado por si le sirve a alguien  ;-)

Saludos!!

http://www.4shared.com/rar/sAJauyd8ce/PID_Inverso_enfriador.html
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: PID Digital (paso a paso)
« Respuesta #89 en: 28 de Junio de 2014, 20:40:13 »

Yo tengo como salida el array de temperatura, y como tiempo desde 0 en pasos de 10seg. ¿que pongo como entrada? sin array de entrada no se puede ejecutar "process models".

La idea es aprender a utilizar ident para encontrar la función de transferencia de una planta y rltool para calcular el controlador.


La planta será muy parecida a un sistema con un polo.

Puedes calentar las resistencias hasta que la temperatura sea estable sin tensión en el ventilador  (Vin = 0v)

Luego pones en marcha el ventilador con 6 voltios y tomas medidas cada segundo:

Vin   = [6     6       6      6       6      6      6      6     6      6      6      6       6      ....
Vout = [4     3.8    3.5    3.2    2.9   2.6    2.3   2.1   1.9   1.8    1.7   1.6    1.6    ....


El array de entrada es la tensión del ventilador.

Saludos.

Muchas gracias a todos!!

Con ese dato he conseguido llegar a buen puerto, o eso creo, el invento mantiene la temperatura al nivel indicado.

Dejo todo esto documentado por si le sirve a alguien  ;-)

Saludos!!

http://www.4shared.com/rar/sAJauyd8ce/PID_Inverso_enfriador.html

No puedo descargarlo ya que no tengo mas cuneta en 4shared y no quiero volver a registrarme...
Lastima!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything