Dificuldade com RF + PIC18F4520

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Dificuldade com RF + PIC18F4520

Mensagempor uilter » 04 Nov 2011 17:38

Olá pessoal.

Estou tentando fazer com que dois PIC's se comuniquem por RF.

Comprei dois módulos simples.
TWS-DS-3 e RWS-375-6. Ambos os dois de 433.92 MHz.

Datasheets
http://www.wenshing.com.tw/Data_Sheet/T ... _Sheet.pdf

http://www.wenshing.com.tw/Data_Sheet/R ... _Sheet.pdf

Fiz antenas de 17,5 cm cada uma.

A taxa de transferência que estou usando na USART é de 2400bps.
Tudo ocorre muito bem quando estou me comunicando por um fio qualquer na protoboard diretamente entre os PIC's.
Porém ao ligar os módulos RF aos PIC's não existem comunicação alguma.

O circuito é alimentado com 5V.
Já tentei taxas de transferências mais altas do que 2400bps e não tive sucesso.

Código do PIC que transmite.
Código: Selecionar todos
#include <p18F4520.h>
#include <usart.h>
#include <delays.h>
#include <stdio.h>
//#include "C:\Program Files (x86)\Microchip\mplabc18\v3.38\h\P18F4520.h"

// Frequencia do oscilador = 8MHz
// Ciclo de máquina  = 1/(Fosc/4) = 0,5us

//#pragma config OSC = XT           //Configura o oscilador a cristal
#pragma config OSC = HS
#pragma config WDT = OFF        //Desabilita o Watchdog Timer (WDT).
#pragma config PWRT = ON      //Habilita o Power-up Timer (PWRT).
#pragma config BOREN = ON      //Habilita Brown-out reset
#pragma config BORV = 1           //Tensão do BOR é 4,33V.
#pragma config PBADEN = OFF    //RB0,1,2,3 e 4 configurado como I/O digital.
#pragma config LVP = OFF          //Desabilita o Low Voltage Program.


#define    bEnviar    PORTDbits.RD2



void main()
{
   TRISB = 0x00;         
   TRISC = 0x0F;          
   TRISD = 0b00;          
   TRISE = 0x00;         
   
   
   OpenUSART(USART_TX_INT_OFF      //desabilita interrupção de transmissão
         & USART_RX_INT_OFF      //desabilita interrupção de recepção
         & USART_ASYNCH_MODE      //modo assíncrono
         & USART_EIGHT_BIT      //transmissão e recepção em 8 bits
         & USART_BRGH_LOW,      //Baud Rate em baixa velocidade
         51);               //SPBRG
   
   while(1)
   {
      if(bEnviar == 0)
      {
               
         putcUSART(0x55);         
         while (BusyUSART());     //Aguarda o final da transmissão
         Delay10KTCYx(50);
      }
   }
}


Código do PIC que recebe.
Código: Selecionar todos
#include<p18f4520.h>
#include<delays.h>
#include<usart.h>

//Cristal de 8Mhz

#pragma config OSC = HS
#pragma config WDT = OFF
#pragma config PWRT = ON
#pragma config BOREN = ON
#pragma config BORV = 1
#pragma config PBADEN = OFF
#pragma config LVP = OFF

unsigned char byte=0x00;

void main()
{
   ADCON1 = 0x0F;         //Desabilita todos os canais AD
   
   //TRISA = 0x00;
   TRISB = 0x00;
   TRISD = 0x00;
   PORTB = 0;
   PORTD = 0;
   TRISC = 0x80;
   //TRISE = 0x00;

   OpenUSART(USART_TX_INT_OFF         //desabilita interrupção de transmissão
             & USART_RX_INT_OFF   //desabilita interrupção de recepção
             & USART_ASYNCH_MODE   //modo assíncrono
             & USART_EIGHT_BIT      //transmissão e recepção em 8 bits
             & USART_BRGH_LOW,   //Baud Rate em baixa velocidade
             51);               //SPBRG
   
while(1)
{
   while(!DataRdyUSART());
   byte = getcUSART();
   
   PORTB = 0xff;
   Delay10KTCYx(0xff);
   PORTB = 0x00;
   
   if(byte==0x55)
   {
      PORTD = 255;
      Delay10KTCYx(0xff);
      byte=0x00;
      PORTD = 0;
   }
   else
   {
      PORTD = 0;
      Delay10KTCYx(0xff);
      byte=0x00;
   }
   
}
}




Obrigado e até mais!
uilter
Nibble
 
Mensagens: 76
Registrado em: 05 Out 2010 15:56
Localização: São Paulo

Mensagempor tcpipchip » 04 Nov 2011 21:00

Poe a serial em INVERTED mode.
TCPIPCHIP
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor marcelo campos » 04 Nov 2011 21:03

Este tipo de rádio joga tudo quanto é sujeira (ruído branco) na uart rx do microcontrolador, se você monitorar o error bit, vai ver que dá erro direto, umas das coisas (num PIC) é que primeiro tem que resetar este bit antes de ler o rxreg,

Invariavelmente, terá que ter um protocolo mesmo que simples, pra sinalizar pelo menos o começo da transmissão. Eu costumo colocar 0x55 e 0xFF (depende do rádio mais de um de cada 55 / FF), explico:
- o 55 ajuda a balancear o demodulador (veja data sheet dos radiometrix) em AM não sei se precisa
- o FF sempre acaba gerando um stop bit, assim a uart fica parada esperando o próximo bit e consegue-se sincronizar

qualquer dúvida poste aí

abraço e boa sorte,

MArcelo Campos
marcelo campos
Word
 
Mensagens: 648
Registrado em: 08 Ago 2009 08:37

Mensagempor marcelo campos » 04 Nov 2011 21:04

tcpipchip escreveu:Poe a serial em INVERTED mode.
TCPIPCHIP

gostei desta também, é uma possbilidade
marcelo campos
Word
 
Mensagens: 648
Registrado em: 08 Ago 2009 08:37

Mensagempor uilter » 04 Nov 2011 21:23

tcpipchip escreveu:Poe a serial em INVERTED mode.
TCPIPCHIP


Como eu habilito esse "mode inverted" nesse PIC? sabe me dizer?
Eu não conheço nada sobre esse modo.

Obrigado!
uilter
Nibble
 
Mensagens: 76
Registrado em: 05 Out 2010 15:56
Localização: São Paulo

Mensagempor uilter » 04 Nov 2011 21:29

marcelo campos escreveu:Este tipo de rádio joga tudo quanto é sujeira (ruído branco) na uart rx do microcontrolador, se você monitorar o error bit, vai ver que dá erro direto, umas das coisas (num PIC) é que primeiro tem que resetar este bit antes de ler o rxreg,

Invariavelmente, terá que ter um protocolo mesmo que simples, pra sinalizar pelo menos o começo da transmissão. Eu costumo colocar 0x55 e 0xFF (depende do rádio mais de um de cada 55 / FF), explico:
- o 55 ajuda a balancear o demodulador (veja data sheet dos radiometrix) em AM não sei se precisa
- o FF sempre acaba gerando um stop bit, assim a uart fica parada esperando o próximo bit e consegue-se sincronizar

qualquer dúvida poste aí

abraço e boa sorte,

MArcelo Campos


Olá Marcelo,

Eu vou fazer um protocolo de 6 bytes só que não tinha pensado nessa possibilidade.

Vou realizar uns testes com 3 bytes então pra ver se consigo.
0x55, byte do dado, 0xFF

Assim que tiver resultados posto aqui.
uilter
Nibble
 
Mensagens: 76
Registrado em: 05 Out 2010 15:56
Localização: São Paulo

Mensagempor Andre_Cruz » 06 Nov 2011 12:00

uilter,

Véio usei uma certa vez um desses radinhos, pra ele enviar corretamente precisei sempre enviar algum dado, pois quando eu parava de enviar e precisava enviar algum dado ele não funcionava direito.
Tem um tópico do fabim falando programa para controle remoto que ele sugere um resistor ñ me lembro em qual pino ele vai mas ele ajuda a diminuir o ruído.
Acredito que jaja o próprio de a dica.

Abraço
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor hertzing » 06 Nov 2011 14:41

Fiz como Projeto de final de curso, um carrinha de controle remoto.
Utilizei dois PIC e uns módulos parecidos com esses, mas da Telecontrolli.

Estais trabalhando com qual tensão no módulo emissor?
Comparasse no osciloscópio o TX com o RX?
Avatar do usuário
hertzing
Byte
 
Mensagens: 119
Registrado em: 12 Jan 2011 13:26
Localização: Blumenau / SC

Mensagempor hertzing » 06 Nov 2011 14:48

Usei em meu projeto a taxa de transmissão em 1200Bps.

Uma dica, nos módulos que trabelhei, percebi que os primeiros Bits transmitidos chegavam falhados. Mas após de alguns enviados a comunicação ficava estável.
Se tiveres o mesmo problema, faça um protocolo com checksum. Assim sempre quando iniciares uma comunicação envie um "lixo" antes do dado.

Abraço
Avatar do usuário
hertzing
Byte
 
Mensagens: 119
Registrado em: 12 Jan 2011 13:26
Localização: Blumenau / SC

Mensagempor uilter » 07 Nov 2011 14:10

Andre_Cruz escreveu:uilter,

Véio usei uma certa vez um desses radinhos, pra ele enviar corretamente precisei sempre enviar algum dado, pois quando eu parava de enviar e precisava enviar algum dado ele não funcionava direito.
Tem um tópico do fabim falando programa para controle remoto que ele sugere um resistor ñ me lembro em qual pino ele vai mas ele ajuda a diminuir o ruído.
Acredito que jaja o próprio de a dica.

Abraço


Obrigado pela dica. Vou procurar esse tópico do Fabim.

Vlw
o/
uilter
Nibble
 
Mensagens: 76
Registrado em: 05 Out 2010 15:56
Localização: São Paulo

Mensagempor uilter » 07 Nov 2011 14:24

hertzing escreveu:Fiz como Projeto de final de curso, um carrinha de controle remoto.
Utilizei dois PIC e uns módulos parecidos com esses, mas da Telecontrolli.

Estais trabalhando com qual tensão no módulo emissor?
Comparasse no osciloscópio o TX com o RX?



O PIC que esta enviando os dados esta alimentado com 3.3v e oq esta recebendo esta alimentado com 5V.
uilter
Nibble
 
Mensagens: 76
Registrado em: 05 Out 2010 15:56
Localização: São Paulo


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x