TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: geronimoo en 30 de Mayo de 2006, 22:13:17
-
holas picmanicos tengo un problema existencial..
ya hace una semana que vengo tratando de ahcer funcionar esto..
tengo 2 16f84 y un par de receptor emisor RF tws434
el problema es que enciendo los micros e inmediatamente el receptor empieza a escribir basura en la lcd... no siendo asi lo que envia el emisor.. aunque el emisor no este enviando, el receptor recibe basura
probe desconectando la entrada de datos del pic y de todas formas en el lcd se sigue escribiendo basura :(
ojo que por ahi aveces logro leer lo que realmente estoy enviando con el otro pic, muy raras veces
¿es posible que sea prque teng todos los cables del lcd cerca del modulo receptor de rf?
luego intente cambiar los modulos de RF por emisor y receptor IR Tsop.. pero me fue peor que antes... ahora no recibia basura (lo bueno), pero cada dato que enviaba, el receptor recibia FF... lo comprobe porque hice que lo escribiera en la eeprom...
Posibles soluciones?
¿puede ser q mi codigo este mal (uso el mismo para IR y RF) ?.. tengo que incluir use_fast_io()????
Aca pongo el code..
#####################
#EMISOR
#####################
#include <16F84A.H>
#use delay(clock=4000000)
#include <LCD.C>
#fuses XT,NOWDT
#use rs232 (baud=300,bits=8,parity=N,xmit=PIN_A0,rcv=PIN_A1)
void main(){
while(TRUE){
putc('h');
putc('o');
putc('l');
putc('a');
putc(' ');
putc('0');
putc('1');
putc('2');
putc('\n');
puts("jeje todo bien\n");
delay_ms(1000);
}
}
#####################
#RECEPTOR
#####################
#include <16F84A.H>
#use delay(clock=4000000)
#include <LCD.C>
#fuses XT,NOWDT,PUT
#use rs232 (baud=300,bits=8,parity=N,xmit=PIN_A0,rcv=PIN_A1)
void main(){
char carac;
lcd_init();
lcd_putc("DATOS RECIBIDOS:\n");
while(TRUE){
while(!kbhit());
carac=fgetc();
lcd_putc(carac);
}
}
... que hago con el pin A0 pr ejemplo en el receptor ? ya que no esta en uso.. lo pongo a masa? o lo dejo desnudo al aire :P
espero q me puedan sacar estas dudas... se me carcome la paciencia de tanto reprogramar el pic :(
saludos a todos y sigan asi q el foro me hizo descubrir un muy lindo hobby :mrgreen:
suerte
-
hola geronimo
bueno mira yo nunca use un pic en RF ,pero te puedo decir que en todos los programas que e realizado tuve que configurar los puertos como salida o como entrada ,no veo eso en tu programa.
Pues no se si no le indicas al pic por donde entran los datos y por donde salen como se entera este donde deve leer y donde debe escrivir.
yo creo que deberias configurar los puertos.
bueno ya me contaras un saludo juan
-
tenia entendido que no hacia falta, ya que la directiva
#use rs232, los configuraba por mi.. :(
pero de todas formas intente declarando los puertos como entrada y salida cuales correspondia.. y sigue funcionando mal.
essta vez funciona un poco mejor ya que me deshice dle lcd, porque los cables interferian con el modulo receptor...
pero de todas formas anda para el buje jeje :?
y encima hay algo mas raro que esto, en el emisor conecto un diodo IR y en el receptor pongo el modulo de RF... y tachaaaan el modulo receptor recibe basura cuando el diodo IR esta enviando datos .. :shock:... no se como eso es posible , pero voy a intentar aislar electrica y estaticamente los dos circuitos comprandome otra bateria y otro lm7805 y probando las 2 protoboards (un circuito en cada una) por separado.. cada una con su alimentacion y bien lejos de la otra
saludos.. si se les ocurre algo mas :S bienvenido sea :-)
-
pues lo de la rs 232 no lo tenia que era asi pero bueno es posible.
en cuanto a las aislaciones pues si que te vas atener que detener en detalles .
ya que los ruido te ban a joder mucho pero bueno yo te diria que empieces por aislar todo bien y muy prolijo.
asi te desligas de que pueda ser ruido
-
Hola si estas usando los modulos "rws" en la salida digital si te fijas sale ruido casi siempre, aunque no estes transmitiendo nada creo que el problema esta por hay, pone una rutina para filtrar los datos a mostrar en el lcd o transmitir a baudios mas altos.
-
para dsligarme de la basura q recibo.. voy a tratar de agregar en el circuito los codificadores de holtek.. aver q onda.. porque estoy hasta las bolas de ruido :P
aver q pasa
saludos
-
Yo hace poco estuve haciendo pruebas con unos modulos de Aurel y al principio tambien tenia recepción de ruido y problemas de transmisión.
Mis conclusiones fueron que : Sin la antena correspondiente, tanto en el modulo de transmision como el de recepción, olvidate de conseguir nada.
En lo referente a la transmisión de datos, mi prueba fue conectar el puerto serie al transmisor y el receptor RF mediante un conversor (tipo MAX485) y mediante el hiperterminal mandaba ficheros de texto con caracteres repetidos (cuidado : no es lo mismo que mantener una tecla pulsada).
De este modo desde el mismo hiperterminal mandaba un fichero de caracteres y recibia parte de los mismos. Segun la velocidad de transmisión y recepción se perdian más o menos carácteres.
Suerte
-
Hola Geronimoo!
Mira esto. Aunque la solución no está muy clara puedes ver algun dato que te resulte interesante.
http://www.todopic.com.ar/foros/index.php?topic=8307.msg55950#msg55950
Un saludo desde Alicante.
-
--------------------------------------------------------------------------------
Hola, aqui te pego lo que tengo andando, es un control remoto para alarma, veras lo unico que hace es recibir el codigo y cambiar el estado de un bit, puedes arreglar el codigo para que reciba el string y lo ponga en un LCD, afirmado lo que dicen mas arriba lo que hago, por que hay ruido continuamente en la salida digital del modulo, es 'validar' el primer dato en mi caso con el '*' y a partir de ahi recien comienzo a guardar lo que recibo, ademas el receptor antes de operar sobre la salida compara 2 veces el dato recibido, en mi aplicacion definitiva inclui en la trama un CRC32, entonces si se pierde algo el receptor puede 'analizar' lo que recibe antes de realizar alguna operacion, el modulo receptor esta conectado directamente al modulo, y el transmisor tambien, seria una buena idea hacer lo que comenta Chaly, invertir la trama para ahorrar energia, para esto habria que agregar la opcion 'INVERT' quedaria asi:
#use rs232(baud=300,xmit=PIN_A0,bits=8,invert) // como solo transmite solo configuro un pin
Claro, tambien habria que agregarlo en el receptor.
espero que te sirva.
--------------------------------------------------------------------------------
TRANSMISOR
#include <10F206.h>
#use delay(clock=4000000)
#use rs232(baud=300,xmit=PIN_A0,bits=8) // como solo transmite solo configuro un pin
#use fast_io (a)
const char password[5]="1234";
void main() {
setup_counters(RTCC_INTERNAL,RTCC_DIV_16);
set_tris_a ( 0b111110 );
while (true){
PUTC ('*'); // START CARACTER
printf("%s",password); // PASSWORD O CODIGO DE 32 BITS
delay_ms (100);
}
}
RECEPTOR (uso un 16f627 que tiene modulo usart y me valgo de la interrupcion pero
se puede hacer con un 16f84 usando la interrupcion de rb0 o khbit())
#include <16F627.h>
#device *=16
#zero_ram
#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, BROWNOUT, NOMCLR, NOLVP, NOCPD
#use rs232(baud=300,parity=N,xmit=PIN_B2,rcv=PIN_B1)
#use fast_io (B)
#priority RDA,RB,TIMER1
#byte RCREG=0x1a
#include <string.h>
char string[5];
char password[5]="1234";
short display,validar,bit;
int caracter,veces;
#INT_RDA // rutina de interrupcion por recepcion serial
rda_isr () {
int i;
if (RCREG=='*'){
for (i=0;i<=3;i++){
STRING=getc();
}
validar=1;
}
}
void main()
{
set_tris_A (0B11111011);
set_tris_b (0B11111111);
port_b_pullups(TRUE);
setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
delay_ms (1000); // espero 1 segundo antes de arrancar
enable_interrupts(INT_RDA); // set interrupcion rs-232
enable_interrupts(global);
veces=0;
while(true){
if (validar){
if (!strcmp(string,password)){
validar=0;
if (++veces==2){
output_bit (PIN_A3,!input(PIN_A3)); // ENCIENDE O APAGA EL LED
// CADA VEZ QUE ENTRA 0N/OFF
delay_ms (500); // ESPERA 500 antes de leer de nuevo
veces=0;
}
}
}
}
}
-
gracias a todos voyaprobar a ver que onda
-
Hola saludos, pues te comento que yo use los modulos tws-433 y me salio todo de maravilla, pero primera cosa que no debes usar es rs-232, ya que ahí el ruido se mete como diablo (hasta las bolas como dijiste, jajaja), no se ve nada!!, rara vez, por azares del destino, jaja, debes usar otro tipo de codificación, podrias usar talvez manchester, o algun protocolo de controles remotos, yo use el rc-5 de phillips (que lleva codificación manchester); este protocolo puede adaptarse a los modulos RF qeu usas, aca te dejo el link: http://www.todopic.com.ar/foros/index.php?topic=11964.30 lee todo por si acaso, no recuerdo muy bien todo lo que dice, principalmente recuerdo muy bien los aportes de ALGEC (los cuales use, y funciono muy bien), pruebalos llevan simulaciones en proteus; aca los protocolos: http://www.xs4all.nl/~sbp/knowledge/ir/rc5.htm espero te sirva, cualquier consulta hazla, en lo qeu pueda te ayudaremos, vale?? adios.
-
na sos un master
creador del cielo y la tierra
bueno nopaara tanto
gracias loco voy a probar..
saludos