Control PID con microcontroladores PIC
| #11 |
| #12 comunicacion usart |
|
sendag
|
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
|
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
|
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
|
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
|
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
|
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
|
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!
|
|||||||||||
|
|
||||||||||||
|
| Otros temas de interés | |
|---|---|
| Destacado: Programador de microcontoladores PIC Puerto USB | |
| Programar un PIC para controlar un TFT | |
| Programar el PIC16C765 por el puerto serial y el USB | |
| Programar un lm35 en visual basic por el puerto paralelo | |
| 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 || |
Contacto |
Acerca de |
Ayuda |
Normas de la Comunidad |
Privacidad |
Mapa de los foros
© Foros de Electrónica - Comunidad Internacional de Electrónicos
© Foros de Electrónica - Comunidad Internacional de Electrónicos

