De vueltas con el bus rs485


hola todos!

estoy desarrollando un sistema que se compone de unos medidores (tensión, potencia, corriente, etc) y unos "arduinos" controlando varios sistemas diferentes, y un pc más o menos viejo. para la comunicación, estoy implementando un bus serie rs485.

en la parte de arduino, usado la libreria simplemodbus y de hardware añadido los chips max485, con sendas resistencias pull-up en la patilla /ro como bien indica juanb en el post titulado "help modbus rtu master-slave: simplemodbus" y en la documentación de la libreria.

en la parte de los modulos medidores, usado unos hobut m850, de los que ya se habló en un post del foro hace un tiempo.

para el pc usado un convertidor rs232 485. utilizado dos esquemas diferentes y también comprado un convertidor usb.

la versión 1 del esquema, utiliza el pin rts del puerto serie para establecer la comunicación, la libreria del pc, modifica correctamente la señal, pero aún así era incapaz de comunicarme correctamente con el
arduino.



como me estaba volviendo loco, opté por buscar una opción que hiciera la detección automática de la entrada de datos y de la salida de datos. y me encontre con esta versión:



he estado funcionando, con ella unos dias y bien, me han surgido dudas filosóficas:

- lo normal en el estándar es que al final, haya una resistencia de inicio y fin de 120 ohms. si las pongo no funciona el bus, pero sin ellas logro comunicarme. ¿me sabría alguien explicar el porque funciona así con esas resistencias de 270 ohms y de 3k3 ohms? mi idea es reducir la version 2 quitando las resistencias del bus y dejarlo para que se quede como la versión 1.

- aunque al principio funcionaba de la noche la mañana dejó de funcionar, uno de los leds se quedo encendido y no se apagaba, no se quien echarle la culpa (al 485 o al 232). alguien ha intentado hacer lo mismo que yo y le ha pasado lo mismo.

- veo que en la libreria simplemodbus hay un esquema para hacer un convertidor con detección automatica de velocidad, efectos de montaje la veo más dificil, me gustaria saber si alguien la ha hecho y si le ha funcionado, problemas, etc.

- qué tal opinion os da utilizar un max203?

de momento, eso es todo. si me surge alguna duda mas la expondré aquí.

muchas gracias todos.


hola

que me perdone el moderador si esta pregunta y su respuesta no corresponde con la temática del foro.

no se de donde habrás sacado el esquema pero es muy difícil que te pueda funcionar.

en el primer esquema, habías conectado la señal de "control de dirección" rts la línea de transmisión.
has intercambiado los pines 10 y 12 del max232.

en el segundo esquema, pilotas la linea "control de dirección"  con  la línea de transmisión. si funciona es porque tienes mucha suerte.

resistencias de terminación

en teoría, si el cable es corto, no haría falta ni las resistencias de terminación ni las de 270.

mira esta info.

recomendaciones

yo quitaría los leds en las líneas de comunicaciones. al principio viene bien saber cuando hay comunicación, pero luego es un consumo innecesario, además de que estás cargando el driver del max232. si insistes, pilótalos con un mosfet pero para hacer las pruebas y reducir costes, sería mejor quitarlos.

otra recomendación. prueba primero velocidades bajas. 9600 baudios está bien para empezar. y luego la vas subiendo.

otro problema típico es, desactivar la señal de rts antes de que finalice la transmisión del último byte, con lo que el último byte no llega.

suerte




Arduino Forum > International > Español (Moderators: surbyte, Hector_A) > De vueltas con el bus rs485


arduino

Comments

Popular posts from this blog

invalid use of void expresion in FlexiTimer2 library

error: a function-definition is not allowed here before '{' token

LED Strip Code