Ayuda para crear mi controlador PID!
Resultados 1 al 8 de 8

Tema: Ayuda para crear mi controlador PID!

  1. #1
    Usuario
    Mensajes
    20
    Gracias
    12
    Agradecido 0 veces en 0 posts

    Question Ayuda para crear mi controlador PID!

    Hola! Estoy tratando de crear un controlador pid de temperatura, hace un tiempo logre programar mi clase para leer termocuplas tipo "k" con el Max6675 gracias a la ayuda del foro, y hoy quiero complementar esta a un controlador pid... La verdad que se me esta haciendo muy dificil y que las teorias que estoy leyendo me cuestan interpretarlas... En otro foro relacionado al tema encontre una ecuacion ya transformada la cual serviria al parecer para programar dicho controlador, el tema es que no logro entender cual es P cual es I y cual es D, trato de relacionar esto con las teorias leidas pero no logro... La ecuacion es la siguiente:

    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)

    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

    Que es q0, q1 y q2? Alguien me da una mano? No quiero el code quiero que me guien para asi yo poder aprender e interpretar...

    Gracias!

  2. #2
    Usuario
    Ubicación
    Bogota Colombia
    Mensajes
    25
    Gracias
    10
    Agradecido 9 veces en 6 posts
    Hola AlanB
    Acá te dejo mis notas de control por si te sirven de algo
    http://dl.dropbox.com/u/30475917/cla...esentacion.zip
    Aunque me parece que la temperatura es un sistema muy lento como para usar un controlador PID; La verdadera ventaja de este controlador se apreciaría en un sistema rápido.
    Martin Daniel chaparro
    Estudiante Ingienería Electrónica
    Universidad Nacional De Colombia

  3. #3
    Usuario
    Ubicación
    Bogota Colombia
    Mensajes
    25
    Gracias
    10
    Agradecido 9 veces en 6 posts
    te dejo mis apuntes de control, espero que sean de ayuda
    http://dl.dropbox.com/u/30475917/cla...esentacion.zip
    Martin Daniel chaparro
    Estudiante Ingienería Electrónica
    Universidad Nacional De Colombia

  4. #4
    Usuario
    Ubicación
    Puebla, Mexico
    Mensajes
    8
    Gracias
    2
    Agradecido 0 veces en 0 posts
    Hola, suena interesante tu proyecto, no hace mucho que vi ese tema en la materia de ingenieria de control, sobre como hacerlo, lo mas sencillo es que se divide en 3 partes, como dice P,I,D, seria hacer un amplificador con ganancia variable, luego un amplificador integrador ganancia variable, luego un amplificador derivador ganancia variable, y al final se suman las 3 señales, la entrada para los 3 es la misma señal, por lo que podria decirse que la conexion es en paralelo, el ajuste para dicho controlador se realizan con tecnicas ya conocidas, el control y medicion del PID puede ser realizada por un microcontrolador, tambien voy a empezar con eso, como proyecto, nada mas termine otro que tengo en la mesa, espero que te sirva, saludos

  5. #5
    Usuario
    Ubicación
    Lima-Peru
    Mensajes
    10
    Gracias
    29
    Agradecido 12 veces en 7 posts

    Controlador PID en tiempo Discreto - parte 1

    Hola AlanB como estas, hace no mucho hice un control PI para un motor servomotor (estudio teorico y co-simulacion) pero no con pic sino con otro sistema de control que diseñé, en fin; creo yo que te puedo guiar un poco para entender e interpretar la ecuacion que presentas, antes de esto asumire que tienes conocimientos en sistemas de control, lo teorico y empezare con el siguiente diagrama de bloques, veamos:

    http://upload.wikimedia.org/wikipedi...px-PID.svg.png
    http://img266.imageshack.us/img266/7...ontrolador.png
    (Nota: la nomenclatura que utilizare para la señal de referencia sera r(t) en lugar de u(t) que se muestra en la figura extraida de wikipedia ya que u(t) sera la señal de salida del controlador PID, como se muestra en la figura de la derecha)
    Donde la ecuacion del controlador PID expresado en funcion del tiempo es el siguiente:

    http://img853.imageshack.us/img853/3648/ec915.png
    Donde: Ki = Kp / Ti y Kd = Kp . Td
    Luego si tomamos la Transformada de Laplace a la ecuacion anterior tenemos la funcion de transferencia del controlador PID en tiempo continuo, es decir despejando u(t)/e(t):

    http://img703.imageshack.us/img703/4277/ec917.png
    Graficamente se tendria:
    http://img804.imageshack.us/img804/7...pocontinuo.png
    Ahora como la idea principal es implementar el controlador PID en un microcontrolador, por ejemplo, se tiene que convertir la representacion de tiempo continuo (espacio S) a tiempo discreto (espacio Z). Para hacer esto utilizare el operador derivativo la cual se define de la siguiente manera: S = (1-Z-1)/T.
    Nota:EL operador derivativo se demuestra de la Integracion Rectangular hacia adelante (Sistemas de control automático, Benjamín C. Kuo, pag. 839) tambien se pudo haber utilizado la Transformacion Bilineal [Integracion Trapezoidal], al cual lo llamo operador Bilineal definido de la siguiente manera: S = (2/T)x[(1-Z-1)/(1+Z-1)], pero para la ecuacion que presentas utilizare lo primero.

  6. Los siguientes 2 usuarios agradecieron a NeoGundam por este post:

    HJ.0X00 (20/12/2011), Ruben219 (20/12/2011)

  7. #6
    Usuario
    Ubicación
    Lima-Peru
    Mensajes
    10
    Gracias
    29
    Agradecido 12 veces en 7 posts

    Controlador PID en tiempo Discreto - parte 2

    Entonces reemplazando S = (1-Z-1)/T se tiene que:

    http://img84.imageshack.us/img84/4845/ec919.png
    Luego si desarrollamos la ecuacion anterior, la expandimos y aplicamos la transformada inversa de Z, despejando tendriamos la ecuacion diferencial discreta (en su forma explicita):

    http://img341.imageshack.us/img341/2245/ec920.png
    Finalmente agrupando y expresando la ecuacion diferencial discreta en su forma implicita (e[kT] -> e[k], T: periodo de muestreo), se tiene:

    http://img838.imageshack.us/img838/2540/ecfinal.png
    Como se aprecia en la ecuacion diferencial discreta final, puede ser expresada en la siguiente forma simplificada:
    u[k] = u[k-1] + q0.e[k] + q1.e[k-1] + q2.e[k-2]
    De esta manera es mas sencilla su implementacion en un microcontrolador ya que u[k] es la muestra actual y u[k-1] es la muestra anterior, es decir el uC se encarga de resolver la ec. diferencial discreta.

    Ahora la pregunta es como determinar los valores de Kp, Td, Ti , ya que es lo unico que falta para realizar la implementacion en el uC, bueno esos parametros lo determinan las especificaciones de desempeño de la planta controlada como son el error en estado estable, el tiempo de levantamiento, tiempo de asentamiento, sobrepaso maximo, etc, por ejemplo se quiere controlar la temperatura de un horno, que lleque a los 50 grados centigrados en 20 segundos (tiempo de asentamiento) con un sobre paso maximo de 5 grados y un error en estado estable de 1 grado, algo que sin un controlador no se podia realizar.

    En resumen AlanB, ya tienes una idea de lo que es q0, q1, q2 y que dependen de Kp, Ti, Td pero estos parametros lo determina el desempeño que quieres que tenga tu planta controlada, como indique en el ejemplo anterior.
    Recomiendo la siguiente bibliografia:
    - Microcontroller Based Applied Digital Control, Dogan Ibrahim, ISBN 0-470-86335-8
    Caputilos 2 y 9. En particular Cap. 9.2 PID Controller, en el cual explican a detalle las ecuaciones que anteriomente he mostrado, algunos metodos y ejemplos para hallar Kp, Ti, Td. Cap. 10.5 MICROCONTROLLER IMPLEMENTATIONS con algunos ejemplos interesantes.
    - INGENIERÍA DE CONTROL MODERNA - Katsuhiko Ogata - 3º Edicion
    - Sistemas de control automático, Benjamín C. Kuo

    Por el momento eso seria todo, cualquier duda por este medio. Saludos ...
    Última edición por NeoGundam; 19/12/2011 a las 13:39

  8. Los siguientes 3 usuarios agradecieron a NeoGundam por este post:

    Alfadeko (21/12/2011), HJ.0X00 (20/12/2011), Ruben219 (20/12/2011)

  9. #7
    Usuario
    Ubicación
    Pamplona ESPAÑA
    Mensajes
    5
    Gracias
    5
    Agradecido 6 veces en 4 posts
    "Tas pasao" NeoGundam. Resumir el Ogata (La Biblia de la Regulación...) en dos post... . Es broma. Explicación de sobresaliente, me quito el sombrero, pero muuucha densidad.
    Ahi van un par de Application Notes (En inglés, eso si) de Microchip que aunque hay que dedicarles un rato, van diréctas al grano:

    AN937

    AN964

    Entra en la página de Microchip y búscalas (Pondría el link, pero este es mi segundo post y todavía no estoy lo suficiente "maduro" como para hacerlo).

    La primera tiene menos teoría, y en ambos casos tienes la implementación del código, bien explicadito.
    Saludos.

  10. #8
    Usuario
    Ubicación
    Mexico
    Mensajes
    38
    Gracias
    24
    Agradecido 28 veces en 13 posts
    Hola mi estimado Alan. Después de la explicación de NeoGundam, solo me queda recomendarte que le des una revisada a la librería PID de arduino.

    Arduino playground - PIDLibrary

    La mayoría de la documentación del proyecto arduino se encuentra en ingles (al menos la más completa). De esta librería se desprenden una serie de entradas en el blog del autor, explicando algunos detalles prácticos de la implementación del PID en C.

    Introducción
    Tiempos de muestreo
    Sobresalto del término derivativo
    Cambio de parámetros "al vuelo"
    Evitando errores en el reset
    Encendiendo / apagando el controlador, modo manual
    Inicialización del controlador
    Dirección del controlador

    Me parece que es un buen recurso para empezar a escribir un controlador PID de punto flotante en C para microcontroladores, el unico "problema" es que todo esta en ingles, ojala te sirva.

  11. Los siguientes 2 usuarios agradecieron a Ruben219 por este post:

    Alfadeko (21/12/2011), NeoGundam (20/12/2011)

Temas similares

  1. Tutorial para crear tus Cd o Dvd de música Interactivos
    Por maigiri en el foro Wiki y Tutoriales
    Respuestas: 1
    Último mensaje: 21/08/2012, 20:40
  2. Ayuda Para crear HackingTosh Mini
    Por Kabal en el foro Hardware
    Respuestas: 6
    Último mensaje: 21/06/2011, 01:44
  3. ¿Alguien me pude ayudar a crear una libreria para MPLAB?
    Por mecatroyer en el foro Programación
    Respuestas: 4
    Último mensaje: 27/04/2011, 03:15
  4. Crear placa para detectar bombillas fundidas
    Por aspire en el foro Electrónica Analógica
    Respuestas: 16
    Último mensaje: 23/04/2011, 04:11
  5. Software para crear imagenes (o masters)
    Por Juan76 en el foro Software
    Respuestas: 4
    Último mensaje: 20/12/2010, 20:32

Los visitantes encuentran esta página buscando por:

control pid

arduino

como hacer un controlador pid de temperatura

libreria pid arduino

control pid con arduino

pid neoteo

programar control PID arduino

como realizar un pid

termocupla

programar pid en c

libreria pid para pic

como hacer un pid con pic

control de temperatura

pid arduino

programar un pid en c

como programar un control pid

controlador pid

arduino pid

como hacer un controlador pid

como hacer un control pid

pid con arduino

controlador pid digital libreria

como se fabrica un controlador pi

control de temperatura pid arduino

pid en c18

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37