Vistas de página en total

jueves, 25 de agosto de 2011

Proyecto Multímetro inalámbrico


Explicación del proyecto:
El proyecto que tuvimos que realizar es un voltimetro inalambrico. Este proyecto se divide en 2 placas que funcionan de la siguiente manera: una toma el valor de tension en el potenciometro y lo convierte a valores binarios (unos y ceros) para luego trasmitirlos a través de un led infrarrojo( que es el que conmunmente podemos encontrar en un control remoto de un television , dvd , etc). La otra placa debe recibir este codigo binario , transformarlos a valores de tensión (o analñogicos) y mostrarlos en una pantalla de lcd de 16x2.

Protocolo utilizado: Para poder transmitir un valor de tension y poder "traducirlo" del otro lado, es necesario establecer un protocolo , para poner de acuerdo qué va a ser un valor , y qué va a ser otro valor. Un ejemplo sencillo seria el de dos barcos que se ven enfrentados a distancia. El único elemento que poseen es una linterna. Un barco , prende y apaga esa linterna 5 veces , y entre ellos entienden que al prender y apagar esa linterna , significa que un barco va a atacar a otro. En cambio , si prende y apaga la linterna 10 veces , los dos barcos saben que uno se va a retirar. Eso es establecer un protocolo , comunicarse a partir de algo que dos objetos ya tienen definido de antemano.
En nuestro caso , un 1 , en codigo binario , equivaldría a 15 pulsos de una señal cuadrada , para la cual el tiempo de estado en alto es de 13 microsegundos , y el de estado en bajo es de otros 13 microsegundos , lo que genera una frecuencia de aproximadamente 38Mhz , que es a la que el receptor trabaja y reconoce las señales mandadas correctamente. Estos unos y ceros son los conseguidos en la conversión de tensión de potenciómetro , los cuales son mandados de a uno por vez, por ejemplo si medimos 5V y al convertirlo se transforma en 10100101, el transmisor primero mandara un 1 , despues un 0 , despues un 1 , y asi sucesivamente. .



Restricciones a tener en cuenta:
1)La unidad Tx transmite el valor analógico al Rx ; y éste lo muestra en el LCD

2)La transmisión se realiza cuando se pulsa Tx

3)El alcance no debe ser menor a 2 metros(en línea recta)

4)Al conectar el Rx se debe leer : "Sistema Tx Rx por IR" durante 5 segundos , y luego mostrar el úmtimo valor enviado por el Tx

5)Se debe mostrar la tensión medida en la entrada del PIC12F683(Va)

Otras utilidades:
Quizás al no tener muchos conocimientos sobre la electrónica , hablar de tensión en un potenciometro , y poder verlo en una pantalla no posee mucho interés. Pero podríamos en lugar de medir tensión , colocarle un sensor de temperatura. Esto nos serviría por ejemplo para poder colocar este sensor fuera de la casa, en un balcón por ejemplo , y poder medir a través de un vidrio la temperatura que hay fuera de nuestra casa.
Cabe aclarar que el funcionamiento de los controles remotos se basa en este tipo de comunicación por inflarrojo , asique de alguna manera podríamos diseñar un control para poder controlar las velocidades de un ventilador , su pendido o su apagado; o apagar una luz a la distancia
Circuito esquemático de la parte de Transmisión:
Plaqueta de la parte de Transmisión:



Imagen de la cerigrafía espejada

Imagen de las pistas de la placa

Circuito esquemático de la parte de Recepción y LCD 

PCB la parte de Recepción y LCD

Diagrama de pistas


Imágenes para imprimir sobre la plaqueta 







Programa de transmision:


; Configuro Registros

bank0
clrf GPIO ;Borro el puerto y configuro las
movlw 0x07 ;entradas anulando los comparadores
movwf CMCON0
bank1
clrf ANSEL ; I/O digitales
movlw B'00001000' ; GP5=GP4=GP2=GP1=GP0/Salidas
movwf TRISIO ; GP3=Entradas
movlw 0x70 ; Clock Interno a 8 MHz
movwf   OSCCON
clrf OPTION_REG ; Pullup habilitado GPPU (general)
movlw 0x36
movwf WPU ; Pullups individuales habilitados
bank0              ; Hay que pullupear GP3 externamente
bcf     LED_IR_OUT ; Apago el led IR



; Programa principal

Conversion
banksel TRISIO
bsf TRISIO,0
banksel ANSEL
movlw b'01110001'
iorwf ANSEL
banksel ADCON0
movlw b'10000001'
movwf ADCON0
call Retardo_1ms
bsf ADCON0,GO
btfsc ADCON0,GO
goto $-1
banksel ADRESH
movf ADRESH,W
movwf RESULTHI
banksel ADRESL
movf ADRESL,W
movwf valor_ADC





movlw .8
movwf contador                    ;le doy el valor 8 a contador

Aca

bcf STATUS,C                   ;pongo el Carry en cero
movf constante
movwf valor_ADC
rlf valor_ADC,F                  ;roto a la izquierda el resultado de la conversion
btfss STATUS,C                  ;pregunto si el Carry esta en 1 , si lo esta , vaya a TX_uno , sino a TX_cero
goto TX_cero
goto TX_uno
ABC
decfsz contador,F                 ;decremento la variable contador en 1
goto Aca
goto Conversion
TX_uno
movlw .30
movwf constante2 ;le doy el valor 30 a constante 2
M
bsf     LED_IR_OUT            ;pongo en 1 la  GP2
goto $+1
goto $+1                              ;genero retardo
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
bcf LED_IR_OUT         ;pongo en 0 GP2
goto $+1
goto $+1
goto $+1
goto $+1 ;genero retardo
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
decfsz constante2                                ;decremento constante2 en uno, si esta en 1 repito lo de abajo de M
goto M
call Retardo_10ms
goto ABC                                           ;vuelvo a repetir todo

TX_cero
movlw .15
movwf constante1 ;le doy el valor 15 a constante1
A
bsf     LED_IR_OUT         ;pongo en 1 GP2
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1                                              ;genero retardo
 goto $+1
goto $+1
 goto $+1
 goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
bcf LED_IR_OUT         ;pongo en 0 GP2
goto $+1
goto $+1
goto $+1
goto $+1
goto $+1                                             ;genero retardo
 goto $+1
goto $+1
 goto $+1
 goto $+1
goto $+1
goto $+1
goto $+1
goto $+1
decfsz constante1 ;decremento constante1 y si no esta en 0 ,repito lo de abajo de A
goto A
call Retardo_10ms                              ;retardo      
goto ABC ;vuelvo a ABC para hacer el procedimiento de vuelta


        #include <RETARDOS.INC>

END

Hojas de Datos:
Pic 16f84a   http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf
Pic 12f683  http://ww1.microchip.com/downloads/en/devicedoc/41211d_.pdf
IRM 8501  http://www.alldatasheet.com/datasheet-pdf/pdf/109788/ETC/IRM8602.html


No hay comentarios:

Publicar un comentario