Está en la página 1de 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


sobrepasa la temperatura ambiente.

si

esta

DIAGRAMA DE BLOQUES

LCD
Fan

Sensor

Pic16f887

Pic16f887
Lm35

EMISOR

RECEPTOR

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

puede ser adaptado en cualquier


manejo de equipos a distancia.

sistema

que

requiera

un

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.
INDICADORES DE NIVEL
R15

D6
A

330
LED-YELLOW

U4
1
2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40

RE3/MCLR/VPP

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPW U/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+
RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7

15
16
17
18
23
24
25
26

R14

D5
A

330
LED-YELLOW

R13

19
20
21
22
27
28
29
30

D4
A

330
LED-YELLOW

SENSOR

8
9
10

J1

1
1
2

U2
24.0

PIC16F887

VOUT

R11

X1

Q2

100

TBLOCK-I2
2

LM35

J2
1
2
TBLOCK-I2

CRYSTAL

C2

1nF

1nF

LED-YELLOW

LED EMISOR

2N3904

D3

C1

R7
3.3k

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.

Los leds son indicadores de temperatura los cuales prendern de


acuerdo al siguiente rango:
Led verde
Led amarillo
Led rojo

0<T c<25
26<T c<45
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.

LCD2

VEE
VDD
VSS

U1
1

6
5
4
3
2
1

LM016L

PANTALLA LCD

2
3
4
5
6
7
14
13

R2
470

33
34
35
36
37
38
39
40

R1
3.3k

RE3/MCLR/VPP

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7

15
16
17
18
23
24
25
26

INDICADOR DE TRANSMISION
R3

19
20
21
22
27
28
29
30

330

E
RW
RS

14
13
12
11
10
9
8
7

D1
LED-YELLOW

D7
D6
D5
D4
D3
D2
D1
D0

8
9
10

PIC16F887

U2

29.0

VOUT

LED RECEPTOR
2

J1
C?
1nF

1
2
TBLOCK-I2

LM35

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

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
Nivel T2
Nivel T3

0<T c<25
26<T c<45
T c>46

Etapa de Control de temperatura.


Circuito de control de temperatura

SEAL DEL SENSOR U1:D


12

10k

5
14

VENTILADOR

7
6

R1
150k

R8

U1:C

LM324

LM324

1
2

11

13

11

TBLOCK-I2

1
2

4
1
2

U1:B

J?

R4
10k

D1

10
8

R2

R3

10k
3

11

LM324

LED INDICADOR
DE AUMENTO DE
TEMPERATURA

1k

R5

BC549

R9

R?

80

10k

10k

10k

R10

R7

11

RV2

100%

20k

Q1

D2

R6

1N4733A

1M

3.3k
LM324

U1:A

En esta etapa del proyecto podemos controlar


tal forma de que si la temperatura aumenta y
temperatura ambiente el ventilador comenzara
velocidad aumentara, para esto utilizamos la
(Lm35) y de 4 OPAMS (Lm325) .

la temperatura de
es mayor que la
a funcionar y su
seal del sensor

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:

Vin = Voltaje de entrada analgico

Vref = 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.

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

I1
I2

I3

+
(

+
)

=
)

*
*(

+
*(

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

+88.8

kRPM

D1

VENTILADOR

LED INDICADOR
DE AUMENTO DE
TEMPERATURA

Q1
BC549

R9
132

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

Vout

Temperatura obtenida del sensor(10mV/ c)


TERICO(V) SIMULADO(V)
REAL(V)
0.28
0.28
0.293

<<Temperatura real seria


voltaje seria 0.28 >>

%ERROR
4.6

del ambiente 28 c su equivalente a

V+
VVo

Opamp (1 Parte) amplificador no inversor


TERICO(V) SIMULADO(V)
REAL(V)
0.28
0.28
0.293
0.28
0.28
0.293
2.38
2.38
2.47

%ERROR
4.6
4.6
3.78

V2
V1
Vo

Opamp(2 Parte) amplificador instrumentacion


TERICO(V) SIMULADO(V)
REAL(V)
2.38
2.38
2.47
2.1
2.1
2.05
5.88
5.88
5.61

%ERROR
3.78
2.38
4.59

SIMULACIONES

Circuito emisor
INDICADORES DE NIVEL
R15

D6
A

330
LED-YELLOW

U4
1
2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40

15
16
17
18
23
24
25
26

RE3/MCLR/VPP

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPW U/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+
RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7

R14

D5
A

330
LED-YELLOW

19
20
21
22
27
28
29
30

R13

D4
A

330
LED-YELLOW

SENSOR

8
9
10

J1

1
1
2

U2

PIC16F887

24.0

VOUT

R11

X1

Q2

100

TBLOCK-I2
2

LM35

J2
1
2
TBLOCK-I2

CRYSTAL

1nF

C2

1nF

2N3904
LED-YELLOW

LED EMISOR

B
C

D3

C1

R7
3.3k

Circuito receptor

LCD?

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RS
RW
E
4
5
6

1
2
3

VSS
VDD
VEE

LM016L

U1
1

R2
4.70k

R1
3.30k

2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40

RE3/MCLR/VPP

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA
RA3/AN3/VREF+/C1IN+
RC5/SDO
RA4/T0CKI/C1OUT
RC6/TX/CK
RA5/AN4/SS/C2OUT
RC7/RX/DT
RA6/OSC2/CLKOUT
RA7/OSC1/CLKIN
RD0
RD1
RB0/AN12/INT
RD2
RB1/AN10/C12IN3RD3
RB2/AN8
RD4
RB3/AN9/PGM/C12IN2RD5/P1B
RB4/AN11
RD6/P1C
RB5/AN13/T1G
RD7/P1D
RB6/ICSPCLK
RB7/ICSPDAT
RE0/AN5
RE1/AN6
RE2/AN7
PIC16F887

seal enviada del emisor

Controlador de temperatura

15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10

R3
330
A

D1
K
LED-YELLOW

+12

SEAL DEL SENSOR U1:D

R1
150k

LM324

11

11

29.0

R8

U1:C

LM324

R4
10k

D1

10
8

LM35

R2

R3

10k
3

11

D2

R6

1N4733A

1M

10k

R10

3.3k
LM324

U1:A

LED INDICADOR
DE AUMENTO DE
TEMPERATURA
+7.32

10k
1

LM324

1k

R5

R7

11

RV2

100%

20k

VENTILADOR

+0.94

kRPM

14
13

VOUT

10k

U?

U1:B
12

Volts

Q1
BC549

R9

R?

80

75

TABLA DE COMPONENTES Y PRECIOS.


Lista de materiales del emisor
Cant.
4

Artculo
Resistores

Capacitores

3
1

D1 Led
rojo/amarillo/verde
Transistor

fototransistor

Borneras (2 tornillos)

Pic 16F887

Lm35

Cristal de cuarzo

Precio
unitario
$
0,05
$
0,10
$
0,10
$
0,15
$
1,50
$
0,16
$
4,50
$
6,00
$
1,00
Subtotal 1

Materiales generales
Estao (1m)
Pasta para soldar
Circuito impreso

$
0,25
$
2,00
$

Cantidad total
$
0,20
$
0,20
$
0,30
$
0,15
$
1,50
$
0,32
$
4,50
$
6,00
$
1,00
$
14,17

(emisor y receptor,
control de
temperatura)
Subtotal 3

13,80
$

16,05

Lista de materiales del receptor

Cant.

Artculo

Resistores

Capacitores

1
1

Pic 16f887
Pantalla Lcd 16x2

1 Borneras (2 tornillos)
1
1 Diodo Led

receptor

Precio
unitario
$
0,05
$
0,10
$
4,50
$
10,00
$
0,16
$
3,00
$
0,10
Subtotal 2

Cantidad total
$
0,10
$
0,10
$
4,50
$
10,00
$
0,16
$
3,00
$
0,10
$
17 ,96

Lista de materiales del controlador de temperatura


Cant.

Artculo

10

Resistores

transistor

1
1

Potenciometro
Lm325

3 Borneras (2 tornillos)
1

Diodo

zener
1 Diodo Led
1 Ventilador DC
12v(prueba)

Precio
unitario
$
0,05
$
0,15
$
0,20
$
0,30
$
0,16
$
0,10
$
0,10
$
3,00
Subtotal 2

Total:

53,01

Cantidad total
$
0,50
$
0,15
$
0,20
$
0,30
$
0,48
$
0,10
$
0,10
$
3,00
$
4 ,83

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
PORTA= 0X00;
//
TRISB= 0X00;
// CONFIGURA TODA LA PUERTA B COMO
PORTB= 0X00;
//
TRISC= 0X00;
// CONFIGURA TODA LA PUERTA B COMO
PORTC= 0X00;
TRISD= 0X00;
// CONFIGURA TODA LA PUERTA B COMO
PORTD= 0X00;
// ANALOG SELECT REGISTER
//////////////////////////////////////////////////////
ANSEL= 0X01;
// ANS COMO DIGITAL LOS BITS 0-7
ANSELH= 0X00; // ANS COMO DIGITAL LOS BITS 8-13

SALIDA
SALIDA
SALIDA
SALIDA

/////////////////////////////////////////////////////////////////
///////////////
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

También podría gustarte