Autor Tema: RF con 16f84 y rs232... recibe basura  (Leído 3871 veces)

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

Desconectado geronimoo

  • PIC10
  • *
  • Mensajes: 34
    • Divide & Conquer
RF con 16f84 y rs232... recibe basura
« en: 30 de Mayo de 2006, 22:13:17 »
holas picmanicos tengo un problema existencial..
ya hace una semana que vengo tratando de ahcer funcionar esto..
tengo 2 16f84 y un par de receptor emisor RF tws434
el problema es que enciendo los micros e inmediatamente el receptor empieza a escribir basura en la lcd... no siendo asi lo que envia el emisor.. aunque el emisor no este enviando, el receptor recibe basura
probe desconectando la entrada de datos del pic y de todas formas en el lcd se sigue escribiendo basura :(
ojo que por ahi aveces logro leer lo que realmente estoy enviando con el otro pic, muy raras veces
¿es posible que sea prque teng todos los cables del lcd cerca del modulo receptor de rf?
luego intente cambiar los modulos de RF por emisor y receptor IR Tsop.. pero me fue peor que antes... ahora no recibia basura (lo bueno), pero cada dato que enviaba, el receptor recibia FF... lo comprobe porque hice que lo escribiera en la eeprom...

Posibles soluciones?
¿puede ser q mi codigo este mal (uso el mismo para IR y RF) ?.. tengo que incluir use_fast_io()????

Aca pongo el code..

Código: [Seleccionar]
#####################
#EMISOR
#####################

#include <16F84A.H>
#use delay(clock=4000000)
#include <LCD.C>
#fuses XT,NOWDT

#use rs232 (baud=300,bits=8,parity=N,xmit=PIN_A0,rcv=PIN_A1)

void main(){

   while(TRUE){
      putc('h');
      putc('o');
      putc('l');
      putc('a');
      putc(' ');
      putc('0');
      putc('1');
      putc('2');
      putc('\n');
      puts("jeje todo bien\n");
      delay_ms(1000);
   }
}


#####################
#RECEPTOR
#####################
#include <16F84A.H>
#use delay(clock=4000000)
#include <LCD.C>
#fuses XT,NOWDT,PUT

#use rs232 (baud=300,bits=8,parity=N,xmit=PIN_A0,rcv=PIN_A1)

void main(){
   char carac;
   lcd_init();
   lcd_putc("DATOS RECIBIDOS:\n");
   while(TRUE){
      while(!kbhit());
      carac=fgetc();
      lcd_putc(carac);
   }
}


... que hago con el pin A0 pr ejemplo en el receptor ? ya que no esta en uso.. lo pongo  a masa? o lo dejo desnudo al aire :P

espero q me puedan sacar estas dudas... se me carcome la paciencia de tanto reprogramar el pic  :(
saludos a todos y sigan asi q el foro me hizo descubrir un muy lindo hobby  :mrgreen:
suerte
.::GERO::.

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #1 en: 31 de Mayo de 2006, 12:17:08 »
hola geronimo
bueno mira yo nunca use un pic en RF ,pero te puedo decir que en todos los programas que e realizado tuve que configurar los puertos como salida o como entrada ,no veo eso en tu programa.
Pues no se si no le indicas al pic por donde entran los datos y por donde salen como se entera este donde deve leer y donde debe escrivir.
yo creo que deberias configurar los puertos.
bueno ya me contaras un saludo juan
Existo, aunque pienses que no pienso

Desconectado geronimoo

  • PIC10
  • *
  • Mensajes: 34
    • Divide & Conquer
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #2 en: 31 de Mayo de 2006, 20:35:26 »
tenia entendido que no hacia falta, ya que la directiva
Código: [Seleccionar]
#use rs232, los configuraba por mi..  :(
pero de todas formas intente declarando los puertos como entrada y salida cuales correspondia.. y sigue funcionando mal.
essta vez funciona un poco mejor ya que me deshice dle lcd, porque los cables interferian con el modulo receptor...
pero de todas formas anda para el buje jeje  :?

y encima hay algo mas raro que esto, en el emisor conecto un diodo IR y en el receptor pongo el modulo de RF... y tachaaaan el modulo receptor recibe basura cuando el diodo IR esta enviando datos ..  :shock:... no se como eso es posible , pero voy a intentar aislar electrica y estaticamente los dos circuitos comprandome otra bateria y otro lm7805 y probando las 2 protoboards (un circuito en cada una) por separado.. cada una con su alimentacion y bien lejos de la otra

saludos.. si se les ocurre algo mas :S bienvenido sea  :-)
.::GERO::.

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #3 en: 31 de Mayo de 2006, 20:43:16 »
pues lo de la rs 232 no lo tenia que era asi pero bueno es posible.

en cuanto a las aislaciones pues si que te vas atener que detener en detalles .
ya que los ruido te ban a joder mucho pero bueno yo te diria que empieces por aislar todo bien y muy prolijo.
asi te desligas de que pueda ser ruido
Existo, aunque pienses que no pienso

Desconectado MSK

  • PIC12
  • **
  • Mensajes: 53
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #4 en: 31 de Mayo de 2006, 21:20:55 »
Hola si estas usando los modulos "rws" en la salida digital si te fijas sale ruido casi siempre, aunque no estes transmitiendo nada creo que el problema esta por hay, pone una rutina para filtrar los datos a mostrar en el lcd o transmitir a baudios mas altos.

Desconectado geronimoo

  • PIC10
  • *
  • Mensajes: 34
    • Divide & Conquer
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #5 en: 02 de Junio de 2006, 19:42:41 »
para dsligarme de la basura q recibo.. voy a tratar de agregar en el circuito los codificadores de holtek.. aver q onda.. porque estoy hasta las bolas de ruido :P
aver q pasa
saludos
.::GERO::.

Desconectado xrom

  • PIC10
  • *
  • Mensajes: 10
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #6 en: 08 de Junio de 2006, 16:10:36 »
Yo hace poco estuve haciendo pruebas con unos modulos de Aurel y al principio tambien tenia recepción de ruido y problemas de transmisión.

Mis conclusiones fueron que : Sin la antena correspondiente, tanto en el modulo de transmision como el de recepción, olvidate de conseguir nada.

En lo referente a la transmisión de datos, mi prueba fue conectar el puerto serie al transmisor y el receptor RF mediante un conversor (tipo  MAX485) y mediante el hiperterminal mandaba ficheros de texto con caracteres repetidos (cuidado : no es lo mismo que mantener una tecla pulsada).

De este modo desde el mismo hiperterminal mandaba un fichero de caracteres y recibia parte de los mismos. Segun la velocidad de transmisión y recepción se perdian más o menos carácteres.

Suerte

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #7 en: 12 de Junio de 2006, 19:32:56 »
Hola Geronimoo!

Mira esto. Aunque la solución no está muy clara puedes ver algun dato que te resulte interesante.

http://www.todopic.com.ar/foros/index.php?topic=8307.msg55950#msg55950


Un saludo desde Alicante.

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #8 en: 14 de Junio de 2006, 15:09:55 »
--------------------------------------------------------------------------------
Hola, aqui te pego lo que tengo andando, es un control remoto para alarma, veras lo unico que hace es recibir el codigo y cambiar el estado de un  bit, puedes arreglar el codigo para que reciba el string y lo ponga en un LCD, afirmado lo que dicen mas arriba lo que hago, por que hay ruido continuamente en la salida digital del modulo,  es 'validar' el primer dato en mi caso con el '*' y a partir de ahi recien comienzo a guardar lo que recibo, ademas el receptor antes de operar sobre la salida compara 2 veces el dato recibido, en mi aplicacion definitiva inclui en la trama un CRC32, entonces si se pierde algo el receptor puede 'analizar' lo que recibe antes de realizar alguna operacion, el modulo receptor esta conectado directamente al modulo, y el transmisor tambien, seria una buena idea hacer lo que comenta Chaly, invertir la trama para ahorrar energia, para esto habria que agregar la opcion 'INVERT'  quedaria asi:

#use rs232(baud=300,xmit=PIN_A0,bits=8,invert) // como solo transmite solo configuro un pin


Claro, tambien habria que agregarlo en el receptor.

espero que te sirva.

--------------------------------------------------------------------------------

TRANSMISOR

#include <10F206.h>
#use delay(clock=4000000)
#use rs232(baud=300,xmit=PIN_A0,bits=8) // como solo transmite solo configuro un pin
#use fast_io (a)

 const char  password[5]="1234";

void main() {


     setup_counters(RTCC_INTERNAL,RTCC_DIV_16);
     set_tris_a ( 0b111110 );


while (true){

PUTC ('*');             // START CARACTER
printf("%s",password);  // PASSWORD O CODIGO DE 32 BITS
delay_ms (100);

     }

}


RECEPTOR (uso un 16f627 que tiene modulo usart y me valgo de la interrupcion pero
se puede hacer con un 16f84 usando la interrupcion de rb0 o khbit())

#include <16F627.h>
#device  *=16
#zero_ram

#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, BROWNOUT, NOMCLR, NOLVP, NOCPD
#use rs232(baud=300,parity=N,xmit=PIN_B2,rcv=PIN_B1)

#use fast_io (B)
#priority RDA,RB,TIMER1
#byte RCREG=0x1a
#include <string.h>



  char  string[5];
  char  password[5]="1234";
  short display,validar,bit;
  int   caracter,veces;




#INT_RDA                      // rutina de interrupcion por recepcion serial
                                                       
rda_isr () {                                       
       int i;                       

   if (RCREG=='*'){
             for (i=0;i<=3;i++){
               STRING=getc();
               }
               validar=1;
              }
            }


void main()
{

   set_tris_A (0B11111011);
   set_tris_b (0B11111111);
   port_b_pullups(TRUE);
   setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   delay_ms (1000);                           // espero 1 segundo antes de arrancar
   enable_interrupts(INT_RDA);          // set interrupcion rs-232
   enable_interrupts(global);


   veces=0;



while(true){


         if (validar){

             if (!strcmp(string,password)){
            validar=0;



            if (++veces==2){


            output_bit (PIN_A3,!input(PIN_A3));   // ENCIENDE O APAGA EL LED
                                                                   // CADA VEZ QUE ENTRA 0N/OFF

               delay_ms (500);                           //  ESPERA 500 antes de leer de nuevo
               veces=0;
                }
             }
         }
      }
   }
saludos
PikMan

Desconectado geronimoo

  • PIC10
  • *
  • Mensajes: 34
    • Divide & Conquer
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #9 en: 30 de Agosto de 2006, 01:06:18 »
gracias a todos voyaprobar a ver que onda
.::GERO::.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #10 en: 30 de Agosto de 2006, 20:46:52 »
Hola saludos, pues te comento que yo use los modulos tws-433 y me salio todo de maravilla, pero primera cosa que no debes usar es rs-232, ya que ahí el ruido se mete como diablo (hasta las bolas como dijiste, jajaja), no se ve nada!!, rara vez, por azares del destino, jaja, debes usar otro tipo de codificación, podrias usar talvez manchester, o algun protocolo de controles remotos, yo use el rc-5 de phillips (que lleva codificación manchester); este protocolo puede adaptarse a los modulos RF qeu usas, aca te dejo el link: http://www.todopic.com.ar/foros/index.php?topic=11964.30 lee todo por si acaso, no recuerdo muy bien todo lo que dice, principalmente recuerdo muy bien los aportes de ALGEC (los cuales use, y funciono muy bien), pruebalos llevan simulaciones en proteus; aca los protocolos: http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htm espero te sirva, cualquier consulta hazla, en lo qeu pueda te ayudaremos, vale?? adios.
.

Desconectado geronimoo

  • PIC10
  • *
  • Mensajes: 34
    • Divide & Conquer
Re: RF con 16f84 y rs232... recibe basura
« Respuesta #11 en: 24 de Octubre de 2006, 23:36:11 »
na sos un master
creador del cielo y la tierra
bueno nopaara tanto
gracias loco voy a probar..
saludos
.::GERO::.


 

anything