Вы находитесь на странице: 1из 14

Max David Quispe Bonilla unac

Control de Temperatura con PIC 16F877A

OBJETIVO:

Nuestro objetivo de control es mantener un acierta magnitud dentro de un rango


preestablecido (set point) sin importar si alguna influencia externa interrumpe el
proceso.

Utilizar adecuadamente una etapa de potencia (amplificador operacional en la


configuración de amplificador restador), para conseguir que la tensión del
sensor sea proporcional a la temperatura en Celsius.

Mostrar la variación de la temperatura y temperatura ideal en un LCD con la ayuda del


PIC 16F877A.

Utilizar una etapa de potencia para poder controlar y manejar adecuadamente el motor
(ventilador) y la lámpara u foco.

Como se dijo en el preinforme el sistema consiste en un sensor de temperatura,


un microcontrolador, un teclado o pulsadores, un display de cristal líquido, y
una etapa de potencia para accionar el motor (ventilador) y la lámpara u foco;
como muestra el siguiente esquema

MATERIALES:

- Sensor de temperatura (LM 335)


- Microprocesador 16F877A
- Pantalla LCD
- Motor DC (ventilador)
- Lámpara u Foco
- Resistencias
- Potenciómetros
- Amplificador Operacional
- Driver para motor DC (L293B)

1
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

MARCO TEÓRICO

A menudo la temperatura se define como aquella propiedad que miden los


termómetros. También se introduce la temperatura basándose en alguna propiedad
termométrica, por ejemplo la expansión de un líquido, un gas, la resistencia de un
conductor, la tensión eléctrica generada por un par termoeléctrico (termocupla), etc.

En la práctica existen numerosos tipos de sensores de temperatura o termómetros


que, según la aplicación especifica, pueden ser los más adecuados.

Aplicaciones

 Para automatizar el control de la temperatura del agua en un acuario,


piscifactoría, etc, abriendo y cerrando compuertas durante unos tiempos
determinados, o conectando calentadores de agua.
 Para automatizar el control de la temperatura de productos factibles de
fermentación, abriendo y cerrando orificios de ventilación en los depósitos
donde están almacenados durante unos tiempos preestablecidos.
 Para automatizar el control de la temperatura ambiente en un invernadero.
 Para automatizar el control de la temperatura en granjas, champiñóneras, etc.
introduciendo aire frío o caliente, durante un tiempo determinado.
 Para simular el funcionamiento de un horno eléctrico, conectando una
resistencia en función de la temperatura.
 Ventilador automático en función de la temperatura.

DIAGRAMA DE BLOQUES DEL SISTEMA

Sensor de temperatura LM335

El componente electrónico LM 335 es un transductor de temperatura que proporciona


una tensión eléctrica proporcional a la temperatura Kelvin. La función de transferencia
de este sensor es: (voltios). El circuito eléctrico que se debe montar para que
funcione correctamente es:

2
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

El valor de la resistencia R es 1.96 KΩ ( pudiéndose tomar un valor ligeramente


diferente). La tensión de alimentación Vcc es de 5 voltios. La resistencia RADJ (el
potenciómetro pequeñito de color azul) sirve para ajustar la tensión V del sensor y que
se cumpla exactamente la expresión .

Para conseguir que la tensión del sensor sea proporcional a la temperatura Celsius se
emplea un amplificador operacional en la configuración de amplificador restador. El
esquema de este amplificador es:

Fig.1

La tensión de salida de este amplificador, en función de la tensión de entrada viene dada


por la expresión

En la entrada no inversora se conectará la tensión V2 del sensor, y en la entrada


inversora se conectará una tensión fija V1 para conseguir que la salida V0 del A.O. sea
proporcional a la temperatura centígrada. Con esto se tendrá

3
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

Para conocer el valor de las resistencias R1 y R2, y el de la tensión fija V1, impondremos
las siguientes condiciones:

• para T = 273ºK, haremos que VS = 0 voltios, lo que equivale a la temperatura


centígrada 0ºC.
• para T = 373ºK, haremos que VS = 10.0 voltios, lo que equivale a una
temperatura centígrada de 100ºC.

Así se obtiene el sistema de ecuaciones:

La resolución de este sistema permite conocer el valor de la relación y la tensión

V1. La solución es = 9, y V1 = 3.033 voltios. Una de las dos resistencias puede


tomarse arbitrariamente, y la otra se obtendrá después.

Primer paso: montar el sensor LM335 con su resistencia de ajuste RADJ; como se
mostró anteriormente.. Montar asimismo la resistencia R y conectar el conjunto a la
fuente.

Suponiendo que la temperatura ambiente es de 293 grados Kelvin (20 grados


centígrados), girar el tornillo de la RADJ con un destornillador, hasta conseguir que en V
se midan (con el polímetro) 2.93 voltios

Segundo paso: montar el amplificador restador como se indica en la fig. 1.

Los valores de las resistencias R1 y R2 seran:: si se toma (por ejemplo), R2 = 9.53 KΩ ,

entonces se tendrá = 1.06 KΩ . Esta resistencia la construiremos uniendo en


serie una de 825 Ω y otra de 237 Ω . Por lo tanto: R1 = 825 Ω + 237 Ω

Para conseguir la tensión V1 emplearemos una resistencia variable o potenciómetro


(colocado dentro de la caja de aluminio y provista de un botón multivuelta).

Tercer paso: Una vez realizado el montaje del esquema 1, medir la tensión V 1, que está
suministrada por el potenciómetro. Esta tensión debe valer 3.03 voltios, como se
especifica en el diseño del termómetro realizado en la introducción. En caso de no tener
este valor, girar el botón del potenciómetro para conseguirlo. En este momento el
termómetro está ajustado. Para comprobar su funcionamiento medir V2, V1 y VS. Entre
los valores de estas tensiones se debe cumplir la relación VS = V2 – 273 (sin tener en
cuenta la situación del punto decimal tanto en VS.
4
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

Diagrama de la Implementación

V0 se conecta al puerto de entrada RA0 del PIC, y este hace el trabajo ya comentado
anteriormente.

Driver L293B para el Motor DC


Este circuito integrado nos permite poder tener mas potencia y torque en nuestro motor
DC y de esta manera garantizar su adecuado funcionamiento.

Descripción de los pines del L293B

5
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

ETAPA DE POTENCIA CON SCR PARA LA LAMPARA

El SCR es un dispositivo semiconductor de 4 capas que funciona como un


conmutador casi ideal.

El símbolo y estructura del SCR son:

6
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

Analizando los diagramas: A = ánodo, G = compuerta o Gate, C = K = cátodo

Funcionamiento básico del SCR

El siguiente gráfico muestra un circuito equivalente del SCR para comprender su


funcionamiento.

Al aplicarse una corriente IG al terminal G (base de Q2 y colector de Q1), se


producen dos corrientes: IC2 = IB1.

IB1 es la corriente base del transistor Q1 y causa que exista una corriente de
colector de Q1 (IC1) que a su vez alimenta la base del transistor Q2 (IB2), este a
su vez causa más corriente en IC2, que es lo mismos que IB1 en la base de Q1, y
este proceso regenerativo se repite hasta saturar Q1 y Q2 causando el encendido
del SCR.

Los parámetros del SCR son:

- VRDM: Máximo voljaje inverso de cebado (VG = 0)


- VFOM: Máximo voltaje directo sin cebado (VG = 0)
- IF: Máxima corriente directa permitida.
- PG: Máxima disipación de potencia entre compuerta y cátodo.
- VGT-IGT: Máximo votaje o corriente requerida en la compuerta (G) para el
cebado
- IH: Mínima corriente de ánodo requerida para mantener cebado el SCR
- dv/dt: Máxima variación de voltaje sin producir cebado.
- di/dt: Máxima variación de corriente aceptada antes de destruir el SCR.

7
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

IMPLEMENTACIÓN EN EL PROTEUS:

PROGRAMA DEL PIC:


list P=16f877A ;tipo de uC
include <P16F877A.inc> ;archivo de definiciones

__CONFIG _XT_OSC & _LVP_OFF & _WDT_OFF


errorlevel -302,-305
;definicion de macros
banco1 macro
bsf STATUS,RP0
bcf STATUS,RP1
endm
banco0 macro
bcf STATUS,RP0
bcf STATUS,RP1
endm
;definicion de RAM
cblock 20h
contador
PDel0
PDel1
TEMPERATURA
VAR11
RESTADOR1

8
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

TEMP_ACTUAL
ADRESH_J
GUARDADITO
PIENSA
endc

;programa principal
org 0
BSF STATUS,RP0
MOVLW B'00000111'
MOVWF PORTB
CLRF PORTC
BCF STATUS,RP0
MOVLW B'01000001' ;P
MOVWF ADCON0 ;P
CLRF GUARDADITO
CLRF PORTC
goto inicio

inicio:
call inicio_LCD ;inicializa LCD,cursor parpadente

;ESCRIBE ARRIBA
movlw 'T' ;envia caracteres a la pantalla
call EnviaCarLCD
movlw '.'
call EnviaCarLCD
movlw 'I'
call EnviaCarLCD
movlw 'D'
call EnviaCarLCD
movlw 'E'
call EnviaCarLCD
movlw 'A'
call EnviaCarLCD
movlw 'L'
call EnviaCarLCD
movlw 0X20
call EnviaCarLCD
movlw 'T'
call EnviaCarLCD
movlw '.'
call EnviaCarLCD
movlw 'H'
call EnviaCarLCD
movlw 'O'
call EnviaCarLCD
movlw 'R'
call EnviaCarLCD
movlw 'N'
call EnviaCarLCD
movlw 'O'
call EnviaCarLCD
movlw 0X20
call EnviaCarLCD
;********************************************************************
9
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

movlw h'c0' ;establece posicion del cursor en 2a fila


call EnviaCmdLCD

MOVLW .15 ;TEMPERATURA INICIAL DEL S.POINT


MOVWF TEMPERATURA

BSF ADCON0,2 ;P
BTFSC ADCON0,2 ;P
GOTO $-1 ;P
MOVF ADRESH,W ;P
MOVWF ADRESH_J

CALL MUESTRA.S.POINT

GOTO PRINCIPAL
;***********************************************************
;"TEMPERATURA S.POINT": MUESTRA LA TEMPERATURA S.POINT Y LA
TEMPERATURA ACTUAL GUARDADO EN TEMPERATURA Y TEMP_ACTUAL

MUESTRA.S.POINT
movlw h'c0' ;establece posicion del cursor en 2a fila
call EnviaCmdLCD

movlw 0X20
call EnviaCarLCD
movlw 0X20
call EnviaCarLCD
MOVLW .50
SUBWF TEMPERATURA,W
BTFSS STATUS,Z
GOTO FINAL2
MOVLW .99
GOTO IMPRIME2
FINAL2
MOVF TEMPERATURA,W
ADDWF TEMPERATURA,W
IMPRIME2
CALL BIN_A_BCD
MOVF DECENAS,W
ADDLW '0'
call EnviaCarLCD
MOVF UNIDADES,W
ADDLW '0'
call EnviaCarLCD
movlw 0XDF
call EnviaCarLCD
movlw 'C'
call EnviaCarLCD
movlw 0X20
call EnviaCarLCD
movlw 0X20
call EnviaCarLCD
movlw 0X20
call EnviaCarLCD
movlw 0X20
call EnviaCarLCD
10
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

movlw 0X20
call EnviaCarLCD

MOVLW .50
SUBWF TEMP_ACTUAL,W
BTFSS STATUS,Z
GOTO FINAL1
MOVLW .99
GOTO IMPRIME1
FINAL1
MOVF TEMP_ACTUAL,W
ADDWF TEMP_ACTUAL,W
IMPRIME1
CALL BIN_A_BCD
MOVF DECENAS,W
ADDLW '0'
call EnviaCarLCD
MOVF UNIDADES,W
ADDLW '0'
call EnviaCarLCD
movlw 0XDF
call EnviaCarLCD
movlw 'C'
call EnviaCarLCD

RETURN
;***********************************************************

PRINCIPAL
BTFSC PORTB,2
GOTO S.POINT
GOTO TEMPERATURA_ACTUALIZADA

LEDS
MOVLW .1
SUBWF TEMPERATURA,W
MOVWF PIENSA
MOVF TEMP_ACTUAL,W
SUBWF PIENSA,W
BTFSC STATUS,C
GOTO LED_BAJA
MOVLW .20
ADDWF TEMPERATURA,W
SUBWF TEMP_ACTUAL,W
BTFSC STATUS,C
GOTO LED_ALTO
GOTO LED_NORMAL
LED_BAJA
MOVLW B'01000001'
MOVWF PORTC
GOTO PRINCIPAL
LED_NORMAL
MOVLW B'00100010'
MOVWF PORTC
GOTO PRINCIPAL
LED_ALTO
11
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

MOVLW B'10000100'
MOVWF PORTC
GOTO PRINCIPAL
;***********************************************************
;ESTA RUTINA SOLO GENERA LA VARIANZA DEL S.POINT

S.POINT
CALL RETARDO
BTFSC PORTB,2
GOTO $-1
SALTO
BTFSC PORTB,0
GOTO MENOS
BTFSC PORTB,1
GOTO MAS
BTFSC PORTB,2
GOTO FIN.S.POINT
GOTO SALTO
MENOS
CALL RETARDO
DECF TEMPERATURA,F
CALL MUESTRA.S.POINT
CALL LEDS_TIME_REAL
BTFSC PORTB,0
GOTO $-1
GOTO SALTO
MAS
CALL RETARDO
INCF TEMPERATURA,F
CALL MUESTRA.S.POINT
CALL LEDS_TIME_REAL
BTFSC PORTB,1
GOTO $-1
GOTO SALTO
FIN.S.POINT
CALL RETARDO
BTFSS PORTB,2
GOTO PRINCIPAL
GOTO FIN.S.POINT
;******************************************************************

;ESTA RUTINA SOLO CONVIERTE ADRESH_J A GRADOS CENTIGRADOS EN EL


REGISTRO TEMP_ACTUAL

TEMPERATURA_ACTUALIZADA
BSF ADCON0,2 ;P
BTFSC ADCON0,2 ;P
GOTO $-1 ;P
MOVF ADRESH,W ;P
MOVWF ADRESH_J
;AQUI SE DEBERIA PONER UN RETARDO
CALL RETARDO ;agregado
MOVLW .50
MOVWF VAR11
MOVLW .250
MOVWF RESTADOR1
12
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

MOVLW .50
MOVWF TEMP_ACTUAL
BUCLE
MOVF RESTADOR1,W
SUBWF ADRESH_J,W
BTFSC STATUS,C
GOTO FIN_BUCLE
DECF TEMP_ACTUAL,F
MOVLW .5
SUBWF RESTADOR1,F
DECFSZ VAR11,F
GOTO BUCLE
GOTO FIN_BUCLE
FIN_BUCLE
MOVF TEMP_ACTUAL,W
SUBWF GUARDADITO,W
BTFSC STATUS,Z
GOTO LEDS
MOVF TEMP_ACTUAL,W
MOVWF GUARDADITO
CALL MUESTRA.S.POINT
GOTO LEDS

;**************************************************************************
;PROGRAMA QUE CONVIERTE UN NUMERO DECIMAL A BCD
CBLOCK
CENTENAS
DECENAS
UNIDADES
ENDC
BIN_A_BCD
CLRF CENTENAS
CLRF DECENAS

MOVWF UNIDADES
BCD_RESTA
MOVLW .10
SUBWF UNIDADES,W
BTFSS STATUS,C
GOTO BIN_BCD_FIN
BCD_DECENA
MOVWF UNIDADES
INCF DECENAS,F
MOVLW .10
SUBWF DECENAS,W
BTFSS STATUS,C
GOTO BCD_RESTA
RETURN
;********************************************************************
;RETARDO DE 10 MILISEGUNDO PARA PULSADORES

RETARDO
movlw .8 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .249 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
13
ELECTRONICA DE POTENCIA I
Max David Quispe Bonilla unac

PLoop2 clrwdt ; 1 clear watchdog


clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;*********************************************************************
;ESTA PROGRAMA MUESTRA LOS CAMBIOS DE LOS LEDS,VENTILADOR Y
CALEFACTOR EN PROCESO DE CAMBIO DE S.POINT

LEDS_TIME_REAL
MOVLW .1
SUBWF TEMPERATURA,W
MOVWF PIENSA
MOVF TEMP_ACTUAL,W
SUBWF PIENSA,W
BTFSC STATUS,C
GOTO LED_BAJA_2
MOVLW .20
ADDWF TEMPERATURA,W
SUBWF TEMP_ACTUAL,W
BTFSC STATUS,C
GOTO LED_ALTO_2
GOTO LED_NORMAL_2

LED_BAJA_2
MOVLW B'01000001'
MOVWF PORTC
RETURN
LED_NORMAL_2
MOVLW B'00100010'
MOVWF PORTC
RETURN
LED_ALTO_2
MOVLW B'10000100'
MOVWF PORTC
RETURN

include "lcd.asm" ;libreria de funciones de LCD


end

14
ELECTRONICA DE POTENCIA I