Arduino: ¿Se necesita un modificador de nivel RS232 o un Breakout RS2323? [cerrado]

0

Estoy intentando establecer comunicaciones entre un Arduino Mega2560 (Maestro) y un controlador personalizado (Esclavo) a través de un enlace Maestro-Esclavo RS232 usando Modbus RTU. La comunicación debe ser bidireccional.

Actualmente estoy simulando el controlador personalizado usando ModbusSimulator y conectándome al Arduino usando un cambiador de nivel Sparkfun RS232 ( enlace ) . Está funcionando.

Estoy preguntando si es necesaria una placa de ruptura RS2323 ( enlace ) para las comunicaciones con el controlador real. O como sabría esto? ¿Es capaz el Arduino de producir señales RS232 con el cambio de nivel?

Gracias

    
pregunta Gawnie

3 respuestas

1

RS-232 es simplemente una señal UART invertida de alto voltaje junto con otras señales de control (CTS, RTS, DCD, etc.). Si su controlador no requiere estas señales de control adicionales, entonces lo que tiene es suficiente. Si necesita otras señales de control, necesitará la placa de ruptura y GPIO adicionales en el Arduino para generar estas señales, además del código para generarlas, además de una placa de derivación DB-9 para conectar.

    
respondido por el Ignacio Vazquez-Abrams
1

Supongo que la primera pregunta que debe responder es si necesita las líneas de control de flujo en serie. En la mayoría de las cosas en las que he trabajado no he necesitado ningún control de flujo, pero al parecer algunos equipos de control industrial necesitan control de flujo (por lo que necesitarán líneas de control). Si el controlador personalizado es su propio trabajo, entonces probablemente no necesite las líneas de control de flujo (presumiblemente, habría usado otra palanca de cambio de nivel DB9 +, ¿cuál no tiene control de flujo?). Sin embargo, si el controlador es algo que compró, entonces compruebe los manuales / especificaciones o tal vez simplemente pruébelo. Si funciona sin control de flujo, entonces no necesita control de flujo ;-)

Si no necesita control de flujo, entonces la palanca de cambios de nivel DB9 + a la que se vincula debería estar bien. Sin embargo, las revisiones van desde divertidas a preocupantes: hay algunos comentarios sobre la calidad del cambio de nivel que no parecen demasiado alentadores. Aparte de eso, es todo lo que necesitas, sin embargo.

Si necesitas líneas de control, entonces tienes más trabajo que hacer. Necesitará el Arduino para generar las señales de control (y vigilarlas). No estoy seguro de que SoftSerial o alguna otra biblioteca pueda ayudarlo a hacerlo. En hardware, deberá cambiar de nivel las líneas RX y TX, y las líneas de control que necesite. El MAX [3] 232 tiene dos desplazadores ascendentes y dos desplazadores descendentes, por lo que puede hacer RX / TX + un par de líneas de control. Si necesita más que eso, busque otros tipos de chips para ayudarlo (o use dos MAX [3] 232s). Una vez que lo hayas resuelto, necesitarás un conector DB9 normal y corriente (no uno con su propia palanca de cambio de nivel), a la que soldarás las señales de nivel cambiado.

Para mí, personalmente, he fabricado algunos dispositivos controlados en serie a lo largo de los años y nunca he incorporado un control de flujo en ellos. A menos que tenga un motivo de diseño específico para necesitar control de flujo, entonces probablemente pueda administrar sin él (aunque eso supone que tiene control sobre ambos extremos de la comunicación). También me complace ver que la condición por la que tanto tiempo he trabajado se reconoce correctamente y se denomina dislexia UART.

    
respondido por el Ralph Bolton
1

enlace

Consulte el siguiente diagrama de circuito para conectar max3232 con arduino. Reemplace Tx Rx y GndRS232 en el tablero con el conector DB9 (Pin 2 - > R1IN, Pin 3 - > T1OUT, PIN 5 de DB9 a GND) y conéctelo a su dispositivo / controlador de serie

    
respondido por el ALI MIRZA

Lea otras preguntas en las etiquetas