Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Control PID con microcontroladores PIC


       



#11  
Raflex
Ubicación: Chihuahua, Mexico
Registrado: 09 Abr 2005
Mensajes: 139
citar
Hola, la desventaja de que uses comunicacion serial es que el tiempo de muestreo va ser algo lento, si puedes mejor usa el puerto paralelo.

Para tu controlador usa transformada Z en vez de trabajar en el dominio del tiempo o la frecuencia (t o s) ya que las operaciones son mas simples.

#12  comunicacion usart
sendag
Ubicación: sevilla
Registrado: 14 Ago 2006
Mensajes: 2
citar
hola sharky, tengo el mismo problema q tu, es decir tengo q elaborar un pid digital con un microcontrolador q en este caso el q estoy usando es un 16f876a, q tiene un convertidor A/D integrado y luego uso un convertidor externo D/A. he logrado comunicar el pic con el pc con el programa visual basic 5. lo unico q he conseguido es mandar caracteres en codigo ascii al pic mediante usart. te dejo el codigo por si te sirve de ayuda.


Private Sub Command1_Click()
MSComm1.PortOpen = True
End Sub
---------------------------------------
Private Sub Command2_Click()
MSComm1.PortOpen = False
End Sub
----------------------------------------
Private Sub Command3_Click()
MSComm1.Output = Text1.Text
End Sub

en la zona de objetos as de crear dos botones para abrir y cerra puertos y una caja de texto donde introduciras los datos, tambien tienes q activar en proyecto/componentes la casilla microsoft control comm 5.0 que es un icono con forma de telefono, tambien tienes q crear un icono con el en la zona de objetos. y luego configurarlo para su comunicacion

#13  Control PID autosintonizable por Ziegler Nichols
Anghell
Registrado: 28 Ago 2006
Mensajes: 4
citar
Hola, mi situacion es muy parecida. Soy estudiante y mi proyecto de tesis es realizar un controlador PID autosintonizable. Aun no entiendo muy bien de ello, lo debo implementar en un PIC, se que puedo hacerlo mediante el metodo de Ziegler-Nichols. Con lo que tengo problemas es con el programa, aun no lo empiezo por que no se muy bien, de manera general que deberia de hacer. Me encantaria una respuesta. Gracias

#14  
Wilmer Luna
Ubicación: Colombia
Registrado: 08 Nov 2007
Mensajes: 1
citar
Compañeros.

He leído los mensajes anteriores del foro pero no ha sido concreto no ha llevado a un resultado optimo.estoy implementando un Pid en un Microcontrolador y controlar una planta y voy a colocar los avances de mí trabajo espero que les sirva.

Creo que en este caso debemos tener conceptos claros de teoría de control continuo y su diferencia con el control discreto, para llevar esto a cabo, debido a que tenemos que controlar una planta que estará siempre en continuo con un Pid con Micro que será digital y corresponde en tiempo discreto.

Antes de comenzar previo a esto debemos tener en cuenta lo siguiente:

Para realizar este montaje debemos de tener simuladores y programas de diseño electrónico como

De diseño: Matlab, Orcad 10, o Proteus, Mplab u otro simulador o compilador para el PIC que vamos a utilizar.

Consideraciones para escoger PIC:

Lo mas importante es tener un PIC con las rutinas básica con suma, resta, multiplicación y división pro OJO, deben de ser con mínimo 3 decimales, esto nos lleva a tener en un PIC básico una rutina bien robusta para realizar estas operaciones, yo recomendaría un PIC que al menos tenga Punto Flotante, para no complicar estas rutinas que de cierto modo son complejas.

Esta es una visión general del proyecto.poco a poco ir redactando en el foro los avances de mi proyecto que en estos momentos esta ejecutado en un 90%

Sean Un poco pacientes que debo de organizar el material para que alguien que no sea tan experto en control lo pueda utilizar, como también cabe aclarar que no esta aplicando a un problema especifico del diseño del Pid, como a un motor, un actuados o lo que sea, va dirigido a cualquier cosa siempre y cuando sepamos la función de transferencia.

#15  
Fernando Vasquez
Ubicación: Peru
Registrado: 10 Dic 2007
Mensajes: 2
citar
Creo que el control PID si es que se hace en un procesador de 8 bits es mejor hacerlo en lenguaje C, si el procesador es de 16 se peude hacer en lenguaje maquina, usando variables de coma flotante. El algoritmo PID no es muy complicado sobretodo si se hace en lenguaje C. El verdadero problema es la sintonizacion, ya que un PID sin sintonizar puede llegar a ser muy deficiente incluso peor que un control solo proporcional.

Para sintonizar el PID se puede hacer manualmente o de forma automatica, la forma manual no nos interesa, pues se tendria que hacer a cada rato, ya que todos los procesos varian de cuando en cuando y hay muchos procesos diferentes. Para hacer un algoritmo de sintonizacion automatico o autotune, el metodo mas usado por la industria es el metodo por RELE que se basa en el metodo de siegler nichols de lazo cerrado.

Aun no entiendo bien este metodo, si alguien sabe bien como hacerlo en C o otro lenguaje puede ayudarnos. Copio a continuacion una expicacion de este metodo:

Está basado en un selector que permite al operador seleccionar entre el modo de control PID (selector en posición A) y el modo de ajuste automático de parámetros o auto-ajuste (selector en posición B).
Cuando se demanda la función de ajuste, se pone el selector a B, lo que significa que
se activa la realimentación con relé y se desconecta el regulador PID. Cuando se obtiene
un ciclo límite estable, se calculan los parámetros del PID y luego se conecta el
controlador PID al proceso con los parámetros calculados.
La realimentación con relé consiste en provocar una oscilación pequeña pero
mantenida en un proceso por lo demás estable. La frecuencia y la ganancia límites del
proceso se determinan según el período de las oscilaciones y los cambios de amplitud
observados en la variable del proceso.
Una condición aproximada para la oscilación se puede determinar asumiendo que
existe un ciclo límite con periodo Tu y frecuencia ωu = 2π /Tu tal que la salida del relé es
una onda periódica, cuadrada y simétrica.

De este texto puedo determinar que se pone un control proporcional P, con una ganancia determinada, luego cuando haya un cruce por 0 se desconecta el control P, hasta que haya otro cruce por 0, y asi hasta que se llegue a una oscilacion. Cuando esto ocurra se toma el periodo y se usa en las formulas de siegles nichols. Para esto se podria utilizar un timer de un PIC y un control P simple..

Asi el algoritmo seria:

activar control P y activar arrancar timer1
¿ cruce por 0 del ADC ?
-NO: no hacer nada y seguir esperando cruce por cero
-SI: -guardar tiempo de timer 1 en una variable
-cambiar control P a inactivo (o activo en caso de venir desactivado)
-¿dato guardado de timer 1 = dato ahora obtenido?
-Si es igual: calculamos las constantes para el PID
-No es igual: regresamos al bucle de espera de paso por cero.

#16  
Fernando Vasquez
Ubicación: Peru
Registrado: 10 Dic 2007
Mensajes: 2
citar
Disculpen por lo confuso que me salio la respuesta anterior espero que la entiendan, estoy aun trabajando es esto del PID y la autosintonia tambien me pueden agregar fervas81 en hot, mi meta es hacer un control PID de calidad de controlador industrial, creo q vamos por buen camino.

#17  Implementacion PID
ermama
Ubicación: VALENCIA,ESPAÑA
Registrado: 18 Jul 2008
Mensajes: 1
citar
Hola Wilmer, soy un programador de firmware y he empezado en el mundo de los PID´s.

Me gustaría que me pasases información acerca de implementar el algoritmo de un PID sin conocer la función de transferencia de la planta.

Tengo conocimientos universitarios de teoria de control y tengo idea de sacar el algoritmo de un PID conocida la funcion de transferencia pero no sé cómo sacar un algoritmo más general para cualquier planta que se desconozca la función de transferencia.

Muchas gracias.

#18  
2LouT9
Ubicación: venezuela
Registrado: 12 Ago 2008
Mensajes: 3
citar
Hola, soy estudiante de electricidad (instrumentación y control) y mi proyecto de grado, es un controlador PID autotuning basado en un pic16f877 por configuración desde la pc, voy a usar visual basic, lenguaje c para ello y se va a comunicar serialmente (rs232), pero estaba haciendo una pequeña prueba para la comunicación, mandando 10 datos desde el pic a excel-visual basic pero en las diez celdas aparece el mismo dato, y quiero que guarde, por ejemplo, el primer dato en la primera celda, el segundo en la segunda celda y asi sucesivamente, pero no se como hacerlo? por favor alguien me puede ayudar se lo agradezco! Smile please!

 Responder





 Otros temas de interés 
No hay mensajes nuevos Destacado: Programador de microcontoladores PIC Puerto USB
No hay mensajes nuevos Programar un PIC para controlar un TFT
No hay mensajes nuevos Programar el PIC16C765 por el puerto serial y el USB
No hay mensajes nuevos Programar un lm35 en visual basic por el puerto paralelo
No hay mensajes nuevos programar en assembler

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||