Autor Tema: Problemas con visualizacion en lcd via RF  (Leído 2571 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Dochapu

  • PIC10
  • *
  • Mensajes: 3
Problemas con visualizacion en lcd via RF
« en: 21 de Septiembre de 2010, 13:04:49 »
Saludos, un gusto escribir una vez mas aca, soy nuevo en esto de las transmisiones vía radiofrecuencia, les comento que estoy realizando un proyecto con un sensor de temperatura cuya lectura se visualizará en un lcd via rf.

En el siguiente circuito que adjunto uso el conversor a/d del pic16f877a para visualizar la lectura en en lcd1 de ese pic y funciona correctamente, pero cuando deseo visualizarlo en el receptor (pic 16f628a) no me muestra lectura alguna, para la transmisión uso unos modulos a 315Mhz (adjunto el datasheet) y el codificador y decodificador ht12e/ht12d, he comprobado que el modulo funciona correctamente he probado transmitiendo 1 bit y efectivamente recibe correctamente el dato que envio, mi problema es el siguiente:
Conecto el pin 39 del pic 16f877a a mi entrada del encoder(pin10), conecto la salida del decoder (pin10) al pin asignado para la recepcion de datos porta.0 del pic 16f628a(pin17), pero no logro visualizar el dato que envio , y bueno en ese mismo instante para comprobar nuevamente el estado de transmisión pruebo transmitiendo bits y efectivamente hay transmision y recepción sin embargo no logro visualizar el dato que necesito.
La salida del del pin 39 del pic 16f877a corresponde al dato que almaceno de mi conversor a/d para luego transmitirlo, he probado la transmisión directa usando un cable para unir el pin 39 del 16f877a y el pin 17 del 16f628a y funciona, bueno de esa forma logro visualizar la lectura del dato que deseo enviar por lo que creo el programa funciona correctamente, ademas existen ocasiones en las que el lcd del rx no muestra debido a que sucede eso?.
Alguna sugerencia para solucionar mi problema seria bien recibida y muy agradecida.

Adjunto el esquema que realice en caso sirva de algo para su ilustración en pdf.

Incluyo fragmentos del programa que uso, esta hecho en microcode studio, tal vez estoy omitiendo algo o cometo un error y esa sea la razón por la cual no funcione.

Código: [Seleccionar]
tx
                            DEFINE osc 4
DEFINE      LCD_BITS 4
define      LCD_DREG        PORTB           ;bit de datos del LCD empezando
define      LCD_DBIT        0               ;por B.0. B.1, B.2, B.3
define      LCD_RSREG       PORTB           ;bit de registro del LCD conectar
define      LCD_RSBIT       5               ;en el puerto B.5
pause 2000
define      LCD_EREG        PORTB           ;bit de enable conectar en el
define      LCD_EBIT        4               ;puerto B.4

define      ADC_BITS        8               ;Fije el número de BITS del resultado (5,8,10)
define      ADC_CLOCK       3               ;Fije EL CLOCK (rc=3)
define      ADC_SAMPLEUS    50              ;Fije el tiempo de muestreo en Us
                                            ;ADC_SAMPLEUS es el número de microsegundos que el programa
                                            ;espera entre fijar el canal y comenzar la conversión analógica/digital
TRISA= 1                                   ;el puerto A es de entrada
ADCON1= %00001110                           ;el puerto A.0 es conversor los demás digitales
TRISB= 0
dato        var word                        ;crear variable dato para guardar
tempbaj     var byte
tempalt     var byte
x           var byte


releF   var portD.2
releC   var portD.3
led     var portD.4
enter   var portD.5
bsubir  var portD.6
bbajar  var portD.7

Symbol T2400 = 0
EEPROM 0,[22,26]                            ;contenido inicial de la EEPROM


inicio:                                     ;3 parpadeos del led que indica que funciona
for x =1 to 3
    high led
    pause 200
    low led
    pause 200
next

READ 0,tempbaj                              ;lee la EEPROM 0 y lo guarda en tempbaj
read 1,tempalt                              ;lee la EEPROM 1 y lo guarda en tempalt

sensar:
adcin 0, dato

serout PORTB.6, T2400, [dato]

Código: [Seleccionar]
rx
                           DEFINE osc 4
define      LCD_DREG        PORTB           ;bit de datos del LCD empezando
define      LCD_DBIT        0               ;por B.0. B.1, B.2, B.3
define      LCD_RSREG       PORTB           ;bit de registro del LCD conectar
define      LCD_RSBIT       5               ;en el puerto B.5
pause 2000
define      LCD_EREG        PORTB           ;bit de enable conectar en el
define      LCD_EBIT        4               ;puerto B.4
DEFINE      LCD_BITS 4
cmcon= 7
TRISB= 0



dato        var word                        ;crear variable dato para guardar
x           var byte
led         var portB.6





Symbol T2400 = 0
inicio:


for x =1 to 3                               ;3 parpadeos del led que indica que funcion
    high led
    pause 200
    low led
    pause 200
next

sensar:
serin PORTA.0, T2400, dato
LCDOUT $FE,1,"Temperatura Actual"         ;limpia el LCD y muestra el texto
             dato=dato/2                           ;el dato dividir para 2
LCDout $FE,$c6,dec dato,"ºC"                ;muestra el decimal de dato



end

datahsheet modulo:
http://electronicahifi.com/pdf/212st-rx04-a.pdf
« Última modificación: 21 de Septiembre de 2010, 13:09:57 por Dochapu »

Desconectado kamisama

  • PIC16
  • ***
  • Mensajes: 151
Re: Problemas con visualizacion en lcd via RF
« Respuesta #1 en: 01 de Abril de 2011, 18:56:03 »
No, lod datasheet no salen, pero hay algo mal conceptual los ht funcionan con 4 bits. los datos los tenes que mandar con 4 patas y rotando los bits altos con los bajos con cada byte.

Desconectado yesbond

  • PIC10
  • *
  • Mensajes: 11
Re: Problemas con visualizacion en lcd via RF
« Respuesta #2 en: 05 de Abril de 2011, 21:40:24 »
Hola Dochapu,

Como te dice kamisama, el modulo ht12 no te sirve para enviar informacion entre los pics, o tendiras que hacer tu propia codificacion. El ht12 te sirve para enviar bits, como lo estas haciendo, pero si quieres enviar un byte completo no te sirve.
Lo que te sugiero hacer es comunicarse directamente sin el modulo ht12 via serial haciendo una comunicacion dandole una palabra clave a tu receptor para que puedas evitar el ruido que se generan con esto modulo rf.

Saludos,

Yesbond

Desconectado Noelillo

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas con visualizacion en lcd via RF
« Respuesta #3 en: 18 de Julio de 2011, 12:24:26 »
Emisor:

Código: [Seleccionar]
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Miguel Noe Garcia Perez                           *
'*  Notice  : Copyright (c) 2010 Iberica 2000                   *
'*          : All Rights Reserved                               *
'*  Date    : 08/09/2010                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
 
        Device 16F876
        XTAL = 4
' LCD pin Configuracion
        lcd_type = 0
        LCD_LINES = 4
        LCD_DTPIN = PORTb.4
        LCD_RSPIN = PORTb.3
        LCD_ENPIN = PORTb.2
        LCD_INTERFACE = 4
       
'***************************************************************************************
        Cls      ' Clear LCD
        ALL_DIGITAL = True ' Set ports to digital mode
        Clear ' Clear buffers
       
'***************************************************************************************
' Define ADC parameters
ADIN_RES = 10     ' 10-bit result required
ADIN_TAD = FRC     ' RC OSC chosen
ADIN_STIME = 50     ' Allow 50us sample time
        PORTB_PULLUPS = ON              ' Enable PORTB pull-ups
        TRISA = %11111111     ' Set PORTA to all input
        ADCON1 = %10000010     ' Set PORTA analog and right justify result
'***************************************************************************************               
        Symbol Pin = Portc.0
        symbol Led = portc.7
       
       
         
'***************************************************************************************   
   
  Dim ADVALA       AS WORD     ' Create ADVAL to store result
        Dim ADVALB       AS WORD     ' Create ADVAL to store result
        Dim ADVALC       AS WORD     ' Create ADVAL to store result
        Dim ADVALD       AS WORD     ' Create ADVAL to store result 
        Dim Raw          as Word
        Dim Value        as Word
        Dim Volts        as Byte
        Dim Millivolts   as Word
        dim N            As Byte
'***************************************************************************************       
'        '(0) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,64,$00,$04,$04,$04,$0E,$0E,$15,$15
'        '(1) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,72,$15,$0A,$15,$04,$0E,$0E,$15,$15     
'        '(2) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,80, $04,$04,$04,$00,$0E,$0A,$0A,$0E
'        '(3) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,88, $0E,$0A,$0A,$0E,$00,$04,$04,$04
'        '(4) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,96,$00,$0E,$0A,$0A,$1B,$00,$00,$00
'        '(5) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,104,$00,$00,$00,$00,$1B,$0A,$0A,$0E,$00
'        '(6) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,112, $00,$00,$00,$1B,$0A,$0A,$0E,$00
'        '(7) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
'        Print 254,120,$10,$10,$10,$10,$10,$10,$10,$10
'***************************************************************************************
'************** Presentacion ***********************************************************
'***************************************************************************************
'        Delayms 500            ' Wait .5 second
' Cls      ' Clear LCD
'   '          1234567890123456
'         Print at 1,1," Otro Invento"
'         Print at 2,1," de Miguelito"                         
'         Delayms 2000
' CLS
'    '           1234567890123456
'         Print at 1,1,"Telemetria V1.0"
'         Print at 2,1,"  433,92 MHz "                         
'         Delayms 2000
'         
Inicio:
        Cls
        print at 1,1,0,1,2,3,4,5,6,7
       
        PRINT AT 2,1,"EMITIENDO..."                        '1234567890123456
       ' nOE:
'        'Serout Pin,BaudMode[x],["   123 MIGUEL NOE GARCIA PEREZ   miguel noe garcia perez "]  ' Display "Hello", next line
'        '                    12345678901234561234567890123456
'        'Serout Pin,16572,["A Miguel Noe es un tio estupendo.."]  ' Display "Hello", next line
       ' Serout Pin, 16572  ,["A Este invento ya esta inventado."]  ' Display "Hello", next line
'        'Delayms 50 ' Wait .5 second
'                 '     1234567890123456
'        GOTO nOE

'*******************************************************************************************
 Infor:   
        GOSUB Lee_Temperatura
        gosub Lee_Vcc
        'gosub PintaTemperatura
        'gosub Voltage
        'goto infor
Transmitir:
        'for n =0 to 1500
       'high Radio  65535 minimo 16468 max
       high led
       Serout Pin, 16468  ,["NOE",dec3 ADVALA,dec3 ADVALB,dec3 ADVALC,dec3 ADVALd,dec2 Volts,dec2 Millivolts]  ' Display "Hello", next line 
      ' low Radio
     
       low led
       'delayms 20
       'next
goto Infor
         



















'                    S U B R U T I N A S
'*******************************************************************************************
'*******************************************************************************************
'*******************************************************************************************           

Lee_Temperatura:

            ADVALA = Adcin 0 ' Read channel 0 to adval (0-1023)
ADVALB = Adcin 1             ' Lee Canal 1 Para ADVALB
    ADVALC = Adcin 2
    ADVALd = Adcin 3
   
            ADVALa = (ADVALa */ 500) >> 2   ' Igualito que (advab *500)/1024
ADVALb = (ADVALb */  500) >> 2 ' equates to: (adval * 500)/1024
            ADVALc = (ADVALc */ 500) >> 2   ' Igualito que (advab *500)/1024
ADVALd = (ADVALD */  500) >> 2 ' equates to: (adval * 500)/1024
        Return
       
       
       
 Lee_Vcc:   
        Raw = adin 4  ' leer ADC
 
'******************************** Calculo de Tension *********************************
        Value = 489 *(Raw / 10)
        Volts = Value / 1000
        Millivolts = (Value // 1000) / 10
        return
       
'*******************************************************************************************
'********************    PINTA TEMPERATURA    **********************************************
'*******************************************************************************************           
PintaTemperatura:
cls         
                Print at 1,1,"T1 ",Dec (ADVALA/100), Dec2 ADVALA,"C"
                Print at 2,1,"T2 ",Dec (ADVALB/100), Dec2 ADVALB,"C"
                Print at 1,10,"T3 ",Dec (ADVALC/100), Dec2 ADVALC,"C"
                Print at 2,10,"T4 ",Dec (ADVALD/100), Dec2 ADVALD,"C"
                'delayms 2000
        return
       
       
 voltage:
 cls     
 Print at 1,1,"Votimetro Bat   "
        Print at 2,1," ",Dec2 Volts,".",Dec2 Millivolts," Vcc" 'mostrar el resultado
        'Delayms 2000
  return
 
 
 
  end       


Receptor:

Código: [Seleccionar]
'****************************************************************
'*  Name    : emiTemp.BAS                                      *
'*  Author  : Miguel Noe Garcia Perez                           *
'*  Notice  : Copyright (c) 2010 Iberica 2000                   *
'*          : All Rights Reserved                               *
'*  Date    : 10/03/2010                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
 
        Device 16F877a
        XTAL = 4
' LCD pin Configuracion
        lcd_type = 0
        LCD_LINES = 4
        LCD_DTPIN = PORTb.4
        LCD_RSPIN = PORTb.3
        LCD_ENPIN = PORTb.2
        LCD_INTERFACE = 4
        DECLARE SERIAL_PARITY = ODD   
          Dim Temp as word
       


 Dim Datos[16]  As Byte ' Arreglo almacena serial
 DIM SerData AS BYTE
 dim Result  as word
 dim Address  as word
 Dim Index     As Byte ' Variable de uso general
 dim x        As byte
 dim Coder     as word

 
 '***************************************************************************************       
        '(0) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,64,$02,$07,$02,$00,$0A,$1F,$1F,$1F 'Bateria1
        '(1) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,72,$02,$07,$02,$00,$0A,$1F,$11,$1F' Bateria 2     
        '(2) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,80, $00,$1C,$00,$00,$0A,$1F,$11,$1F' Bateria 3
        '(3) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,88, $0E,$04,$0E,$0A,$1B,$11,$1B,$0E ' Motor
        '(4) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,96,$1F,$0E,$1B,$15,$0A,$15,$0A,$1F ' Radiador
        '(5) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,104,$00,$0A,$11,$15,$15,$11,$0A,$00  ' Discofreno
        '(6) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,112, $1C,$06,$05,$1D,$1E,$1F,$1D,$00 ' Fuel
        '(7) CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
        Print 254,120,$10,$10,$10,$10,$10,$10,$10,$10
'***************************************************************************************
'************** Presentacion ***********************************************************
'***************************************************************************************
        Delayms 500            ' Wait .5 second
Cls      ' Clear LCD
  '          1234567890123456
         Print at 1,1," Otro Invento"
         Print at 2,1," de Miguelito"                         
         Delayms 2000
CLS
   '           1234567890123456
         Print at 1,1,"   Receptor  RF"
         Print at 2,1,"  433,92 MHz "                         
         Delayms 2000
         cls
         Print at 1,1," BaudRate:"
         Print at 2,5,"9600"                         
         Delayms 2000
           
Inicio:
     Cls

     cls
     print at 1,1,"Esperando datos"
     print at 2,5,"Espere..."
     

'

'*********** Espera A leer la N Para cojer el Tren de informacion ********************
'*********** 9600 Baudios ************************************************************
'*************************************************************************************
   
     SERIN PORTc.0 ,16468  ,[ WAIT( "N" ) , SerData] '16468 '
     cls
     
     print at 1,1,"Conectando..."
     delayms 500
  Otro:   
     SERIN PORTc.0 ,16468  ,[ WAIT( "N" ) , SerData] '16468 '
     
'********************* Mete los datos en una cadena **********************************
' ****************** Los Datos  emitidos son 4 de Temperaturas y 2 de voltage ********
'************************************************************************************

' DATOS [iNDEX] = 0  --------------> N
' DATOS [iNDEX] = 1  --------------> 0 --------------------
' DATOS [iNDEX] = 2  --------------> 0 Sensor Nº1 3 digitos
' DATOS [iNDEX] = 3  --------------> 0 --------------------
' DATOS [iNDEX] = 4  --------------> 0 --------------------
' DATOS [iNDEX] = 5  --------------> 0 Sensor Nº2 3 digitos
' DATOS [iNDEX] = 6  --------------> 0 --------------------
' DATOS [iNDEX] = 7  --------------> 0 --------------------
' DATOS [iNDEX] = 8  --------------> 0 Sensor Nº3 3 digitos
' DATOS [iNDEX] = 9  --------------> 0 --------------------
' DATOS [iNDEX] = 10 --------------> 0 --------------------
' DATOS [iNDEX] = 11 --------------> 0 Sensor Nº4 3 digitos
' DATOS [iNDEX] = 12 --------------> 0 --------------------
' DATOS [iNDEX] = 13 --------------> 0 --------------------
' DATOS [iNDEX] = 14 --------------> 0 voltios
' DATOS [iNDEX] = 15 --------------> 0 --------------------
' DATOS [iNDEX] = 16 --------------> 0 MiliVoltios



     for Index = 0 to 16
        SERIN PORTc.0 ,16468 ,[SerData]'16468 '
        DATOS [iNDEX] = SERDATA
     Next
'************************** PINTA PANTALLA DE DATOS *********************************
    print at 1,1,"T1"
    print at 1,7,"T2"
    print at 1,13,"V"
    print at 2,1,"T3"
    print at 2,7,"T4"
    print at 2,13,"M"
    print at 2,16,1
    print at 1,16,2
    print at 1,3,3
    print at 1,9,4
    print at 2,3,5
    print at 2,9,6
'************************** COLOCA LOS DATOS EN LA PANTALLA ***********************   
    x=4
    for index = 1 to 3
       Coder = Datos[Index]
       print at 1,x,Coder
       x=x+1
    next
     
    x=10
     
     for index = 4 to 6
       Coder = Datos[Index]
       print at 1,x,Coder
      x=x+1
    next
     x=4
     for index = 7 to 9
       Coder = Datos[Index]
       print at 2,x,Coder
      x=x+1
    next
     x=10
     for index = 10 to 12
       Coder = Datos[Index]
       print at 2,x,Coder
      x=x+1
    next
   
    x=14
     for index =13 to 14
       Coder = Datos[Index]
       print at 1,x,Coder
      x=x+1
    next
     
     x=14
     for index = 15 to 16
       Coder = Datos[Index]
       print at 2,x,Coder
      x=x+1
    next   
     'delayms 1500
    Goto Otro
     
 
 END