En este caso, el controlador de
temperatura tendrá el papel de calefactor; ya que cuando el ambiente disminuya su
temperatura respecto de la mínima del rango, el controlador se activará y lo calentará
hasta que la temperatura regrese al intervalo. Ahora, cuando el sector aumente
su temperatura respecto de la máxima del rango, el circuito se desactivará
dejando de calentarlo para que éste se enfríe con el ambiente.
Para proveer de calor el sector
mencionado se utilizará un bombillo incandescente el cuál se encenderá y
apagará según sea el caso.
Etapas
Sensor de temperatura y acondicionamiento:
El LM35 es un sensor de temperatura
que, según la configuración utilizada, entrega en su salida 10mV/oC;
es decir, si la temperatura es de 25oC entonces la salida será 0.25
V.
El ADC del microcontrolador trabaja
en el rango 0 – 5V, por lo tanto, para aprovechar mejor su sensibilidad, debemos
amplificar la señal del LM35 10 veces. Es por ello que se utiliza el
amplificador activo que puede implementarse en la configuración mostrada o
utilizar la configuración básica con un LM741.
Referencia
Este potenciómetro se utilizará para
elegir la temperatura de referencia que se requiera mantener. También irá
conectado a uno de los pines ADC del microcontrolador.
Control
El esquema muestra las conexiones de
los pines del microcontrolador.
Circuito de potencia
El diodo D1 se utiliza para proteger
al microcontrolador. El MOC3031 es un optotriac que enviará una señal de
activación al triac U6 cuando la salida del circuito de control sea 1 lógico (5
V), lo cual hará que el bombillo se encienda; caso contrario, si la salida del
circuito de control es 0 lógico (0 V), el bombillo no se encenderá.
Circuito Completo
Programa en Basic
'configuracion de microcontrolador $regfile = "m8def.dat" 'Microcontrolador a utilizar $crystal = 8000000 'Frecuencia de oscilador interno =8 MHz $hwstack = 32 'Hardware stack $swstack = 10 'Software stack Config Timer1 = Timer , Prescale = 64 'Configuracion de TIMER1 F=Fosc/64 Config Portb = Output 'Puerto B como salida Config Adc = Single , Prescaler = Auto 'Configuracion de ADC 'Definicion de variables Dim Vsensor As Word Dim Vref As Word Dim Tmin As Single Dim Tmax As Single Dim Tempref As Single Dim Temp As Single 'Habilitacion de interrupcion por comparacion Enable Interrupts On Compare1a Interrupcion Enable Compare1a 'Inicializacion de registros para comparacion Timer1 = 0 Compare1a = 62500 'Programa principal Do nop 'Ninguna operacion Loop 'Rutina de interrupcion Interrupcion: 'Rutina de ADC Start Adc 'Iniciar ADC Vsensor = Getadc(1) 'Vsensor= Canal 1 de ADC Vref = Getadc(0) 'Vref= Canal 0 de ADC Stop Adc 'Convertir valor obtenido de ADC a valor de temperatura Temp = Vsensor / 1023 Temp = Temp * 50 Tempref = Vref / 1023 Tempref = Tempref * 50 'Establecimiento de rango de temperatura Tmin = Tempref - .5 Tmax = Tempref + .5 'Control de temperatura en rango Tempref +/- 2 If Temp < Tmin Then 'Si Temp<Tmin encender foco Portb.6 = 1 Portb.5 = 0 Elseif Temp > Tmax Then 'Si Temp>Tmax apagar foco Portb.6 = 0 Portb.5 = 0 If Temp > 32 Then Portb.5 = 1 End If End If 'Reinicializacion de registros para comparacion Timer1 = 0 Return 'Retorno de interrupción End 'Fin de programa
Funcionamiento
El funcionamiento del programa es el siguiente:
- Se establece una temperatura de referencia mediante el potenciómetro RV2.
- la temperatura se mantendrá en el rango Trmpref +/- 0.1ºC.
- La rutina principal no realiza ninguna operación, en este caso, pero si se desea se podría mantener al microcontrolador realizando alguna tarea y el control de temperatura sólo será una rutina de interrupción que no lo mantendrá ocupado todo el tiempo.
- La rutina de interrupción se ejcutará cada 0.5s, hace falta calcular el valor en Comapare1a:
La frecuencia del TIMER1 es:
f=fosc/64=8 MHz / 64 = 125 KHz
La cuenta en el TIMER1debe llegar hasta un cierto valor, inicializado en COMPARE1A,en 0.5 s
para que se ejecute la rutina de interrupción.
N·T = N / f = 0.5 s
f=fosc/64=8 MHz / 64 = 125 KHz
La cuenta en el TIMER1debe llegar hasta un cierto valor, inicializado en COMPARE1A,en 0.5 s
para que se ejecute la rutina de interrupción.
N·T = N / f = 0.5 s
N = 0.5 · f=0.5 · 125000
N = 62500
- Se sensa la temperatura de referencia y de salida del sistema. El ADC lo convierte a un valor digital de 0 - 1023. Es necesario llevarlo al rango 0 - 50ºC:
Vadc=Vin · 1023 / 5
Vin = 5·Vadc / 1023
En este caso el valor numérico de
temperatura es 10 veces el valor numérico de voltaje,
es decir:
es decir:
Temp = 10· Vin
Por lo tanto para obtener el valor
numérico de temperatura se realizan las
operaciones:
Temp=50·Vadc/1023
- En la rutina de interrupción se observa que se crea un rango Tmin - Tmax. en el que se quiere mantener al sistema.
Si Temp<Tmin entonces se enciende el bombillo para que actúe como calefactor.
Si Temp>Tmax entonces se apaga el bombillo para que el ambiente baje de temperatura.
El proceso se repite indefinidamente, pero si por alguna razón se sobrepasara una temperatura máxima, en este caso 32ºC, se activará una alarma en el pin 5 del Puerto B.
Hola !! tu proyecto esta genial lo armare y promto te dire que tal me funciono !!!!!
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarComo lo utilizo con el atmega 8515?
ResponderEliminarComo lo utilizo con el atmega 8515?
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarQue programa utilizas para realizar los graficos de los circuitos?
ResponderEliminar