hola a todos, tengo un proyecto en la universidad el cual consiste en la implementacion de un controlador PID, para el control de la temperatura, la idea es utilizar una resistencia para el calor y un ventilador para el enfriamiento mientras que para la señal de re-alimentacion utilizo un sensor de temperatura LM35.
los puntos que hay que lograr son los siguientes:
1.- tomar lectura de la temperatura.(listo)
2.- controlar la fase para la resistencia de corriente alterna.(liso)
3.- controlar la velocidad del motor de corriente directa(aun no pero es sencillo con el PWM)
4.- implementar el PID y calcular Kp,Ki y Kd.(aun no por eso lo he publicado)
la resistencia trabaja con 120v 60Hz, por lo tanto para controlar la cantidad de calor que produce es necesario el control de fase, para esto he investigado sobre el uso de los timer y las interrupciones del arduino uno, aqui dejo el enlace para los timer
http://www.avrfreaks.net/forum/tut-c-newbies-guide-avr-timers?name=PNphpBB2&file=viewtopic&t=50106
en mi parte yo no he utilizado la libreria TimerOne para el uso de los timer del arduino, si no que he usado las intrucciones que vienen en el datasheet del atmega328 como tambien he leeido el articulo de NickGammon sobre las interrupciones.
dejare aqui algunas de las intrucciones que utilice en el codigo para los timer:
OCR1A = valos con el que se compara constantemente el valor del timer.
TCNT1 = enterga el valor del timer
TCCR1B =registro en el cual se puede configurar la pre-escala, poner en stop etc.
TIMSK1 = habilita las interrupciones de comparacion, es decir, si TCNT1 = OCR1A se activa una interrupcion, tambien habilita la interrupcion de desborde del Timer.
por lo tanto yo he utilizado una pre-escala de 256, de manera que un semiciclo se ejecuta en 520(valor que se le asigna a OCR1) unidades del timer(convirtiendolo a tiempo esto es igual a 8.33 milisegundos).
entonces podemos decir que 0=100% de la energia que se entrega a la carga y 520 = 0% ,
ya que entre mas se tarde el timer (TCNT1) en alcanzar el valor de OCR1A,el angulo de disparo sera mayor y por consecuencia el angulo de conduccion sera menor.
entonces me gustaria saber si alguien me pudiera guiar para implementar o adaptar el controlador pid y tambien como ajustar los valores de Kp,Ki y Kd, por lo que he investigado seria un controlador PID discreto, lo cual lo hace un poco mas sencillo el calculo de la salida de control.
dejare mi codigo, imagenes de los circuitos de disparo y deteccion de cruce por cero,un archivo pdf donde se va construyendo un el codigo para un PID se lo agradeceria mucho
Guía-de-uso-PID-para-Arduino.pdf (512 KB)
control_PID_control_de_Fase.ino (2.76 KB)