# Modulos de RF y PIC (RUIDO)



## Jairo (Oct 7, 2008)

Holas saludos  a todos.

Estoy realizando un proyeto con los modulos de radio frecuencia, los comunes que se encuentran en cualquier electronica, pero tengo un gra problema y hasta ahora no le encuentro solucion. Justo cuando dejo de transmitir, el receptor comienza a recivir ruido, y esto le afecta al receptor que es hecho con un micro, el cual maneja interrupcion por recepcion, el micro interpreta al ruido como que fuera un dato, aunq invalido pero a la final dato y cuando efectivamente quiero enviar un dato este no se sincroniza entre recepcion y trasnmision, no se como hacerlo o si debo poner algun filtro o algo....

Es decir para mi es como que lee mitad de ruido y mitad del dato valido, el micro no diferencia el inicio de la transmision verdadera vs el ruido

O si me dan otra solucion muchas gracias

Jairo


----------



## calculin60 (Oct 9, 2008)

No se que tipo de señal transmites, pero una solucion posible es que uses un pll, para que cuando dejes de transmitir este se active y envie un tono de audio en la frecuencia que tu quieras, y sintonices el receptor a ese tono de audio con otro pll, de esa forma, el sin datos transmitidos tenes el tono unico y facilmente reconosible, lo otro es que uses un trigger smith (creo que se escribe asi), para eliminar ruidos. cualquier cosa detalla mas lo que queres hacer para ayudarte. Saludos


----------



## Jairo (Oct 9, 2008)

hola

Primero que es un pll, no lo conozco y lo que quiero hacer es lo siguiente...
Un micro esta conectado al transmisor de radiofrecuencia, la forma en la en envio es como transmisión serial, es mas utilizo pic basic para hacerlo, es decir, simplemente en vez del cable que se utiliza para comunicacion entre dos micros, utilizo los modulos de radio frecuencia, entonces en el receptor esta conectado otro micro y este intenta leer la transmision como si fuera por un cable, pero ahi tengo problemas con la sincronizacion porque no sabe cuando empieza a transmitir....y todo esto por el ruido

espero que este un poco mas claro, mi segunda opcion que voy a intentar es con los decodificadores haber si con eso funciona, cualquier ayuda muchas gracias

Saludos Jairo


----------



## calculin60 (Oct 9, 2008)

Bien, un pll es un chip que puede ser usado para modular por tonos de audio una portadora y tambien demodularla , dando un alto o un bajo cuando esta esta presente o no en el recptor, si queres saber mas sobre pll busca la hoja de datos del LM567 que es bastante comun, pero no se si ne tu caso te serviria. Tal vez funcione enviando esta señal cuando no trasmitas datos, en este caso el receptor no estara recibiendo basura sino el tren de pulsos que a travez del LM567 te permitira habilitar o deshabilitar la lectura le micro con un alto o un bajo que te entrega el pll. Por experiencia propia conviene que no dejes que el receptor quede sin recibir nada, por que ese ruido puede hacer cuelquier cosa. En cierta forma lo que te proponia es lo que vos llamas segunda opcion, osea codificacion por tonos por pll. Saludos


----------



## daos (Dic 4, 2008)

Hola q tal, me intereza mucho tu proyecto! q pics usas ? q modulos de RF usas?
me gustaria conocer tu diagrama y el codigo q utilizaste para ambos pics.

Saludos desde acapulco mexico!




			
				Jairo dijo:
			
		

> Holas saludos  a todos.
> 
> Estoy realizando un proyeto con los modulos de radio frecuencia, los comunes que se encuentran en cualquier electronica, pero tengo un gra problema y hasta ahora no le encuentro solucion. Justo cuando dejo de transmitir, el receptor comienza a recivir ruido, y esto le afecta al receptor que es hecho con un micro, el cual maneja interrupcion por recepcion, el micro interpreta al ruido como que fuera un dato, aunq invalido pero a la final dato y cuando efectivamente quiero enviar un dato este no se sincroniza entre recepcion y trasnmision, no se como hacerlo o si debo poner algun filtro o algo....
> 
> ...


----------



## tom1612 (Feb 17, 2009)

Hola Jairo,
intenta incluir al inicio y al final de cada  transimision un codigo, tal que el receptor sepa cuando tomar en cuenta los datos y cuando no.

Estoi trabajando en lo mismo , con pic 16F877 y modulos rf de 400 Mhz.


----------



## Christianknt (Jul 30, 2009)

Alguien encontro solucion a este problema? desde ya, gracias


----------



## tom1612 (Jul 30, 2009)

Tuve un problema parecido y lo solucioné de la siguiente manera:
Utilice el pic 16f877 ( en transmisión y recepción), con cristal de 4 MHz. Configuré el protocolo de transmisión serial  ( USART)en los dos pic. Con este protocolo los pics se encargan de validar los datos haciendo la comunicación transparente (para nosotros).
Para probar la comunicación puedes conectar el pin de transmisión directo al pin de recepción, estando eso bien, conectas el transmisor y el receptor.
Debes asegurarte de que los anchos de pulso de los datos transmitidos estén dentro del rango que acepta el transmisor y receptor. Si son pequeños, no se alcanzara a leer y si son muy largos el transmisor cortara el ancho del pulso al valor máximo que acepta. Es por esto que en mi caso los datos de recepción eran distintos al transmitido.
Espero haberte ayudado


----------



## Christianknt (Jul 30, 2009)

Bueno, entonces si te referis al ancho de los pulsos, estas haciendo referencia a la frecuencia de trabajo o a la cantidad de baudios, me podrias decir a que velocidad configuraste la usart para lograr una correcta comunicacion? Saludos


----------



## tom1612 (Jul 30, 2009)

la frecuencia de trabajo es 4Mh
y la velocidad de transmsion 9,6 Kb

eso lo haces modificando el registro SPBRG, con el valor 25, (ejemplo)

bcf TRISC,6		;Configuras el pin de salido (RC6/TX )
movlw d'25'		;25=9,6 Kb para un xtal de 4Mhz ( existe una tabla en el manual)
movwf SPBRG
bcf TXSTA,BRGH	;para probaj a baja velocidad o bsf para alta velocidad
bcf TXSTA,SYNC	;seleciona modo asincronico

obviamente te pones el el banco corespondiente.


----------



## Christianknt (Jul 31, 2009)

a 300 baudios lo tengo configurado, es muy poco (considerando que voy a transmitir por rf)? saludos


----------



## tom1612 (Jul 31, 2009)

va a depender de la cantidad de datos que quieras enviar.
para un par de bit esta bien, pero si quieres enviar mas canales  lo mejor es trabajar
a la maxima velocidad

intenta ir subiendo la velocidad gradualmente y observa si tienes perdida de datos.


suerte!


----------



## alfonso82 (Jul 31, 2009)

Bueno yo estube practicando con unos de estos modulos y tambien tube problemas con el ruido y lo que encontre en un foro es que se suele mandar un dato de "sincronizacion" antes del se quiere ejecutar, este dato de "sincronizacion" normalmente es 55h o AAh (en dinario son 01010101 y 10101010) y despues de este dato se manda el dato que se va a utilizar, es decir que el programa de tu receptor tiene que reconocer si recibio el dato de "sincronizacion" y si lo recibio tiene que esperar el siguente codigo para realizar la tarea que se desae e ingnorar cuarquier otro dato que reciba sin el codigo de "sincronizacion" antes del dato. Otro aspecto que me cauzo problemas es que no se puede mandar una sola vez el paquete de datos, se tiene que mandar varias veces, en mi caso lo mandaba 10 veces cada vez que precionaba un boton y me funciono bien.

Otro dato, los modulos de RF mas usados son los que trabajan a 434 Mhz o 315Mhz y hay unos que tienen como maxima velocidad de transferencia 4800 Bps y otros 2400 bps, por lo cual si no saben cual de los dos modelos tienes les recomiendo que comiencen probando con 1200 bps y luego que comprueben que su programa funciona suban la tasa de transferencia.


----------



## Christianknt (Ago 5, 2009)

mi problema es que al no entrar ningun dato en el transmisor, recibo basura y eso es lo que bloquea el pic.. alguno encuentra solucion a este problema?

saludos


----------



## alfonso82 (Ago 5, 2009)

No se si tienes un osciloscopio para que pruebes que es lo que pasa en el pin de recepcion de datos en el receptor al momento que mandas algun dato con tu emisor, de esta formas veras si tu receptor esta captando lo que tu mandaste con tu emisor, porque yo tube el mismo problema, cuando mi emisor no estaba mandando nada el recepto solo recivia basura, pero al momento que ponia a funcionar mi emisor desaparecia la basura y se notaba como los datos empezaban a llegar al receptor, cuando hice esta pueba fue cuando me di cuenta que tenia que mandar el mismo dato mas de una vez pq normalmente la primera vez que recive el dato enviado lo ingnora, por dicha razon debes mandarlo mas de una vez.

Saludos y espero haberte ayudado.


----------



## stinki (Nov 24, 2009)

Hola que tal soy nuevo en el foro, nose si ya resolvieron este problema pero  pues me gustaria una pequeña ayuda tambien me encuentro con el mismo problema y segun mi caso esto se deveria resolver con una major codificacion de los datos, navegando me encontre esta pagina sobre envio en rf y seria con codigo manchester, pero no encuentro no entiendo bien el codigo nose si alguno de ustedes lo aya corregido de otra manera mas eficiente aqui les dejo el vinculo http://www.picbasic.co.uk/forum/showthread.php?t=198


----------



## jhefren (Nov 25, 2009)

La solucion es como la dice @alfonso82 tienes que crear un byte de validación al inicio y despues envias el dato. yo trabaje con esos modulos, especificamente con los Laipac  y se les mete ruido, pense que era un problema de fuente o un ruido por calentamiento, pero no era así, despues cree una rutina como lo indica @alfonso82 de la siguiente forma


1 byte validacion  Colocas un valor que reconozca el pic y si es correcto sigue recibiendo datos, sino no lo acepta y queda en modo espera.
2 byte de datos, la informacion que queres transmitir
y 1 byte de finalización,

por ultimo debes tener configurado el modulo  usart del pic  para trasnmitir datos....


----------



## giovamolina (Feb 9, 2010)

Buenas noches, me podrías indicar de que forma generar o hacer la rutina para el código de validación, ya que estoy tratando de enviar un dato desde un pic12f629, a un pic 16f84a, el dato lo logro enviar desde el pic12f629, pero a la hora de recibir el dato en el pic16f84a es donde tengo problemas, te agradecería cualquier ayuda....


----------



## julio625 (May 4, 2010)

hola soy nuevo en el foro:

conrepecto al ruido yo lo mejore haciendo una serie con una resist 10o ohm y un condensador de 10 micros entr los pines vcc y gnd 

a la salida del receptor coloque un comparador para asi tener los nieveles de voltaje o y 5 voltios

yo uso los modulos tws44


----------



## jalva (May 4, 2010)

Para codificar pueden usar la codificacion "Manchester" y para los ruidos usen capacitores de 100nf en la alimentación de cada componente, lo mas cerca de cada componente.
Tienen un receptor y un PIC; entonces usan un capacitor para la fuente, otro para el receptor y otro para el PIC.
A mi paso algo parecido trabajando con Rfid, la emision de la antena volvía loco al 16 f648A con el que recibía los datos...


----------



## hakd (Jun 3, 2010)

otra manera de resolver ese problema es usar un codificador y un decodificador, el problema reside en que si no transmites nada el receptor recibe ruido y en ese ruido puede atinarle a tu combinacion de validacion entonces si usas un encoder siempre estaras "transmitiendo" de forma codificada y el el decodificador hara su trabajo y el microcontraldor recibira lo que sea q*UE* mandes checa los HT12E y el HT12D te dejo un link para q*UE* lo che*UEE*es como se conectan 
http://www.robodacta.com.mx/UserFiles/File/DIAGRAMAS.pdf


----------



## Rey55 (Ago 27, 2010)

yo tengo el mismo problema y la verdad no se me ocurre como hacer una rutina de este tipo si alguno pudiera dar un ejemplo se les agradece


----------



## el-rey-julien (Ago 28, 2010)

los módulos receptores tienen dos salidas,una análoga y otra digital,en la salida análoga se escucha ''sonido blanco'' el típico shhhhhhhhh ,pero en la patita de salida digital no tiene ruido ,en esa patita hay que conectar el pic o el  integrado de-codificador


----------



## Danielblackbass (Ene 7, 2011)

Tienes que permanecer mandando un dato aunque no pulses nada por ejemplo que siempre este enviando @ y a recivir otro dato funcion y asi no se corta la comunicacion es la solucion que yo use pero con la velocidad de N2300 para que no se equivoque intentalo con otras yo use el 16f870.

Y si sabes mas codigos o encontraste algunos buenos links o diagramas porfavor publicalos pana HablamoS.


----------



## engeldark (Mar 11, 2011)

Hola Chicos como estan weno yo puedo sugerirles algo, como dicen una solucion puede ser esta:

-Envien una cantidad de bytes para sincronizar los modulos, por ejemplo enviar 10 veces el 0x09
-Enviar los bytes que quieran o crear el protocolo que se les ocurra en codificacion byte-bit,
me explico,  si quieren enviar el byte 0xAA al otro micro, tendran que enviar bit por bit mediante el RF
asi para enviar el 0xAA  tendran que enviar por ejemplo el 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F 0xF0 0x0F
por cada 1 logico enviaran el 0xF0 y por cada 0 logico el 0x0F (si lo ven bien, algo tan robusto como la codificacion manchester)  =), finalmente su sistema solo trabajara con 3 valores:
0x09 para sincronizacion
0xF0 para enviar un 1 logico
0x0F para enviar un 0 logico

seguramente todos usan comunicacion por modulacion ASK...
hagan lo q*UE* les dije, si bien la comunicacion se hace algo lenta, NO CREO Q*UE* TRANSMITAN GRANDES CANTIDADES DE DATOS,.... ni lo sentiran y veran lo feliz que salen =), saludos desde lima peru


----------



## stinki (Mar 11, 2011)

Hola que tal alguien de ustedes a utilizado el transceiver RFM 23 
http://www.hoperf.com/rf_fsk/rfm23.htm


----------



## vevo (Abr 10, 2011)

Engeldark, una consulta: ¿Que beneficios tendria codificar, si el problema viene por el ruido?

Entiendo perfectamente lo que propones, pero por ejemplo, codificar un bit con 0xF0, de que serviria si no puedo garantizar de que el receptor le llegue un 0xF0? Que cambia con respecto a mandar caracteres normales? 0xF0 es 11110000 en binario... si hay mucho ruido, tranquilamente esos 1 y 0 pueden cambiar, y entonces al receptor le llegaria otra cosa... 

Vos me podrias decir que por software elimine todo lo que no sea 0xF0, y me parece perfecto, pero si lo elimino evidentemente voy a perder un bit de dato, y eso dañaria mi comando enviado...

En fin, siempre estaria con problemas con el ruido...
Gracias por tu tiempo.


----------



## engeldark (Jun 25, 2011)

puedes hacer un conteo de bits para saber ti es 1 o 0 lógico....si al enviar 0b11110000 tratas de comunicar un 1 logicos entonces en el receptor verificas esos bits y en el en nible mas significativo tienes mas 1s que 0s entonces tendras el 1 logico si te das cuenta, disminuyes la probabilidad de error


----------

