Autor Tema: Problema con red rs485  (Leído 11785 veces)

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

Desconectado fco1306

  • PIC16
  • ***
  • Mensajes: 128
Problema con red rs485
« en: 31 de Diciembre de 2011, 10:13:21 »
Parece que la comunicación entre pics no es lo mío.Hace algún tiempo intenté comunicar en pic simulator mediante serie dos pics y no lo conseguí. A partir de "un relé en la lejanía" estoy intentando comunicar dos 16f628a mediante rs485, pero tampoco lo consigo. He mirado y vuelto a mirar la electrónica,el código y no consigo hacerlo funcionar. Lo último que hago es pedir ayuda, no sé por donde seguir.
El proyecto es el siguiente: con una red rs485 comunicar varios 16f628a. Desde un panel de control , con un botón transmito a otro pic 16f628a que pone en alto un pin y hace mover un servo conectado a un 12f629. Cuando el servo se mueve ,se transmite al tablero para apagar un led y encender otro. Dejo la simulación y los códigos. La simulación funciona, pero en la realidad no hace nada.
Un saludo

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con red rs485
« Respuesta #1 en: 31 de Diciembre de 2011, 10:46:46 »
Hola.

Veo que usas el oscilador interno en los dos pics y eso no es recomendable cuando usas algún tipo de comunicación, además que el baud rate esta muy alto. No he podido abrir la simulación (creo que mi versión del ISIS ya es muy vieja).

Sería bueno un esquemático del proyecto, porque si la simulación funciona, debería funcionar en físico.

Saludos
El papel lo aguanta todo

Desconectado fco1306

  • PIC16
  • ***
  • Mensajes: 128
Re: Problema con red rs485
« Respuesta #2 en: 31 de Diciembre de 2011, 11:05:34 »
Muchas gracias por la ayuda.
Marchando esquemático.
Voy a probar a bajar el baud rate a ver que pasa.
A continuación probaré con oscilador de 4Mz.

Desconectado fco1306

  • PIC16
  • ***
  • Mensajes: 128
Re: Problema con red rs485
« Respuesta #3 en: 31 de Diciembre de 2011, 15:31:06 »
Nada,que la comunicación entre pics no es lo mío.
He bajado el baud rate a 1200 y puesto un oscilador externo de 4mz y condensador de 33pf, otro no tengo. En fuses XT.
Y nada, sigue sin funcionar.En teoría si funciona en simulación debería funcionar, supngo que será cuestión de electrónica,pero no encuentro el fallo.¿Alguna idea más? ¿Sabeis de algún ejemplo con pcb incluida que funcione?
Una duda, cuando con el polímetro compruebo la continuidad entre la línea rs485, entre los terminales A y B, me marca continuidad. ¿Es correcto?. Estoy utilizando una fuente de ordenador y cuando compruebo continuidad en la salida de la fuente existe.¿es correcto, no?

Desconectado Tec_Claudio_Perez

  • PIC12
  • **
  • Mensajes: 62
Re: Problema con red rs485
« Respuesta #4 en: 04 de Enero de 2012, 14:08:33 »
Hola que tal,
Está bastante interesante tu circuito, con muchos micros y posibles fuentes de error. Basado en que en el simulador te funciona, deberías probar primero la capa física del enlace RS485. Sacando los micros 16F628A prueba poner la linea TX(RB2) y DE(RB5) del primero a 5V, esto va al primer MAX487, luego al segundo y deberías tener 5V en el RX del segundo 16F628A, luego pones TX a 0V y verificas que te salga un 0 en el segundo pic. Luego repites lo mismo desde el segundo 16F628A. Con esto por lo menos sabrías que los drivers te funcionan. Con los 75176 me pasaba seguido que se quemaban por las descargas electrostáticas, por lo que al final usaba una pulsera a tierra para manipularlos.
Una vez verificado el enlace físico, lo segundo que probaría seria que los micros estén enviando comandos. En el primer pic bajaría la velocidad a 1200 bits por segundo para poder ver mejor los parpadeos de un led con su resistencia que pondríamos en la pata RX del segundo PIC. Este led lo deberías conectar como drenador hacia el MAX487 y con una resistencia grande, digamos de 1K a 5V. Esto para no exigirle corriente al driver. Al enviar un comando el primer pic deberías ver parpadear este led.
Este mismo procedimiento lo deberías hacer en el driver del primer pic para poder monitorear las respuestas del segundo pic.
Bueno espero te ayude, una vez andando todo, vuelves a tu velocidad de transmisión normal.
Saludos y espero encuentres pronto tu problema.

Claudio Pérez
Instituto Tecnológico de Jujuy
www.itjujuy.com.ar

Desconectado fco1306

  • PIC16
  • ***
  • Mensajes: 128
Re: Problema con red rs485
« Respuesta #5 en: 22 de Agosto de 2013, 17:53:59 »
He vuelto a retomar el proyecto de comunicación con red rs485. Tengo un par de módulos que intento comunicar y sigue sin funcionar. La simulación funciona.
Estoy simulando la comunicación sin micros, para ver si la electrónica funciona ¿sería algo así?
El led se mantiene encendido y cuando se pulsa el botón se apaga.
Un saludo

Desconectado don_shaggy

  • PIC10
  • *
  • Mensajes: 10
Re: Problema con red rs485
« Respuesta #6 en: 13 de Mayo de 2014, 02:57:57 »
Hola todos... la verdad soy nuevo en el foro y aun no aprendo a crear nuevos temas así que usare este ya que es afin con mi problema.

Estoy haciendo una red RS-485 donde pretendo comunicar 2 PIC a un programa en Labview en el computador, ya logre hacer el programa en labview y funciona muy bien, igualmente ya logre comunicar cada uno de los pic por separado con el PC, de tal manera que recibe y envían información maravillosamente del PC y hacia el PC.

El problema se presenta cuando trato de conectar los 2 módulos MAX485 (pin A de uno con el pin A del otro y el pin B de uno con el pin B del otro), en ese momento dejan de funcionar, no mandan respuesta ninguno de los 2 pero claramente labview si les manda información, pero estos no responden.

Si elimino el cable de conexionar entre los dos MAX485, inmediatamente inician a trasmitir el PIC donde donde quedo conectado el cable datos que va al PC, asi mismo retiro el cable de ese MAX y lo pongo en el otro y su transmisión inicia también sin problema.

Tengo una resistencia de 120 ohm entre las patillas A y B de cada max485 y una resistencia mas del mismo valor en el adaptador de RS485 a USB que es el que combierte de 485 a USB con protocolo CDC lo que simula una conexion serial en el PC.

Los dos PIC estan montados en la misma proto y como les digo, cada uno funciona por separado pero deja de funcionar cuando pongo en paralelo los MAX.

Por favor su ayuda urgente ya que llevo mucho tiempo y esfuerzo invertido en esto y estoy casi rendido. :shock:

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Problema con red rs485
« Respuesta #7 en: 13 de Mayo de 2014, 03:45:05 »
Hola dom_shaggy, y Bienvenido a nuestros Foro TODOPIC,
para poner un mensaje nuevo en el foro ,primero saber que lenguaje de programacion usas, si es problema de componente, en el foro Tecnico, y si es pregunta que no va ni con lo uno ni lo otro, en el foro OFF TOPIC, si tiene dudas arriba en la pagina principal FUNCIONAMIENTOS DEL FORO TODOPIC ahi te explica todos.
bien respecto a tu problema, puede ser varias, mejor seria si pusiera el codigo y un esquema de tus projectos asi te pueden ayudar mas gente con mas experiencia.
habia que ver como conmuta el MAX485 y si usas interrupciones para activar los Modos (RX-TX).
el Protoboard puede dar problema con el cristal, si lo usa externo y si es internos ahi puede ser el problema, otros problema puede ser la alimentacion de los micros.
ante de poner un mensaje te aconsejo que use el Buscador del foro respecto a RS485 o cualquier otros dudas y si encuentra tus problema entonce escribir un nuevo mensaje.
Saludos


Desconectado don_shaggy

  • PIC10
  • *
  • Mensajes: 10
Re: Problema con red rs485
« Respuesta #8 en: 13 de Mayo de 2014, 18:18:28 »
Hola dom_shaggy, y Bienvenido a nuestros Foro TODOPIC,
para poner un mensaje nuevo en el foro ,primero saber que lenguaje de programacion usas, si es problema de componente, en el foro Tecnico, y si es pregunta que no va ni con lo uno ni lo otro, en el foro OFF TOPIC, si tiene dudas arriba en la pagina principal FUNCIONAMIENTOS DEL FORO TODOPIC ahi te explica todos.
bien respecto a tu problema, puede ser varias, mejor seria si pusiera el codigo y un esquema de tus projectos asi te pueden ayudar mas gente con mas experiencia.
habia que ver como conmuta el MAX485 y si usas interrupciones para activar los Modos (RX-TX).
el Protoboard puede dar problema con el cristal, si lo usa externo y si es internos ahi puede ser el problema, otros problema puede ser la alimentacion de los micros.
ante de poner un mensaje te aconsejo que use el Buscador del foro respecto a RS485 o cualquier otros dudas y si encuentra tus problema entonce escribir un nuevo mensaje.
Saludos



Hola, gracias por tu respuesta, creo que por ahora seguiré en este mismo post puesto que es afín con mi problema y posiblemente le sirva a quien lo inicio.

Adjunto el esquemático de proteus, no se si haga falta unas fotos del montaje físico.
El programa fue realizado en el programa PIC C y lo que hace es que cuando reciba el carácter indicado, toma el dato del puerto B y lo envía a labview, esto es un numero y los dos pic hacen lo mismo.

Como les mencione antes, los dos PIC están montados en la misma porto con la misma configuración y cristal (Cada uno con un cristal de 4MHz) y al PC se conectan con un adaptador de RS485 a USB con protocolo CDC el cual tiene una resistencia de 120 ohm en los conectores A y B(esto no se evidencia en el esquemático adjunto.), cada pic al ser conectado por aparte funciona muy bien pero al unir los MAX485 por los pines A y B, estos dejan de funcionar y ya no transmiten.

A continuación el programa.

#include <16F876a.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, WDT
#use delay(clock=4M)
#USE rs232(baud=9600, xmit= pin_c6, rcv=pin_c7, bits=8, parity=E)
char rx;
#int_rda

void main()
{
   set_tris_b(0xFF);
   set_tris_a(0x00);
   setup_wdt(WDT_36MS);
   int count;
   rx='z';

while(TRUE)
{
   if (kbhit())
   {
      output_low(pin_c0);
      restart_wdt();
      rx=getch();
   }
   if (rx =='A')
    {
      output_high(pin_c0);
      restart_wdt();
      count=input_b();
      printf("%d",count);
      delay_ms (10);
      output_low(pin_c0);
      rx='z';
      restart_wdt();
    }
   }


Aclaro que me vi obligado a activar el WDT por que tras la segunda o tercera lectura de puerto con Getch() el pic se bloqueaba y dejaba de funcionar, le hice de todo para remediar esto y al final solo pude activar el WDT con lo que funciona perfectamente.

Son 2 pic con el mismo programa, el 16F876a y un 16F873a, uno tiene la letra A como carácter de inicio y el otro actúa cuando recibe la letra B, es su identificación en la red.

Estoy algo desesperado con este proyecto ya que siempre cuando creo que ya queda me sale algo, por favor ayúdenme... se los agradezco.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Problema con red rs485
« Respuesta #9 en: 13 de Mayo de 2014, 18:28:45 »
Estas en problemas, el puerto contra el PC debería llevar el max232 y el max485 para hacer bien la conversión.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado don_shaggy

  • PIC10
  • *
  • Mensajes: 10
Re: Problema con red rs485
« Respuesta #10 en: 13 de Mayo de 2014, 19:07:06 »
Estas en problemas, el puerto contra el PC debería llevar el max232 y el max485 para hacer bien la conversión.

hola, gracias por tu respuesta pero no te fijes en el puerto que esta en el esquemático del plano, que pena que no aclare bien ese detalle.

Realmente el max485 se comunica con un adaptador que recibe este protocolo por su entrada y lo transmite hacia el PC vía USB, es una conexión USB con protocolo CDC lo cual crea en el PC un puerto serie virtual.

De este modo el acople este completo y entre PC y circuito no haría falta nada para que funcione según entiendo.

Creo que el problema esta en el circuito de la proto, me falta alguna resistencia de polarización o algo así o tengo problema de interferencia de algun tipo y no se como remediarlo, adjunto una foto del circuito físico, el cable trenzado verde que se ve es con el que uno los dos pic, espero esto les pueda servir para hacerse una mejor idea de como esta el circuito y así puedan seguir colaborandome.

Gracias.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Problema con red rs485
« Respuesta #11 en: 14 de Mayo de 2014, 00:48:21 »
El PIC del medio no debería tener resistencia de 120 Ohm, porque solo debe haber una en cada extremo de la linea, o sea en los extremos mas alejados entre si.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Problema con red rs485
« Respuesta #12 en: 14 de Mayo de 2014, 04:15:50 »
El PIC del medio no debería tener resistencia de 120 Ohm, porque solo debe haber una en cada extremo de la linea, o sea en los extremos mas alejados entre si.

Y no solo eso. Después de muchos años gestionando redes RS-485 he llegado a la conclusión práctica de que las resistencias-fin-de-linea de 120 Homs sólo las coloco cuando hacen falta.

Quiero decir que inicialmente no coloco ninguna, miro cómo se produce la transmisión-recepción entre los distintos elementos de la red y si ésta es correcta no pongo resistencia alguna.

Si tengo ecos o recibo basura pongo una resistencia de 120 Ohms en uno sólo de los extremos, normalmente en el extremo opuesto al del elemento que sirve de MASTER, si continúa la recepción de ecos o basura coloco la del otro extremo ...

... y si continúa igual entonces me pongo a buscar errores en la topología de la red: que no haya "T" con el tramo descendiente demasiado largo, que no haya ninguna configuración en estrella, que en ningún equipo de la red haya intercambiado entre sí los hilos A y B, que no sea un equipo en concreto quien está interfiriendo desconectando uno a uno los mismos hasta ver si alguno de ellos es el malo de la película ... y que Dios me coja confesado si no detecto por donde se produce el error.
« Última modificación: 14 de Mayo de 2014, 04:18:07 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Problema con red rs485
« Respuesta #13 en: 14 de Mayo de 2014, 04:31:17 »
Esas pull-up en el pin DE...

Yo tengo varios dispositivos en un bus con el max487 y funcionan bien, y no tengo esa pull-up y nada de resetear el wdt.

La resistencias pueden ser necesarias si la longitud del bus es muy elevada o si hay muchos elementos o si quieres transmitir a mucha velocidad.

Desconectado don_shaggy

  • PIC10
  • *
  • Mensajes: 10
Re: Problema con red rs485
« Respuesta #14 en: 14 de Mayo de 2014, 11:46:39 »
Esas pull-up en el pin DE...

Yo tengo varios dispositivos en un bus con el max487 y funcionan bien, y no tengo esa pull-up y nada de resetear el wdt.

La resistencias pueden ser necesarias si la longitud del bus es muy elevada o si hay muchos elementos o si quieres transmitir a mucha velocidad.

Hola muchachos, le quite las resistencias de 120 ohm y deje las de los extremos y no funciono, asi mismo las removi todas y tampoco funciono... en ambos casos la comunicación de cada pic por separado si seguía funcionando.

Una pregunta... se supone que el MAX485 hace todo lo necesario para transmitir el dato en ese protocolo, verdad?? un profesor me decía que no y que tenia que mandar el dato desde el pic cumpliendo ciertos protocolos del max485 para que este los enviara y pudiera así compartir cableado con otros módulos pero la verdad no me convenció mucho... lo que entiendo es que el MAX recibe RS232 y el  hace lo pertinente para comunicarse via RS485 sin que se tenga que hacer nada mas.

mas tarde intentare lo de las pull-up del pin DE que menciona alperez y les cuento... por ahora sigo al tanto de este foro para intentar cualquier cosa que se les ocurra, gracias de ante mano.