Autor Tema: Problema con comunicacion serial entre PIC16f877a y Xbee serie 1 pro  (Leído 2030 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado krixxx

  • PIC10
  • *
  • Mensajes: 3
Problema con comunicacion serial entre PIC16f877a y Xbee serie 1 pro
« en: 15 de Noviembre de 2014, 00:26:58 »

Buenas, primero que nada nose si este es el lugar para publicar esto, pero lo hare para salir de las dudas.

Soy nuevo en este foro y agradeceria mucho de su ayuda.
El circuito que trato de diseñar es controlar servomotores sg90 mediante comunicacion Inalambrica con 2 modulos Xbee y 2 pic16f877a.
La secuencia de comunicacion es la siguiente e identificare los pics como PIC1 y PIC2.

El PIC2 envia un dato por el puerto serial a el PIC1 (TX2 a RX1), este toma ese dato y envia una respuesta de control para el servomotor (TX1 a RX2), luego el PIC2 vuelve a enviar otro dato hacia el PIC1 y este envia otra respuesta de control para otro servomotor y así sucesivamente...


Problemas:

1.- Al conectar los dos pic de manera directa sin los modulos xbee de la siguiente manera:
TX pic 1 - RX pic2, TX pic 2 - RX pic1.
La comunicacion no comienza al momento de energizarlos, tengo que quitar la fuente y volver a energizar el circuito y comienza a funcionar de manera perfecta el control de los servomotores.

2.- Al conectar los dos pic con los modulos xbee:

TX pic1 -> divisor de tension a 3,3 para RX Xbee1, TX Xbee 1 conectado directo a RX pic2
TX pic2 -> divisor de tension a 3,3 para RX Xbee2, TX Xbee 2 conectado directo a RX pic1

Los servomotores se segmentan... no funcionan de forma continua, tienden a segmentarse como dije. A que se debe este problema no tengo la menor idea, intente con comunicacion entre 4800 y 57600 baud para la transmision, logicamente los pic y los xbee trabajando a la misma velocidad de transmision.

Si alguien sabe a que se debe este problema estare muy agradecido.

De antemano muchas gracias!


PD: En la simulacion en proteus funciona bien con los 2 pic conectado entre si.. en fisico falla :/

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema con comunicacion serial entre PIC16f877a y Xbee serie 1 pro
« Respuesta #1 en: 15 de Noviembre de 2014, 01:16:21 »
Leyendo un poco del Xbee en su modo transparente.

Veo que al enviar los datos al modulo, luego tenes que enviarle unos comandos AT para que los envie (GT + CC + GT). ya que si se los envias solo espera un tiempo determinado por RO ( Packetization time out) y envia, lo podes hacer igual a 0. Puede que eso te lo este segmentando. Otra no se me ocurre. Y es raro lo que me decis al conectarlos directo, debe haber algo mal en el programa.

Desconectado krixxx

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con comunicacion serial entre PIC16f877a y Xbee serie 1 pro
« Respuesta #2 en: 15 de Noviembre de 2014, 01:39:45 »
No soy experto en Xbee, de hecho llevo poco tiempo usandolo, he tratado modificando el RO a 0 y no ha cambiado en nada, es cierto quizas tenga mal configurado el Xbee ... pero a traves de software X-CTU puedo comunicar los 2 xbee sin problemas, enviando datos y recibiendo :/

De esta manera tengo configurado los Xbee, si tengo algun error en algo agradeceria su ayuda, estoy relativamente preocupado porque necesito que funcione mi proyecto lo antes posible  :2] ...






Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Problema con comunicacion serial entre PIC16f877a y Xbee serie 1 pro
« Respuesta #3 en: 15 de Noviembre de 2014, 12:56:42 »
Y yo tampoco jugue nunca con xbee por el precio de los mismos, En si tengo entendido que vienen en modo transparente desde fabrica, el que puedas comunicarte con el programa no significa que no estes mandando lo suficientemente rapido. En modo transparente lo que le llega envia. Con respecto a lso registros vas a tener que buscar el datasheet y leertelo, al principio es complejo pero luego lo empezas a entender xD.

Cuando conectas los 2 pics por cable.. Los motores se comportan igual ? o lo hacen suavemente ? Si es asi, por lo que supongo es que no queda otra que el "delay" de la comunicacion, ya que supongo algo asi:

PIC2 mueve el servo, envia datos (mientras lo mueve, cuando comienza o cuando termina de moverlo?), el motor se para, recibe datos, mueve de vuelta.

Con lo cual puede ser varias cosas, tanto el Xbee como la programacion del micro. y la idea es aislar el problema, primero pondia RO a 0, segundo si pudieras solamente prenderia un led y mediria con el osciloscopio desde que se termino de enviar el dato hasta que se encendio el led. Para tener una idea de lo que tarda, y podes concluir o no que es Xbee o tu programa o ambos.

De todas formas me iria mas por el programa, que ocurre cuando queda sin datos por un tiempo ?. Estas usando interrupciones o delays?. Por que hacer los calculos con el otro PIC y no mandar solo señales de control ? Ej:

PIC1 -> avanzar a xxx
PIC2 mueve y envia -> listo

Desconectado krixxx

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con comunicacion serial entre PIC16f877a y Xbee serie 1 pro
« Respuesta #4 en: 16 de Noviembre de 2014, 17:42:28 »
Y yo tampoco jugue nunca con xbee por el precio de los mismos, En si tengo entendido que vienen en modo transparente desde fabrica, el que puedas comunicarte con el programa no significa que no estes mandando lo suficientemente rapido. En modo transparente lo que le llega envia. Con respecto a lso registros vas a tener que buscar el datasheet y leertelo, al principio es complejo pero luego lo empezas a entender xD.

Cuando conectas los 2 pics por cable.. Los motores se comportan igual ? o lo hacen suavemente ? Si es asi, por lo que supongo es que no queda otra que el "delay" de la comunicacion, ya que supongo algo asi:

PIC2 mueve el servo, envia datos (mientras lo mueve, cuando comienza o cuando termina de moverlo?), el motor se para, recibe datos, mueve de vuelta.

Con lo cual puede ser varias cosas, tanto el Xbee como la programacion del micro. y la idea es aislar el problema, primero pondia RO a 0, segundo si pudieras solamente prenderia un led y mediria con el osciloscopio desde que se termino de enviar el dato hasta que se encendio el led. Para tener una idea de lo que tarda, y podes concluir o no que es Xbee o tu programa o ambos.

De todas formas me iria mas por el programa, que ocurre cuando queda sin datos por un tiempo ?. Estas usando interrupciones o delays?. Por que hacer los calculos con el otro PIC y no mandar solo señales de control ? Ej:

PIC1 -> avanzar a xxx
PIC2 mueve y envia -> listo

Al conectar los 2 pics sin los xbee de intermediarios, funcionan perfectamente los servomotores, no se segmentan.. el problema ocurre cuando lo conecto inalambricamente.

TX PIC1:

int respuesta;
int a;
while(true){
set_adc_channel(0);
delay_ms(10);
a=read_adc();
putc(a);
delay_ms(10);
do
{
respuesta=getc();
}while(respuesta==1);



RX PIC2:

int a,i;
while(true)
{

putc(1);
delay_ms(10);
a=getc();
output_high(servo1);
delay_us(250);
for(i=0;i<a;i++)
{
delay_us(5);
}
output_low(servo1);
delay_ms(7);
}


Entonces PIC1 comienza a trabajar cuando PIC2 envia un 1, el pic1 realiza la conversion y envia la conversion al PIC2 mientras respuesta sea 1, si no es 1, sigue con el siguiente servomotor..

Es eso basicamente :/

Y gracias por responder!

Pd: no estoy utilizando Interrupciones