Ir ao conteúdo

Posts recomendados

Postado

boa tarde a todos, bom, sou novo no fórum, e venho aqui pedir ajuda: a questao é o seguinte, eu fiz um controle remoto com IR com o pic 16f628a, e funcionou certinho, agora quero fazer com transmissão RF, o código ficou assim

#include <16F628A.h>

#FUSES WDT //No Watch Dog Timer
#FUSES PUT //Power Up Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(int=4000000)
#use rs232(baud=1200,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1)

void main()
{
// setup_timer_2(T2_DIV_BY_1,30,1); //26.0 us overflow, 26.0 us interrupt


set_pwm1_duty((int16)40);

setup_comparator(NC_NC_NC_NC);



while(TRUE)
{
if(!input(pin_a0))
{
output_high(pin_b1);
delay_ms(5);
putc(0b00001011);
output_low(pin_b1);
}

if(!input(pin_a1))
{
output_high(pin_b1);
delay_ms(5);
putc(0b00010011);
output_low(pin_b1);
}

if(!input(pin_a2))
{
output_high(pin_b1);
delay_ms(5);
putc(0b00011011);
output_low(pin_b1);
}

if(!input(pin_a3))
{
output_high(pin_b1);
delay_ms(5);
putc(0b00100011);
output_low(pin_b1);
}

if(!input(pin_a4))
{
output_high(pin_b1);
delay_ms(5);
putc(0b00101011);
output_low(pin_b1);
}

if(!input(pin_b4))
{
output_high(pin_b1);
delay_ms(5);
putc(0b00110011);
output_low(pin_b1);
}

if(!input(pin_b5))
{
output_high(pin_b1);
delay_ms(5);
putc(0b00111011);
output_low(pin_b1);
}

if(!input(pin_b6))
{
output_high(pin_b1);
delay_ms(5);
putc(0b01000011);
output_low(pin_b1);
}

if(!input(pin_b7))
{
output_high(pin_b1);
delay_ms(5);
putc(0b01001011);
output_low(pin_b1);
}
delay_ms(100);
}
}

eu deixei o baud = 1200, pois pelo que pesquisei o máximo da taxa de transmissão é cerca de 2400 e 1200 foi o que usei com IR, eu comprei dois modulos transmissores e receptores no mercado livre, ( http://produto.mercadolivre.com.br/MLB-520591043-433mhz-rf-link-tx-e-rx-para-arduino-avr-mcu-arm-_JM ) porém nao funciou é possivel ver no receptor que o controle esta enviando algum sinal, pois coloquei um led na saida do modulo receptor e quando aperto alguma tecla do emissor o led pisca no receptor, mas porém nada acontece, a imagem a seguir é do emissor, observer que adicionei um transistor para chavear a alimentação do modulo emissor representado pelo led, para que nao fique alimentado o tempo todo consumindo assim a bateria, ou seja assim que uma tecla é acionada, b1 vai ao nivel alto, polarizando a base do transistor fazendo conduzir e alimentando assim o modulo TX, tempo é esperado para que o modulo se estabilize então é enviado o codigo, logo apos b0 vai ao nivel baixo desenergizando o modulo tx, como podemos ver no codigo e no imagem do proteus,

image.jpg

aqui esta o codigo do RX

#include <16F628A.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES PUT //Power Up Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(int=4000000)
#use rs232(baud=1200,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8,stream=PORT1)
int a[8];
int x;
int i;



void main()
{
output_high(pin_a0);
delay_ms(1000);
output_low(pin_a0);

while(TRUE)
{
for(i=0; i<10; i++){

a[i]=getc();
x=a[i];
if(a[i]==0b00001011){
output_toggle(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);

}
if(a[i]==0b00010011){
output_low(pin_a0);
output_toggle(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);

}
if(a[i]==0b00011011){
output_low(pin_a0);
output_low(pin_a1);
output_toggle(pin_a2);
output_low(pin_a3);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);

}
if(a[i]==0b00100011){
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_toggle(pin_a3);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);

}
if(a[i]==0b00101011){
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_toggle(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);

}
if(a[i]==0b00110011){
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_low(pin_b3);
output_toggle(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);

}
if(a[i]==0b00111011){
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_low(pin_b3);
output_low(pin_b4);
output_high(pin_b5);
output_low(pin_b6);
output_low(pin_b7);
}
if(a[i]==0b01000011){
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_toggle(pin_b6);
output_low(pin_b7);

}
if(a[i]==0b01001011){
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
output_low(pin_b3);
output_low(pin_b4);
output_low(pin_b5);
output_toggle(pin_b6);

}

}
}

}
/////////////////////////////////////////////////

desde ja agradeço a todos!!! muito obrigado

Postado

Infelizmente nao poderei auxiliar na programacao, mas:

1 - Substitua os dois modulos (Tx e Rx) por dois fios (sinal e terra) e veja se esta funcionando.

2 - Em principio, mantenha o modulo Tx sempre alimentado, para eliminar a possibilidade de ser o tempo de normalizacao de funcionamento.

3 - Acho (verifique) se realmente é necessario o tal circuito de alimentacao para o Tx. Verifique se para um determinado nivel de sinal, ocorre o nao consumo no modulo Tx. Caso afirmativo, use-o como estado nao ativo. Talvez possa ser necessario considerar inverter o sinal.

Bem-vindo ao forum e Feliz Natal.

MOR_AL

Postado

eu fiz esse teste hoje, com a ligaçao direta funciona normalmente, liguei a alimentação do tx direta, mas continuou no mesmo jeito, então resolvi ligar a saida do RX em um amplificiador pra ver se dava pra ouvir o sinal do controle, ja que nao tenho osciloscopio, feito isso, eu ouvir os pulsos do controle, porém com um grande chiado junto, então aproximei bastante o rx do tx então o chiado diminuiu e os pulsos do controle aumentaram, e de vez em quando ate aciona um ou outro led, mas quando afasto tudo fica ruim, o chiado aumenta e os pulsos diminuem, eu comprei dois modulos, mas os dois estão do mesmo jeito, outra coisa nas caracteristicas dos modulos diz que ele pode ser alimentado de 5 a 12v, aumentei a tensão separadamento do pic mas continuou do mesmo jeito, tentei ajustar um dos modulos rx mas de nada adiantou, o maximo que consigo algum resultado e aproximando o tx do rx cerca de 1 metros! mais que isso nao funciona! grato pela ajuda!

Postado

Os modulos devem possuir uma antena (um pedaco de fio) de 1/4 do comprimento de onda ou cerca de uns 17,3cm. Ambas devem, de preferência, serem paralelas entre si.

Isso aumenta tanto a energia transmitida como a sensibilidade do receptor.

Parece que ou a antena ja esteja presente, ou é o indutor do circuito tanque.

Se o fio que aparece estiver soldado em ambas as extremidades, então tente manter as duas bobinas com os eixos paralelos.

Tambem pode-se usar algum formato ou protocolo de comunicacao. Isso aumenta a possibilidade de identificar ruidos.

MOR_AL

Postado

os modulos que estou usando é esse aqui

http://produto.mercadolivre.com.br/MLB-520591043-433mhz-rf-link-tx-e-rx-para-arduino-avr-mcu-arm-_JM,

so que so esta escrito antena em um deles o emissor, no outro so tem um furo para soldar, logo eu soldei um pedaço de fio de mais ou menos 20 cm, foi assim que ate um metro de distancia da alguma resposta, mais longe continuar a mesma coisa, será que tive a infelicidade de comprar produto de má qualidade rsrs!

Postado

Faz um teste simples :

Alimente apenas os modulos de tx e rx.

Coloque um Led com um resistor na saida do seu módulo de Rx. Por exemplo, 1k , ou apenas coloque um multimetro na saída e veja se a tensão muda.

Coloque a entrada do TX em nivel alto, e veja se acontece algo na saida do receptor.

Se isto não acontecer, seus módulos não estão "conversando" , pode ser problema com as frequências diferentes.

Esses módulos são tão baratos que nem devem ser testados kkkkkk !

Paulo

Postado
Faz um teste simples :

Alimente apenas os modulos de tx e rx.

Coloque um Led com um resistor na saida do seu módulo de Rx. Por exemplo, 1k , ou apenas coloque um multimetro na saída e veja se a tensão muda.

Coloque a entrada do TX em nivel alto, e veja se acontece algo na saida do receptor.

Se isto não acontecer, seus módulos não estão "conversando" , pode ser problema com as frequências diferentes.

Esses módulos são tão baratos que nem devem ser testados kkkkkk !

Paulo

amigo Paulo, esse teste eu ja tinha feito, mas so funciona se os modulos estiverem a uma distancia de menos que 1 metros, com antena chega ate uns 3 metros agora, peguei um RX de uma placa de portao eletrônico, e fica do mesmo jeito, então as chances de ser o codigo esta aumentando!

Postado

Só 3 metros, com antena ???? Tem algo errado !

Se o alcance é tão pequeno, não adiante tentar velocidade de 1200 bauds. Eu tenho um parzinho desses de 433 que comprei fazem mais de 2 anos, e eu consegui mais de 20 metros com eles, apenas com uma pequena anteninha, e alimentando com 5 volts.

Usei 300 Bauds, e funcionava tranquilo, a pouco mais de 20 metros.

Creio que um desses módulos esteja defeituoso. Faça o seguinte, use o baud rate mais baixo possivel e veja se consegue funcionar.

Uma dica para aumentar o alcance é alimentar com 12 volts o transmissor, se não me engano ele aceita até 15 volts.

Paulo

Postado

Observei que no modulo receptor ha uma indutancia com núcleo regulavel. Talvez esteja dando problema de frequencias diferentes entre os modulos.

Pegue ou faca uma ferramenta para ajustar essa frequencia.

Eu fiz uma com caneta BIC e uma ponta pequena de chapa fina de cobre. Em outra usei um pedaco pequeno de lamina d faca alfa.

O ajuste da frequencia é bem critico e com ponta de material magnetico na chave de fenda, a frequencia de sintonia altera ao afastar a ferramenta.

Faca o transmissor transmitir continuamente, com tensão de alimentacao pequena para nao queimar o Tx.

Vah alterando o valor da indutancia e use o teste que o Paulo informou.

Na medida que a recepcao for melhorano, vah aumentando a distancia.

MOR_AL

Postado

bom dia a todos, demorei pra responder pois estava tentando todas possibilidade que foram proposta e que eu pensei tambem, infelizmente sem nenhum sucesso, alem de tudo que foi proposto eu baixei o baud para o limite minimo que no caso foi 250, alimentei o transmissor com 12v, troquei o receptor, ate usei o pc como osciloscopio, para ver a forma de onda quando o sinal é recebido, da pra ver que o sinal chega no pic receptor, apesar do ruido é possivel indentifica-lo, mas quando afasto o transmissor so recebe ruido, ou seja de nada adiantou, eu vou comprar outros modulos pra fazer teste, desta vez mais caros um pouco ne kkkkk, para garantir que o erro e meu e nao do modulo, obg a todos!

alguem tem uma dica de qual modulo é melhor eu comprar?

Postado

obg Paulo! mas esse deve ser mais complicado para ausar ne? pois tem umas siglas que nao entendi, como pino 3 (CE), 4 CSN, 5 eu imagino que seja clock, 6 (MOSI), 7 (MISO) e 8, (IRQ), nao é so VCC, entrada de dados E GND?

eu preciso de um modulo basico mas que funcione bem, o meu projeto é para controlar refletores de iluminação a distancia, pois trabalho com filmagem e quero automatizar essa parte, de maneira que eu fique a uma certa distancia dos refletores tipo 20 mestros e possa liga-los e desliga-los de maneira fácil, eu pensei em usar IR mas o alcançe nao é bom alem de ter que ter visada, então pensei no RF

  • 3 semanas depois...
  • 1 ano depois...
Postado

Olá. Aproveitando o tópico:

 

Gostaria de saber: Se eu colocar 5 Volts constante na entrada do tx, tem que ter nível high constante na saída do rx? 

Eu posso utilizar a saída serial do pic ligado direto nos pinos de dados destes módulos? Obrigado!

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!