TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: calcius en 30 de Agosto de 2005, 10:28:00

Título: control pid
Publicado por: calcius en 30 de Agosto de 2005, 10:28:00
Tengo en mente implementar un control pid en un microcontrolador, alguien se apunta al proyecto? muchas gracias
Título: RE: control pid
Publicado por: Artifox en 30 de Agosto de 2005, 11:18:00
Hola Calcius, veo que quieres implementar un control PID en un microcontrolador, primero que nada te tengo unas preguntitas, ¿que es lo que quieres controlar?, ¿que lenguaje de programacion piensas usar?, ¿tienes pensado algun microcontrolador en especial? loco

A mi parecer para poder implementar un PID en un PIC, minimo necesitarias un 18FXXX o un dsPic ( seria super interesante implementarlo en un dsPic pues estos tienen muchos recursos ) Yo aun estoy entrando poco a poco a manejar los dsPic"s, en el tema de control no tengo muchos problemas, es cuestion de repasar un poco...

A ver si hacemos ese control en grupo, seria muy interesante. Yo te puedo ayudar con el poco tiempo con el que dispongo....

Ya nos vemos un abrazo Rebotado
Título: RE: control pid
Publicado por: calcius en 30 de Agosto de 2005, 11:51:00
perdona si mi pregunta de antes ha sido poco concisa, en principio el control que quiero hacer es algun tipo de pruba para implementarlo en el micro, por ejemplo podriamos controlar la velocidad de giro de un motor de continua o hacer un pequeño control de temperatura, en cuanto a micro podiamos usar un 18f2550 o si este se nos queda corto un 4550, crees que no se podría en un 876?
Título: RE: control pid
Publicado por: piriots en 30 de Agosto de 2005, 11:56:00
Interesante el control PID, lastima que no se muy bien como funciona porque me iria de fabula para el proyecto que estoy haciendo. Yo he visto un algoritmo PID implementado en un pic 16f876.

Salu2
Título: RE: control pid
Publicado por: Artifox en 30 de Agosto de 2005, 22:54:00
Hola nuevamente, creo que se podria empezar con un control de motor DC. Me parece mas logico hacerlo con el 18F2550 pues ya tiene implementada la multiplicacion a diferencia de la 16F876; pero eso no quiere decir que no se pueda hacer, no he investigado mucho en hacerlo, asi que seria cuestion de probar.

Un detalle seria que para hacer las multiplicaciones en un 16F876 seria por software lo que se traduce en un tiempo mas grande. Como sabras es necesario tener un tiempo de muestreo "constante" y si queremos que el control sea rapido necesitariamos una buena velocidad de procesamiento.

En el caso de control temperatura, lo podriamos hacer con el 16F876 y en el caso de control de velocidad me parece que seria mejor con el 18F2550.

Recuerda que para hacer el control PID vas a necesitar conocer el "sistema" o mejor dicho la funcion de transferencia del sistema, sea el motor o el espacio en el cual se va a controlar la temperatura.

Asumo que lo haras en C, pues este nos soporta los decimales. Yo aun no empiezo a aprender C asi que seria interesante aprenderlo con esta aplicacion.

Te dejo a ti la decision de cual es el sistema que quieres controlar, yo estare en contacto...

Un abrazo Rebotado
Título: RE: control pid
Publicado por: calcius en 31 de Agosto de 2005, 04:22:00
en principio usaremos c, yo personalmente suelo usar el ccs, si necesitas algo de información manual en español o algun programa de ejemplo pedirmelo. en cuanto a lo que comentas de que pic usar creo que mejor el 2550 y podiamos empezar con el control de temperatura utilizando una señal 4-20mA para actuar sobre un rele de estado solido.

Como lenguaje de programación tambien se podría utilizar el c18 de microchip, yo empezé a usarlo para una placa de adquisición de datos usb pero a lo mejor no mucha gente lo utiliza por aqui.

Bueno haber si podemos ir haciendo las primeras pruebas, y no se si sería mejor dejar este tema aqui o moverlo a la sección de proyectos
Título: RE: control pid
Publicado por: kuauhtemok en 31 de Agosto de 2005, 12:59:00

Yo opino que lo primero es averiguar la funcion de transferencia del sistema a controlar....

podrias publicarlo ?
Título: RE: control pid
Publicado por: Artifox en 31 de Agosto de 2005, 16:32:00
Ok, no hay problema en hacerlo en ccs, tengo la version 3.227 (aunque nunca lo he usado).

Me parece bien mudar el tema a la seccion de proyectos. A ver si uno de los modeladores nos hace el favor que mover todos los mensajes para alla... Flash

Debemos empezar por algun lado, asi que debemos empezar por definir exactamente que es lo que vamos a utilizar para poder setear nuestro PID.

A mi parecer el hardware que  tendra el PIC seria 3 potenciometros para las constantes del PID, un LCD para que nos muestre las constantes que ingresamos y ademas las estapas de entrada/salida al sistema. O tambien podemos ponerle un teclado en vez de los potenciometros... Se necesitara conectar a la PC?? pues podriamos hacerlo usando USB Fumador

Luego debemos definir el sistema a controlar ( temperatura ), no se que tendras en mente, un horno, un sistema de refrigreacion... loco yo tampoco tengo una idea consisa. Ademas de empezar a buscar la forma de sacar el modelo matematico del sistema, para llegar a obtener su funcion de transferencia.

Como te dije antes estoy algo oxidado con esto de control, asi que tendremos que avanzar de a pocos... Una consulta, manejas Matlab??? porque alli podemos trabajar algunas cosas.... Por cierto, yo ando corto de tiempo, asi que seguire todos tus avances ( en verdad quisiera poder investigar e ir dandote mas ayuda pero si hago una cosa mas, mi cerebro hace cortocircuito jeje )

Si puedes busca dentro de Microchip un PDF referido a como hacer un PID con un 18, esta en asembler si mal no recuerdo, lo revise hace mucho y la verdad no encuentro el archivo en mi maquina, estoy seguro que servira de mucho.

Bueno, nos mantenemos en contacto y a ver si los Moderadores nos hacen el favor de mudar nuestro tema....

Un abrazoRebotado
Título: RE: control pid
Publicado por: calcius en 31 de Agosto de 2005, 16:46:00
bueno creo que vamos a empezar a ordenar un poco los conceptos, vayamos por partes:

-Como sistema de control de temperatura que mejor que una bombilla con un lm35 para simular unhorno y su correspondiente sensor de temperatura

-En cuanto a matlab lo he usado en la universidad pero si tenemos que usar fourier tendría que repasar un poco el tema

-para empezar creo que podriamos usar el prototipo del lcd y los potenciómetros,

-en cuanto a la función  de transferencia podríamos empezar por una de tipo general de temperatura(aunque nuestra bombilla oscilara mucho mas rapido que si fuera un horno) pero creo que para un primer diseño de pruebas nos podría valer perfectamente

-ese documento de microchip que comentas ya lo vi yo también hace tiempo y creo que lo tengo en el trabajo, le echare un ojo lo antes posible

-en cuanto a tiempo creo que ambos andamos escasos Rebotado yo ahora ando de examenes y por la mañana trabajo asi que me queda poco tiempo libre, pero creo que poco a poco iremos dandole caña a nuestro control je je je
Título: RE: control pid
Publicado por: gauchosuizo en 01 de Septiembre de 2005, 00:38:00
hola

yo me anoto, tampoco dispongo de mucho tiempo, pero me intereza el tema.

Aloha
Título: RE: control pid
Publicado por: Nocturno en 01 de Septiembre de 2005, 02:52:00
Puesto que así lo pedíais, y porque además tiene toda la lógica, he mudado este interesante hilo al subforo de Proyectos.
Título: RE: control pid
Publicado por: Artifox en 01 de Septiembre de 2005, 11:20:00
Gracias Nocturno Rebotado por mudar el hilo....
Título: RE: control pid
Publicado por: atlasdelcarinakeel en 04 de Septiembre de 2005, 12:21:00
Que tal, espero que este link te ayude

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en020434
Título: RE: control pid
Publicado por: calcius en 20 de Septiembre de 2005, 09:55:00
Hola a todos tras un largo y arduo periodo de examenes, vuelvo a la carga con la implementación del control pid  Rebotado

En primer lugar he montado un 18f2455 y un lcd para ayudarme en la depuración del proyecto. Empezaré por implementar un control proporcional y haber si puedo hacer algunas pruebas esta semana para saber que tal funciona y ya comento...

Título: RE: control pid
Publicado por: Jimmy_pop en 20 de Septiembre de 2005, 13:36:00
hola,

implementar un pid digital es sumamente senzillo y el código puede ser fácil de mantener incluso escrito en assembly, yo creo que un 16f876 sirve de sobras (y lo se pq trabajé con él y usaba tiempos de 15ms y cosas parecidas que es un período muy muy pequeño para el control de velocidad de un motor de contínua, que tiene una respuesta lenta en relacion al tiempo que es capaz de dar el pic). Os animo a probar de hacerlo en asm.

lo que ya no es tan simple es diseñar bien el pid, os recomiendo el gnu-octave para hacer los cálculos porque el toolbox de control es francamente bueno.

saludos!
Título: RE: control pid
Publicado por: pocher en 21 de Septiembre de 2005, 02:34:00
Yo también me apunto, eso sí tendría que ser con CCS.

Hace tiempo estuve ayudando a un compañero a hacer un control proporcional, sin usar ecuaciones.

Me interesaría que alguién plantease el programa con ecuaciones, estuve mirando por Internet y tengo algún programa con ecuaciones pero no funcionan.

También creo que con el 876 va que se mata.

Un saludo
Título: RE: control pid
Publicado por: xerex en 21 de Septiembre de 2005, 11:53:00
Hola chicos, habia leido este post hacia ya tiempo y no lo habia contestado, no se porque, bueno os comento, hacer lo del pid es bastante sencillo, al menos en modo digital. Si alguien tiene la ecuacion del pid en tiempo continuo, pasarlo a tiempo discreto es una tonteria -transformada Z-. (haber si la encuentro que la tengo que tener en algun sitio...), una vez implementada, tiene 4 terminos:

kP = constante proporcional
Ki = constante integral
Kd= constante derivativa
Q = frecuencia de muestreo (en segundos)

con esto se puede hacer un control pid, para aplicar la salida hay que poner un DAC en caso de utilizar un PIC16F87X, en cualquier otro caso, hay que tener un ADC y un DAC para generar la señal de error del sistema de control.

Hay ciertas restricciones en los valores de las k´s, por ejemplo Ki > kd y que ki > Q
(si me equivoco me corregis ok?), bueno con estos datos espero que podais poneros a trabajar, si encuentro la ecuacion en algun libro mio de control la posteare aki. un saludo.

P.D. para construir un PID no es necesaria conocer la planta a tratar. si necesitas conocer la planta es porque quieres talvez hacer un control mediante truxal, para eliminarla y que se comporte como tu quieres.
Título: RE: control pid
Publicado por: xerex en 21 de Septiembre de 2005, 12:19:00
Bueno me he quedado inquieto y os he buscado la ecuacion, aqui la pongo:

ak= ak-1[q0*ek+q1*ek-1+q2*ek-2]

q0=k(1+T/Ti+Td/T)
q1=k(-1-2*(Td/T))
q2=k*(Td/T)

donde:

ak = salida actual de PID
ak-1 = salida anterior del PID
k = constante proporcional (KP)
Ti = constante integral
Td = constante derivativa
T = tiempo entre muestras (esto debe ser lo mas preciso posible, a poder ser hay que implementarlo con un timer)
ek = error actual (consigna menos lectura actual de la planta)
ek-1 = error anterior
ek-2 = error hace 2 veces

Creo que no se me ha olvidado nada. ya teneis el pid, programarlo... es una tonteria Giño.

Estare atento a este post. Un saludo.
Título: RE: control pid
Publicado por: xerex en 21 de Septiembre de 2005, 12:22:00
le faltaba algo a la ecuacion Muchas risas
           
ak= ak-1+[q0*ek+q1*ek-1+q2*ek-2]
              ^
Título: RE: control pid
Publicado por: martinezavg en 09 de Octubre de 2005, 21:19:00
Hola muchachos como anda todo? Yo tambien estoy muy interesado en la implementación de un lazo de control PID y sobre todo en lenguaje C.

Por alli buscando encontré un manual de "Control Industrial" en español, donde se utilizan los BASIC Stamp y existe un proyecto completo de un lazo PID con la teoría de control pero en BASIC que puede ser "traducido" a CCS  

Aqui les dejo la dirección para que les hechen un vistazo.....y por que no? realizar los primeros ensayos de preogramación en CCS y simulación en PROTEUS....

http://www.rambal.com/descarga/doc.htm

Saludos.
Título: RE: control pid
Publicado por: martinezavg en 09 de Octubre de 2005, 22:01:00
Ah sólo como sugerencia:
RollEyes  ¿por que no usar el mismo circuito que plantea este manual para realizar la traducción en C y la simularla en PROTEUS como a manera de inicio? así todos los interesados en el tema pueden ir asimilando la teoría del lazo de control PID y luego ir a algo más complejo.  Que dicen al respecto?  Avergonzado


Saludos Giño
Título: RE: control pid
Publicado por: martinezavg en 13 de Octubre de 2005, 08:48:00
En esta página encontrarán cosas interesantes, como por ejemplo:
.- Un control PID para un calentador hecho Hi-tech C y otros proyectos.
.- Lector/escritor de memorias MMC hecho en CCS C y otros.

http://www.microchipc.com/sourcecode/index.htm#mikepearce

Saludos Sonrisa
Título: RE: control pid
Publicado por: martinezavg en 13 de Octubre de 2005, 12:11:00
Control de la velocidad de un motor usando un lazo PID y en CCS!!!! Rebotado Rebotado Rebotado

http://frontrangerobotics.org/PIDbackEMF/DavesBEMFmotorArticle.htm

lo que queda es hechar código....... Avergonzado


Saludos  Sonrisa
Título: RE: control pid
Publicado por: PAOLA09 en 20 de Octubre de 2005, 11:56:00
HOLA

RESIENTEMENTE ME HE UNIDO A ESTE FORO YA QUE TAMBIEN ME ENCUENTRO INTERESADA EN REALIZAR EL CONTROL PID DE UN HORNO, QUISIERA SABER COMO VAN CON ESO, YA QUE NUNCA HE REALIZADO UN CONTROL DE ESTE TIPO CON UN CONTROLADOR. EL PIC DEL CUAL DISPONGO ES UN 18F452. QUE HAY QUE HACER?