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

Temas similares

28/11/2013 #21

Avatar de Ajna

cosmefulanito04 dijo: Ver Mensaje
Del esquemático que vi, salvo que los módulos recomienden eso, colocar un capacitor de 100nF a derivación en la salida/entrada de la antena es muuuuuuy raro, más si ese capacitor (idealmente) presenta una impedancia de 5mOhms a 315MHz .

Si me parece correcto colocar ese capacitor de 100nF entre Vcc del módulo y GND.
Pero que no se supone que por ahi no salen 315Mhz, si no solo la señal demodulada de unos cuantos KHz

Edito: No veo donde coloco el capacitor en la antena, hable de mas!
28/11/2013 #22

Avatar de jjcordoba

Los capacitadores estan entre vcc y gnd, como les dije me puse a trabajar lo que hice fue lo siguiente poner antenas (un alambre de cobre en forma de solenoide) en ambos módulos y agregue al código un par de lineas, una transmisor que denomine dirección como alguna vez me sugirieron (en el transmisor) y una lineas en el receptor que si no era esa dirección quien enviaba, simplemente se saliera logrando con esto ya solucionar el problema que les mencione. quiero agradecerles por su ayuda y dirección en esto que en realidad no tenia mucho conocimiento
06/08/2015 #23

Avatar de Psyke

Después de leerme todo el tema, y todos los otros que encontré, relacionados con el tema, termino escribiendo acá, como muchos hicieron luego de no poder solucionar su problema. Tengo una proto armada con un 18F4550 y un 16F877A, el primero como receptor, y el segundo como emisor (adjunto programas más adelante). Comunicados por USART a través de dos modulos RF de 315 MHz, con un protocolo de comunicación y todo para evitar ruidos, pero no hay caso. Estando a 3 centímetros de distancia llego a obtener algunos datos correctos. Al conectarlos por cable funcionan correctamente. No sé si los modulitos habrán venido descalibrados en cuanto a su frecuencia de fábrica. El receptor tiene una bobina variable, pero está pegada para no modificarle el botón movible (no se como llamarlo). Cada vez que se obtiene una trama completa correcta, hace titilar un led blanco. Si no detecta un valor 0xAA, utilizado como inicio de transmision, o sincronización, enciende un led rojo.
Adjunto imagen abajo. No se distingue, pero estaba funcionando, y el LED rojo encendido.
Me olvidaba, les puse una antena de cable UTP de 10 cm aprox a cada módulo.
Muchas gracias

EMISOR:
Código:
#include <16f877a.h>
#fuses XT,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=1200, xmit= pin_c6, rcv=pin_c7, bits=8)

#define SINCRO    0
#define INICIO    1
#define DIREC     2
#define DATO      3
#define CHECKSUM  4

//int8 DATOS[5] 0=SINCRO, 1=INICIO, 2=DIREC, 3=DATOS, 4=CHECKSUM

int DATOS[5] = {0xAA, 0x7E, 0x66, 0x66};

void main()
{

int i;
DATOS[CHECKSUM] = DATOS[DIREC] + DATOS[DATO];

while(true)
{
   for(i=0;i<5;i++)
   {
   putc(DATOS[i]);
   //putc(0xAA);
   //delay_ms(60);
   }
}
}
RECEPTOR:
Código:
#include <18f4550.h> 
#fuses INTRC_IO,NOWDT,PLL1,CPUDIV1,NOFCMEN,NOPUT,BROWNOUT,NOLVP,NOMCLR,NOWRT,NOCPD
#use delay(clock=8000000) 
#use rs232(baud=1200, xmit=pin_c6, rcv=pin_c7, bits=8, ERRORS)

#define SINCRO    0
#define INICIO    1
#define DIREC     2
#define DATO      3
#define CHECKSUM  4

//int DATOS[5] = {0xAA, 0x7E, 0x66, 0x66};

int DATOS[5]; //0=SINCRO, 1=INICIO, 2=DIREC, 3=DATO, 4=CHECKSUM
int i,j;

#int_RDA
void RDA_isr()
{
   if(i<5)
   {
      DATOS[i] = getch();
      if (DATOS[0] == 0xAA && i<5)
      { 
         i++;
      }
      else
      {  
         output_toggle(pin_b6);
         i=0;
      }
   }
}


void main()
{     
   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   i = 0;
   while(1)
   {
      if(i==5)
      {
         if(DATOS[SINCRO]== 0xAA && DATOS[INICIO] == 0x7E && DATOS[DIREC] == 0x66 && DATOS[CHECKSUM] == (int)(DATOS[DIREC] + DATOS[DATO]))
         {
            output_toggle(pin_b7);
         }
         else
         {
            for(j=0;j<5;j++)
            {
               DATOS[i] = 0;   
            }
         }
      i=0;
      }     
   }
}
Imágenes Adjuntas
Tipo de Archivo: jpg IMG_2026.jpg (88,0 KB (Kilobytes), 12 visitas)
06/08/2015 #24
Moderador

Avatar de D@rkbytes

No es fácil crear un protocolo para esos módulos.
Lo mejor que he logrado para realizar la comunicación, es la codificación Manchester.

Mira este post que me aclaró muchas cosas: USART y Módulos RF
Y también este otro en donde al final se resolvió el problema realizando modificaciones al protocolo.
PIC12F675 y módulo de R.F, no recibe datos
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.