Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

18/10/2012 #41


Problema al usar modulos RF con pic
Hola que tal, estoy trabajando en un proyecto personal donde comunico dos pic mediante modulos RF usando rs232 el cual usa el TX y RX, y como es la primera vez que lo uso decidi hacer un programa sencillo, donde desde un pic presiono un push boton y este envia la señal al otro pic el cual al recibirla enciende un led, bastante sencillo para despues hacer algo mas complicado, el problema es que apenas alimento el pic receptor y no pasa mas de 5 segundos cuando este enciende el led sin que yo presione el boton de transmisor, y en la simulacion realizada con proteus me corre perfectamente, al igual que si colo solo un cable entre TX del transmisor y el RX de recptor en el circuito montado va de 10 este se enciende hasta que yo presiona el boton.

Entonces espero y me puedan ayudar he leido algunos temas ya posteados pero no he encontrado uno donde den una solucion clara. Por cierto estoy usando los modulos WRL-10534 y WRL-10532. Ademas anexo el codigo que estoy usando.

Transmisor
Código:
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,PUT

#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)

#use fast_io(B)

#bit BT1 = 0x06.0

void main() 
{
   int valor;
   set_tris_b(0b11111111);
   
   for(;;)
   {
      if(BT1==1) 
      {
         valor=0xA;
         PUTC(valor);
      }
   }
}
Receptor
Código:
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#use fast_io(B)

int valor;

#int_RDA
void RDA_isr(void) 
{
   valor=0x00;
   valor=GETC();
}

void main() 
{
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   set_tris_b(0b00000000);
   output_B(0b00000000);
   
   for (;;) 
   {
     if(valor==1)
     {
         output_B(0x1);
     }
   }
}
18/10/2012 #42

Avatar de miguelus

Buenos días fenix129
Ten en cuenta que estos módulos funcionan en la banda de 434Mhz, concretamente su frecuencia es 433,92Mhz, en esta frecuencia no estás tu solo, hay multitud de señales ya que es de las frecuencias consideradas de "Uso Común" y son de libre uso y las normas de su utilización establecen que... Los usuarios aceptarán las interferencias producidas por otros servicios.
Quizás si diseñas un protocolo muy redundante y con encriptación lograrás una comunicación relativamente segura.
Esta frecuencia viene muy bien para los clásicos Telemandos ya que estos envían tramas muy cortas y muy repetitivas pero no es muy adecuada para enviar y recibir datos.

Sal U2
18/10/2012 #43


Si tienes razon miguelus, lo mas seguro es que se este activando por las frecuencia que hay o que es captando ruido, entonces la pregunta seria si me pueden proporcionar un metodo para una buena comunicacion, o con que dispositivos puede evitar que pase. se gradece sus respuestas.
18/10/2012 #44

Avatar de Ajna

Yo tube el mismito problema, la solucion fue usar algun metodo de codificacion, en mi caso decidi usar la codificacion manchester.

Luego te comento que enviar solo el dato no va porque hay mucha interferencia, lo que yo hice fue esto

Envie un bit de inicio
Otro bit de inicio (si este no es 1 logico como el otro entonces ignoro el mensaje)
Luego envie 4 bits de direccion (para poder direccionar hasta 16 receptores)
Luego envie un byte de dato
Luego envie un bit de stop (tiene que ser 0 logico)
Luego todo esto lo envio dos veces y si ambos mensajes son iguales pues entonces lo proceso

En caso contrario lo ignoro.

Ee dejado conectado el receptor una semana y no se a activado ninguna señal y cuando le envio la info la recibe bien.

O puedes recurrir a un transceptor, (contiene un transmisor y un receptor) y toda la electronica necesaria para entregarte el mensaje limpio y ademas como es bi-direccional puedes comprobar el mensaje, pero obiamente son mucho mas caros.

---------- Actualizado después de 5 minutos ----------

A tambien se me pasaba, puedes colocar un diodo para minimizar el ruido, en mi caso el receptor se activa con un flanco de subida en el pin de interrupcion, pero si ves la salida del receptor en un osciloscopio veras que generan mucho ruido y ese pequeño ruido me activaba mi receptor por eso puse el diodo, checa el pdf
Archivos Adjuntos
Tipo de Archivo: pdf Simulacion.pdf (51,9 KB (Kilobytes), 129 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.