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

Escuela Superior Politcnica del Litoral

Facultad de Ingeniera en Electricidad y Computacin




Proyecto:
Control automtico de temperatura y trasmitir la temperatura y
mostrarla en un LCD


Paralelo: 03


Profesor: Ing. Efrein Herrera

II Trmino 2010













INTRODUCCION
En nuestro entorno que vivimos todo depende los fenmenos fsicos
naturales, el cambio de estos fenmenos fsicos por lo general se
quieren controlar y mostrar. Para nuestro proyecto el fenmeno
fsico a controlar y mostrar es la temperatura.
La electrnica puede ser utilizada para facilitar la vida del
hombre. Por ejemplo, los sistemas de control remoto evitan que el
usuario se tenga que desplazar hasta alguna mquina para cambiar
algn parmetro: tambin los sistemas modernos de comunicacin
permiten hablar con otras personas en cualquier lugar del mundo,
etc.
Para la comunicacin inalmbrica existen varias formas de las
cuales las ms conocidas son, infrarrojas, radiofrecuencia,
Bluetooth. Para este proyecto vamos a utilizar la va infrarrojos
el cual debemos utilizar el protocolo de comunicacin correcta.
Este protocolo debe modular la informacin sobre una portadora y
transmitir la seal modulada por algn sistema en el que el
receptor sea capaz de obtener nuevamente la informacin, esto nos
permitir enviar informacin (temperatura) constante de manera
inalmbrica y mostrarla al usuario.
Para controlar la temperatura nos vamos a utilizar un ventilador
DC el cual encender automticamente en el momento en que el
sensor detecte una temperatura mayor a la del ambiente
OBJETIVOS

Utilizar los conocimientos obtenidos en laboratorio de
electrnica A para armar, analizar y comprender un proyecto
funcional aplicado a nuestra carrera.

Disear e implementar un circuito electrnico para poder
transmitir la temperatura obtenida del sensor sin necesidad
de estar cerca de la fuente que lo produce o que exista un
componente fsico que una el receptor con el emisor.

Utilizar el programa PROTEUS para las simulaciones
respectivas y comparar los resultados que ofrece el
simulador con los resultados experimentales obtenidos.

Establecer un alcance lo suficientemente eficaz entre el
receptor y el emisor que permita el buen uso de nuestro
circuito electrnico.

Poder controlar la temperatura automticamente si esta
sobrepasa la temperatura ambiente.


DIAGRAMA DE BLOQUES


















ANLISIS TERICO

ETAPA DE TRANSMISIN.
Para esta etapa utilizamos el PROTOCOLO RC5.
El protocolo RC5, es un tipo de modulacin que utilizan los
controles remotos para enviar la informacin por va
infrarrojo ya sea a televisores o equipos de audio, el cual
Pic16f887 Sensor
Lm35
Pic16f887
LCD
EMISOR
RECEPTOR
LCD
Fan
puede ser adaptado en cualquier sistema que requiera un
manejo de equipos a distancia.
El protocolo consiste en un tren de pulsos cuadrados de 36Khz
(la denominada "portadora"). Cada "1" esta codificado como
889 microsegundos de pulsos, y 889 microsegundos de
"silencio". El "0" se codifica como 889 microsegundos de
"silencio" y 889 microsegundos de pulsos. La longitud total
del "0" y del "1" es idntica, y son 1778 microsegundos (o
1,778 milisegundos). El grafico siguiente ilustra claramente
esto:

Dentro de un bit "caben" exactamente 64 pulsos, si la
portadora es de 36KHz. Es decir, el periodo de una seal de
36KHz es de 1/36.000 = 27.78125... us, que multiplicado por
64 da exactamente 1778 us. Este es un buen dato para tener en
cuenta el diseo del software de nuestro receptor.
Para que el receptor sepa que le esta "diciendo" el emisor
remoto, debe poder interpretar las "tramas" de ceros y unos
que este le enva. Cada trama es un comando, y est compuesto
por 14 bits (15 en el caso del RC5X). De esos 14 bits, los
primeros 2 bits son de "start" (arranque): siempre son "1".
El tercer bit se invierte cada vez que una tecla se pulsa y
se suelta nuevamente, para poder distinguir si una tecla
permanece presionada o se ha presionado ms de una vez. Los
siguientes 5 bits corresponden a la direccin del dispositivo
receptor, y los ltimos 6 al comando trasmitido. Esto permite
utilizar un mismo control remoto para comandar diferentes
equipos, simplemente asignando a cada uno un cdigo de
direccin diferente.


Una trama RC5 completa

CIRCUITO EMISOR.











El circuito emisor trabaja de la siguiente forma el sensor (lm35)
nos convierte la seal de temperatura a una seal de voltaje,
este sensor tiene una relacin lineal de (10m [V/ C]), a
temperatura ambiente (28 C ) el voltaje del salida del sensor
ser 0.28 [V], esta seal del sensor es enviada directamente al
pic16f887 el cual tiene un convertidor (analgico - digital)
integrado con una resolucin de 10 bits.
Para nuestro proyecto decimos utilizar el programa MikroC el cual
nos permite manejar todas las funciones que necesitamos utilizar
en el pic. Una vez obtenida la seal del seor y convertida a
digital, por medio de la programacin pudimos establecer un rango
de temperaturas para esto utilizamos tres leds.
R7
3.3k
24.0
3
1
VOUT
2
U2
LM35
RE3/MCLR/VPP
1
RA1/AN1/C12IN1-
3
RA2/AN2/VREF-/CVREF/C2IN+
4
RA4/T0CKI/C1OUT
6
RA5/AN4/SS/C2OUT
7
RB0/AN12/INT
33
RB1/AN10/C12IN3-
34
RB2/AN8
35
RA7/OSC1/CLKIN
13
RA6/OSC2/CLKOUT
14
RD5/P1B
28
RD6/P1C
29
RD7/P1D
30
RC4/SDI/SDA
23
RC5/SDO
24
RC3/SCK/SCL
18
RC2/P1A/CCP1
17
RC1/T1OSI/CCP2
16
RC0/T1OSO/T1CKI
15
RB7/ICSPDAT
40
RB6/ICSPCLK
39
RB5/AN13/T1G
38
RB4/AN11
37
RD3
22
RD2
21
RD1
20
RD0
19
RC7/RX/DT
26
RC6/TX/CK
25
RE2/AN7
10
RE1/AN6
9
RE0/AN5
8
RA3/AN3/VREF+/C1IN+
5
RD4
27
RB3/AN9/PGM/C12IN2-
36
RA0/AN0/ULPWU/C12IN0-
2
U4
PIC16F887
R11
100
Q2
2N3904
A
K
D3
LED-YELLOW
A K
D4
LED-YELLOW
A K
D5
LED-YELLOW
A K
D6
LED-YELLOW
R13
330
R14
330
R15
330
X1
CRYSTAL
C1
1nF
C2
1nF
1
2
J1
TBLOCK-I2
1
2
J2
TBLOCK-I2
INDICADORES DE NIVEL
SENSOR
LED EMISOR
Los leds son indicadores de temperatura los cuales prendern de
acuerdo al siguiente rango:
Led verde 0<T c<25
Led amarillo 26<T c<45
Led rojo T c>46

Para la trasmisin al pic en este circuito lo utilizamos como un
modulador el cual enviara la informacin obtenida por el sensor
convertido en digital, por medio de la programacin podemos
enviar la informacin estableciendo la plataforma del protocolo
RC5.

CIRCUITO RECEPTOR.

En esta etapa se recibe la seal modulada por el pic que tenemos
en el emisor y atreves del led receptor la demodula y esta
seal digital, la recibe el pic que tenemos en el receptor. Para
evitar posibles ruidos a la seal pusimos un capacitor a la
entrada.
Una vez obtenida la seal del emisor por medio de programacin
podemos manejar la informacin que en nuestro caso es la
RE3/MCLR/VPP
1
RA1/AN1/C12IN1-
3
RA2/AN2/VREF-/CVREF/C2IN+
4
RA4/T0CKI/C1OUT
6
RA5/AN4/SS/C2OUT
7
RB0/AN12/INT
33
RB1/AN10/C12IN3-
34
RB2/AN8
35
RA7/OSC1/CLKIN
13
RA6/OSC2/CLKOUT
14
RD5/P1B
28
RD6/P1C
29
RD7/P1D
30
RC4/SDI/SDA
23
RC5/SDO
24
RC3/SCK/SCL
18
RC2/P1A/CCP1
17
RC1/T1OSI/CCP2
16
RC0/T1OSO/T1CKI
15
RB7/ICSPDAT
40
RB6/ICSPCLK
39
RB5/AN13/T1G
38
RB4/AN11
37
RD3
22
RD2
21
RD1
20
RD0
19
RC7/RX/DT
26
RC6/TX/CK
25
RE2/AN7
10
RE1/AN6
9
RE0/AN5
8
RA3/AN3/VREF+/C1IN+
5
RD4
27
RB3/AN9/PGM/C12IN2-
36
RA0/AN0/ULPWU/C12IN0-
2
U1
PIC16F887
D7
14
D6
13
D5
12
D4
11
D3
10
D2
9
D1
8
D0
7
E
6
RW
5
RS
4
VSS
1
VDD
2
VEE
3
LCD2
LM016L
R1
3.3k
R2
470
R3
330
A
K
D1
LED-YELLOW
1
2
J1
TBLOCK-I2
29.0
3
1
VOUT
2
U2
LM35
C?
1nF
LED RECEPTOR
INDICADOR DE TRANSMISION
PANTALLA LCD
temperatura y poder mostrarla en la pantalla LCD . En la pantalla
nos mostrara la temperatura, aparte constantemente nos mostrara
un nivel en el cual est la temperatura.


Los niveles de temperatura son:
Nivel T1 0<T c<25
Nivel T2 26<T c<45
Nivel T3 T c>46

Etapa de Control de temperatura.
Circuito de control de temperatura



En esta etapa del proyecto podemos controlar la temperatura de
tal forma de que si la temperatura aumenta y es mayor que la
temperatura ambiente el ventilador comenzara a funcionar y su
velocidad aumentara, para esto utilizamos la seal del sensor
(Lm35) y de 4 OPAMS (Lm325) .
3
2
1
4
1
1
U1:A
LM324
5
6
7
4
1
1
U1:B
LM324
10
9
8
4
1
1
U1:C
LM324
12
13
14
4
1
1
U1:D
LM324
R4
10k
1
0
0
%
1
2
3
RV2
1k
R5
10k
R6
1M
D2
1N4733A
R7
3.3k
R8
10k
R10
10k
R1
150k
R2
20k
R3
10k
A K
D1
Q1
BC549
R9
80
12
1
2
1
2
J?
TBLOCK-I2
R?
10k
VENTILADOR
SEAL DEL SENSOR
LED INDICADOR
DE AUMENTO DE
TEMPERATURA
La seal de voltaje del seor es muy pequea entonces por medio
de los amplificadores operacionales usamos la configuracin
amplificador no inversor (U1: D) como podemos ver en la grfica
y con lo cual aumentamos aproximadamente 9 veces la seal.
Ejemplo si la temperatura es 28 C el Vout del sensor ser de
0.28 [V]y despus de la amplificacin con una ganancia de
aproximadamente de 9 el voltaje final ser de 2.52 [V]
Una vez obtenida la seal ya amplificada debemos restarle un
voltaje fijo similar a la temperatura ambiente (2.5 [voltios]),
para esto utilizamos un diodo zener y luego debemos amplificar
ese voltaje final (Vsensor -Vzener), este procedimiento se
realiza para cuando se prenda el circuito y si estamos a una
temperatura adecuada (ambiente) el ventilador no funcione o la
velocidad este bien baja.

Clculos Numricos
Anlisis de la primera Etapa obtencin de la temperatura






Por medio del sensor obtenemos un voltaje de salida

el cual
estar entre

y este voltaje representara la


temperatura.
Para la conversin de este voltaje de analgico a digital
utilizamos el adc del pic16f887. La conversin esta representada
de la siguiente forma:


V
in
= Voltaje de entrada analgico
V
ref
= Voltaje de referencia
n = resolucin de la conversin del pic

INT(N) es la parte entera de N en base 10 que luego se convierte
a binario para determinar la salida actual del ADC.

Ejemplo si la temperatura es de

= 0.28[V]
La conversin es


As es como obtenemos el dato analgico y lo convertimos a
digital. Una vez obtenido el dato digital lo podemos usar de la
manera ms conveniente por medio de la programacin del pic, la
programacin del pic est en el anexo.
Anlisis de la segunda Etapa <<Recepcin y mostrar en el LCD>>
En esta segunda parte el pic lo hace casi todo por medio de la
programacin obtenemos el dato constantemente y lo utilizamos
para mostrarlo en el LCD y los niveles de temperatura. En el
anexo esta la programacin.
Anlisis de la Tercera Etapa <<Controlador de temperatura>>

Primera Etapa
Para el controlador de temperatura primero la pequea seal del
sensor (lm35) el cual est en el orden de los mili voltios con
una ganancia aproximadamente de 9, para esto utilizamos el
amplificador no inversor.





I3






Segunda Etapa
Una vez obtenida amplificada la seal de voltaje que representa
la temperatura utilizamos el amplificador de instrumentacin el
cual va a restar dos voltajes y multiplicarlo por un factor



I2
I1

+ *

*(

*(


Utilizamos la diferencia de voltajes para que el ventilador no
encienda inmediatamente cuando prendemos el circuito ya que
regularmente estamos a temperatura ambiente lo cual el voltaje
del zener aproximadamente nos ayuda a representarlo.
Tercera Etapa


A K
D1
Q1
BC549
R9
132
VENTILADOR
LED INDICADOR
DE AUMENTO DE
TEMPERATURA
+
8
8
.
8
k
R
P
M

)
En esta etapa el ventilador enciende y aumenta la velocidad
dependiendo de la temperatura. Si la temperatura se eleva despus
de pasar todas las etapas anteriores entonces el

va aumentar
y la

de tal manera que pueda polarizar la base y aumentar la


potencia del ventilador .El transistor en este caso lo utilizamos
como un switch y as el ventilador pueda funcionar y aumentar la
velocidad.
CALCULO DE ERRORES

Temperatura obtenida del sensor(10mV/ c)
TERICO(V) SIMULADO(V) REAL(V) %ERROR
Vout 0.28 0.28 0.293 4.6

<<Temperatura real seria del ambiente 28 c su equivalente a
voltaje seria 0.28 >>


Opamp (1 Parte) amplificador no inversor
TERICO(V) SIMULADO(V) REAL(V) %ERROR
V+ 0.28 0.28 0.293 4.6
V- 0.28 0.28 0.293 4.6
Vo 2.38 2.38 2.47 3.78



Opamp(2 Parte) amplificador instrumentacion
TERICO(V) SIMULADO(V) REAL(V) %ERROR
V2 2.38 2.38 2.47 3.78
V1 2.1 2.1 2.05 2.38
Vo 5.88 5.88 5.61 4.59




SIMULACIONES

Circuito emisor














R7
3.3k
24.0
3
1
VOUT
2
U2
LM35
RE3/MCLR/VPP
1
RA1/AN1/C12IN1-
3
RA2/AN2/VREF-/CVREF/C2IN+
4
RA4/T0CKI/C1OUT
6
RA5/AN4/SS/C2OUT
7
RB0/AN12/INT
33
RB1/AN10/C12IN3-
34
RB2/AN8
35
RA7/OSC1/CLKIN
13
RA6/OSC2/CLKOUT
14
RD5/P1B
28
RD6/P1C
29
RD7/P1D
30
RC4/SDI/SDA
23
RC5/SDO
24
RC3/SCK/SCL
18
RC2/P1A/CCP1
17
RC1/T1OSI/CCP2
16
RC0/T1OSO/T1CKI
15
RB7/ICSPDAT
40
RB6/ICSPCLK
39
RB5/AN13/T1G
38
RB4/AN11
37
RD3
22
RD2
21
RD1
20
RD0
19
RC7/RX/DT
26
RC6/TX/CK
25
RE2/AN7
10
RE1/AN6
9
RE0/AN5
8
RA3/AN3/VREF+/C1IN+
5
RD4
27
RB3/AN9/PGM/C12IN2-
36
RA0/AN0/ULPWU/C12IN0-
2
U4
PIC16F887
R11
100
Q2
2N3904
A
K
D3
LED-YELLOW
A K
D4
LED-YELLOW
A K
D5
LED-YELLOW
A K
D6
LED-YELLOW
R13
330
R14
330
R15
330
X1
CRYSTAL
C1
1nF
C2
1nF
1
2
J1
TBLOCK-I2
1
2
J2
TBLOCK-I2
INDICADORES DE NIVEL
SENSOR
LED EMISOR
A
B
C
D
Circuito receptor















Controlador de temperatura
RE3/MCLR/VPP
1
RA1/AN1/C12IN1-
3
RA2/AN2/VREF-/CVREF/C2IN+
4
RA4/T0CKI/C1OUT
6
RA5/AN4/SS/C2OUT
7
RB0/AN12/INT
33
RB1/AN10/C12IN3-
34
RB2/AN8
35
RA7/OSC1/CLKIN
13
RA6/OSC2/CLKOUT
14
RD5/P1B
28
RD6/P1C
29
RD7/P1D
30
RC4/SDI/SDA
23
RC5/SDO
24
RC3/SCK/SCL
18
RC2/P1A/CCP1
17
RC1/T1OSI/CCP2
16
RC0/T1OSO/T1CKI
15
RB7/ICSPDAT
40
RB6/ICSPCLK
39
RB5/AN13/T1G
38
RB4/AN11
37
RD3
22
RD2
21
RD1
20
RD0
19
RC7/RX/DT
26
RC6/TX/CK
25
RE2/AN7
10
RE1/AN6
9
RE0/AN5
8
RA3/AN3/VREF+/C1IN+
5
RD4
27
RB3/AN9/PGM/C12IN2-
36
RA0/AN0/ULPWU/C12IN0-
2
U1
PIC16F887
R1
3.30k
R2
4.70k
R3
330
A K D1
LED-YELLOW
D
7
1
4
D
6
1
3
D
5
1
2
D
4
1
1
D
3
1
0
D
2
9
D
1
8
D
0
7
E
6
R
W
5
R
S
4
V
S
S
1
V
D
D
2
V
E
E
3
LCD?
LM016L
seal enviada del emisor

















3
2
1
4
1
1
U1:A
LM324
5
6
7
4
1
1
U1:B
LM324
10
9
8
4
1
1
U1:C
LM324
12
13
14
4
1
1
U1:D
LM324
R4
10k
1
0
0
%
1
2
3
RV2
1k
R5
10k
R6
1M
D2
1N4733A
R7
3.3k
R8
10k
R10
10k
+12
R1
150k
R2
20k
R3
10k
A K
D1
Q1
BC549
R9
80
R?
75
VENTILADOR
SEAL DEL SENSOR
LED INDICADOR
DE AUMENTO DE
TEMPERATURA
29.0
3
1
VOUT
2
U?
LM35
k
R
P
M
+
0
.
9
4
Volts
+7.32
TABLA DE COMPONENTES Y PRECIOS.
Lista de materiales del emisor
Cant. Artculo
Precio
unitario Cantidad total
4 Resistores $
0,05
$
0,20
2 Capacitores $
0,10
$
0,20
3 D1 Led
rojo/amarillo/verde
$
0,10
$
0,30
1 Transistor $
0,15
$
0,15
1 fototransistor $
1,50
$
1,50
2 Borneras (2 tornillos) $
0,16
$
0,32
1 Pic 16F887 $
4,50
$
4,50
1 Lm35 $
6,00
$
6,00
1 Cristal de cuarzo $
1,00
$
1,00

Subtotal 1
$
14,17







Materiales generales
Estao (1m) $
0,25
Pasta para soldar $
2,00
Circuito impreso $







Lista de materiales del receptor

Cant. Artculo
Precio
unitario Cantidad total
2 Resistores
$
0,05
$
0,10
1 Capacitores
$
0,10
$
0,10
1 Pic 16f887
$
4,50
$
4,50
1 Pantalla Lcd 16x2 $
10,00
$
10,00
1 Borneras (2 tornillos) $
0,16
$
0,16
1 receptor $
3,00
$
3,00
1 Diodo Led $
0,10
$
0,10

Subtotal 2
$
17 ,96







(emisor y receptor,
control de
temperatura)
13,80
Subtotal 3 $ 16,05
Lista de materiales del controlador de temperatura
Cant. Artculo
Precio
unitario Cantidad total
10 Resistores
$
0,05
$
0,50
1 transistor
$
0,15
$
0,15
1 Potenciometro
$
0,20
$
0,20
1 Lm325 $
0,30
$
0,30
3 Borneras (2 tornillos) $
0,16
$
0,48
1 Diodo
zener
$
0,10
$
0,10
1 Diodo Led $
0,10
$
0,10
1 Ventilador DC
12v(prueba)
$
3,00
$
3,00

Subtotal 2
$
4 ,83


Total: $ 53,01












IMPRESO DEL PCB

Circuito emisor








Circuito receptor









Circuito controlador de temperatura








OBSERVACIONES.
- Para obtener una mejor transmisin, se utiliz para el
emisor un foto diodo de muy bajas prdidas, y para el
receptor se utiliz un foto transistor con recepcin en
forma de radar, esto es para que tenga un gran alcance la
transmisin. Cabe recalcar que la frecuencia de la emisin
es de aproximadamente 40Khz.

- Se separ la emisin del valor de temperatura del circuito
de activacin del ventilador, para que facilite el manejo de
los mismos, debido a que cada circuito trabaja con fuentes
de voltaje de diferentes valores y el diseo en el PCB se
tornaba muy complejo.

- Se utiliz un led en la seccin de recepcin de la seal de
temperatura, esto es solo para comprobar que la transmisin
se est llevando a efecto, as mismo se usa un led para
indicar la intensidad o la potencia en la que va a estar
funcionando el ventilador.


RECOMENDACIONES
- Al usar el PIC 16F887, se recomienda polarizarlos con un
voltaje mximo de 5 voltios, aunque el datasheet nos
informa que estn diseados o capacitados para que soporten
voltajes de hasta 10 voltios. As mismo ver el datasheet
para hacer las debidas conexiones de polarizacin, de
entrada y salida de seales, ya que estos PIC tienen 40
conexiones posibles.

- En este trabajo utilizamos una pantalla LCD de 16x2, su
conexin es algo tediosa al PIC, ya que se necesita saber
cules son los pines de polarizacin, de entrada y de salida
de dato, adems de la intensidad de luz que se quiera
observar en el mismo, se recomienda bajar de internet la
informacin sobre el manejo de este LCD, y tambin dejar la
intensidad de luz en un solo valor.

- Al momento de hacer el PCB, se recomienda usar borneras para
las debidas fuentes de voltaje, en nuestro caso, tambin
para la conexin del ventilador, y si es posible, para los
elementos que tienen precios un poco elevados. Tambin
utilizar socket para los PIC, si se descomponen solo es de
retirarlo y poner otro.


CONCLUSIONES
- En este proyecto podemos ver el manejo del uso de la
transmisin de datos va luz infrarroja, en nuestro caso, la
distancia o alcance que se presenta en este caso, depende no
solo de la corriente y voltaje en los diodos o transmisores
infrarrojos, sino tambin de la frecuencia que se module el
dato a interpretar.

- Este proyecto interpreta la lectura del valor de
temperatura, pero se puede usar el mismo para indicar
cualquier otro fenmeno fsico, es decir, se puede usar la
misma base de funcionabilidad de este proyecto para indicar
no solo temperatura, sino presin, velocidad, humedad,
altitud, intensidad de luz, etc.

- Como toda transmisin de seales, aparece la seal no
deseada que es el ruido, debido a que usamos diodos y
transistores infrarrojos de muy buena calidad, la
transmisin no tiene mucha prdida, as que, para
optimizarlo usamos capacitores, lo cual nos hizo muy
despreciable el ruido.

- Para una buena amplificacin de voltaje, la opcin ms
favorable es utilizar OPAMPS, ya que tienen muy poca
prdidas y no hay mucho aumento de corriente, dependiendo
del caso, en el nuestro, utilizamos una configuracin de
OPAMPS conocida como LA INSTRUMENTAL, la cual nos result
muy ptima, ya que tiene algunas ventajas de ms, que una
simple configuracin de AMPLIFICACIN INVERSOR o NO
INVERSOR.





APLICACIONES.
- Para controlar la ventilacin de alguna habitacin u oficina
automticamente, ahora que se presentan pocas de mucho
calor, esta sera una buena opcin, para que uno no est
pendiente del ventilador en prenderlo o apagarlo.

- Si necesita saber a cunto se est de temperatura en algn
lugar de la casa o local, para as controlar algn
dispositivo de refrigeracin.




















ANEXO
HOJAS DE ESPECIFICACIONES DE COMPONENTES.
PIC 16F887.
























LM35

















































LM324






























LCD 16X2

















Cdigo Emisor.

/*PROGRAMADORES: Antonio Paucar Niola
Diego Cadena Avila */

//************************************************************************

void escribir_bit(int valor);

char botton;

unsigned int adc_rd,ch;
/*
El protocolo de los controles remotos: Philips RC-5

La longitud completa de la trama es igual a 14 * 1.778 us =
24.892 us. Si la tecla
se mantiene presionada, la trama se reenva continuamente, pero
con una pausa de
equivalente a 50 bits ( 50 x 1.778 us = 88.900us) entre una y
otra transmisin.

Enrealidad hay 64 bits antes que halla una palabra completa, eso
quiere decir que
se a enviado el dato correctamente.
*/

void main() {
// CONFIGURACION DE PUERTOS
////////////////////////////////////////////////////
TRISA= 0X01; // CONFIGURA TODA LA PUERTA A COMO SALIDA
PORTA= 0X00; //
TRISB= 0X00; // CONFIGURA TODA LA PUERTA B COMO SALIDA
PORTB= 0X00; //
TRISC= 0X00; // CONFIGURA TODA LA PUERTA B COMO SALIDA
PORTC= 0X00;
TRISD= 0X00; // CONFIGURA TODA LA PUERTA B COMO SALIDA
PORTD= 0X00;
// ANALOG SELECT REGISTER
//////////////////////////////////////////////////////
ANSEL= 0X01; // ANS COMO DIGITAL LOS BITS 0-7
ANSELH= 0X00; // ANS COMO DIGITAL LOS BITS 8-13
/////////////////////////////////////////////////////////////////
///////////////
botton=0x00;
while(1){
adc_rd = ADC_read(0);
ch = (adc_rd *100/234);
portb=ch;
botton = ch;
//PROGRAMACION DE LOS LED
if(ch<=0x19)
{
PORTD.F0 =1 ;
PORTD.F1 =0 ;
PORTD.F2 =0 ;
}
if
(ch>0x19&&ch<=0x2D)
{
PORTD.F0 =0;
PORTD.F1 =1;
PORTD.F2 =0;
}
if(ch>0x2D)
{
PORTD.F2 =1;
PORTD.F1 =0;
PORTD.F0 =0;
}
escribir_bit(botton.f0);
escribir_bit(botton.f1);
escribir_bit(botton.f2);
escribir_bit(botton.f3);
escribir_bit(botton.f4);
escribir_bit(botton.f5);
escribir_bit(botton.f6);
escribir_bit(botton.f7);
/////////////////////////////////////////////////////////////////
///////////////
delay_ms(87); // 50 * 1.778 ms
}
}







// PROTOCOLO RC5X
/////////////////////////////////////////////////////////////

void escribir_bit(int valor){
// Por cada bits que se transmite habra 1.778 ms
int i, j;
if(valor==1){ // H- 889 us // L- 889 us
// ESTADO EN ALTO 889 us
///////////////////////////////////////////////////////
for(j=0; j<69; j++)
{
// Oscilamos el led a 36khz para poder exitar el phototransistor
PORTC.RC6= PORTC.RC6 ^ 1;
delay_us(9);
}

// ESTADO EN BAJO 889 us
///////////////////////////////////////////////////////
PORTC.RC6=0;
delay_us(900);
/////////////////////////////////////////////////////////////////
///////////////
}
else
{ // H- 889 us // L- 889 us
// ESTADO EN BAJO 889 us
///////////////////////////////////////////////////////
PORTC.RC6=0;
delay_us(870);
// ESTADO EN ALTO 889 us
///////////////////////////////////////////////////////
for(j=0; j<69; j++){ // Oscilamos el led a 36khz
para poder exitar el phototransistor
PORTC.RC6= PORTC.RC6 ^ 1;
delay_us(9);
}
PORTC.RC6=0;
/////////////////////////////////////////////////////////////////
///////////////
}
}












































Cdigo Receptor
//configuracion de LCD

sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB6_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB6_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
//***************************************************
#include <built_in.h>

unsigned char ch,receive;
unsigned int adc_rd;
char *text,*text1;
char txt[4];
long tlong;
int i,j;
int numveces= 0, haydatos=0;
unsigned int codigo[8];
int int_rb0=1, int_tmr0=0;
unsigned short valor;

void interrupt(){
if(INTCON.INTF==1 && int_rb0==1){
int_tmr0= 1;
int_rb0= 0;
INTCON= 0b11100000;
TMR0= 0x5A;
}else if(INTCON.T0IF==1 && int_tmr0==1){
portd.rd0 = portd.rd0 ^ 1;
if(PORTB.RB0==1){
codigo[numveces]=0;
}else{
codigo[numveces]=1;
}
int_tmr0= 1;
int_rb0= 0;
numveces++;
INTCON= 0b11100000;
TMR0= 0X27;
if(numveces==9){
int_tmr0= 0;
int_rb0= 1;
haydatos=1;
numveces=0;
INTCON= 0b11010000;
valor = 30 ;
valor = 0b00011110;
valor.F0 = codigo[0];
valor.F1 = codigo[1];
valor.F2 = codigo[2];
valor.F3 = codigo[3];
valor.F4 = codigo[4];
valor.F5 = codigo[5];
valor.F6 = codigo[6];
valor.F7 = codigo[7];
} // 1111 0101 245
// 1111 1010 250
}
}

void main() {

OPTION_REG= 0b10000011;
INTCON = 0b11010000;
OSCCON = 0b01110101;
ANSEL = 0;
ANSELH = 0;
TRISA = 0;
TRISD=0;
TRISB=0x01;
TRISC = 0X80;

UART1_Init(9600);
Delay_100ms ();
Lcd_Init();
Delay_100ms ();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
for(i=0;i<5;i++){
Lcd_Cmd(_LCD_CLEAR);
text = "LABORATORIO DE";
LCD_Out(1,i,text);
Delay_ms(100);
}
text1 = "ELECTRONICA A";
LCD_Out(2,3,text1);
ADCON1 = 0x82;
TRISA = 0xFF;
Delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);


numveces=0;
int_tmr0= 0;
int_rb0= 1;
while (1) {
text = "Temperatura:";
for(j=16;j>0;j--){
Lcd_Cmd(_LCD_CLEAR);
LCD_Out(1,j,text);
Delay_ms(100);
}
ByteToStr(valor, txt);
Lcd_Out(2, 5,txt);
delay_ms(2000);
text = "Nivel:";
for(j=10;j>0;j--){
Lcd_Cmd(_LCD_CLEAR);
LCD_Out(1,j,text);
Delay_ms(100);
}
if(valor<=0x20)
text1 = "T1";
else if(valor>0x20&&valor<0x40)
text1="T2";
else
text1="T3";
LCD_Out(2,3,text1);
delay_ms(2000);


}
}

// _______ ________
// | | | | |
// | | | | |
// | | | | |
// | |____________| |______________|
//
// t1 t2 t3 t1
//

Вам также может понравиться