Necesito ayuda con un RS232 de calidad inferior

Construí un convertidor UART-RS232 basado en max232 y funciona bien... pero no para lo que necesito :)

De acuerdo con la hoja de datos de Maxim, el voltaje de la señal del lado RS232 debería ser teóricamente +/-10v (5v * 2), pero en la práctica es +/-8v.

Esto no es un problema cuando usa la interfaz en puertos RS232 estándar, pero en mi caso simplemente no funciona e investigando en la PCB de mi dispositivo de interés, que expone un conector DB9, descubrí que no lo es. un puerto RS232 estándar real pero los pines RX y TX están conectados, a través de 2 transistores, a una interfaz UART de microprocesador.

Este tipo de puerto funciona bien con la PC RS232 que usa niveles de voltaje de +/- 12v, por lo que sospecho que la salida max232 es simplemente demasiado baja para él.

¿Hay alguna manera de aumentar la salida max232 +/- 8v a +/- 12v? Si es útil, puedo tomar 12v del dispositivo.

Editar: ¿Qué hay de "combinar" dos señales RS232 idénticas (max232 tiene dos convertidores pero en realidad estoy usando solo uno de ellos) formando una nueva señal igual al doble del nivel de voltaje? ¿Es posible?

Edit2 - 2013/05/22: Los niveles de voltaje de la señal no parecen ser el problema solo porque ese dispositivo funciona con un adaptador USB-RS232 y en este caso los niveles de señal son de +/-6.5v (al menos en mi convertidor).

Dibujé el circuito de interfaz de la pcb del dispositivo para entender mejor lo que está pasando :)esquema del dispositivo

Aviso: no se si ese diodo es zener o no

Luego realicé algunas pruebas nuevas utilizando mi placa de pruebas olfateando datos directamente desde el cable.

Descubrí que la parte RS232-RX funciona como se esperaba : si "estimulo" el dispositivo enviando datos en el RS232-TX no desde el max232 sino desde el puerto serie de la PC, el dispositivo responde como se esperaba en la línea RS232-RX y el max232 traduce las señales recibidas como se esperaba.

Entonces, en este punto, necesito saber en qué línea de salida max232 y la línea de salida del puerto serie de mi PC son diferentes. ¿Qué debo probar en su opinión?

Edit3 23/05/2013: Solo para explicar mejor de lo que estoy hablando...

esquemático

simular este circuito : esquema creado con CircuitLab

Creo que vale la pena investigar por qué no cumple con la especificación de la hoja de datos; puede ser una solución simple.
En realidad, con una carga de 3K +/- 7.3v está dentro de las especificaciones por lo que puedo ver para un MAX232. No puedo pensar en una solución fácil, podría usar un DS1488 como una PC, pero luego necesitará su propio suministro de +/- 12V.
@pjc50 8v cumple con las especificaciones y de acuerdo con la hoja de datos "La oscilación típica del voltaje de salida del controlador es de ± 8 V cuando se carga con un receptor RS-232 nominal de 5 kΩ y VCC = + 5 V". El 10v es teórico solo porque proviene de un duplicador de voltaje.
@PeterJ Creo que exploraré su solución... si pudiera reciclar un ds1488 de un mobo antiguo, debería ser una gran solución. El 12v no es un problema en mi caso.
Un problema de dos variables aquí. Si las comunicaciones hacia/desde una PC funcionan (presumiblemente a través de un programa de terminal), las comunicaciones hacia/desde un UART a través de un MAX232 no funcionan y los niveles de voltaje del MAX232 están dentro de las especificaciones, el problema parece estar en el UART y no el hardware, es decir, el protocolo/velocidad/datos, no los niveles de señal. Siempre puede convertir los datos del puerto serie de la PC a UART con otro MAX232, luego volver a RS232 para comprender realmente si el voltaje juega un papel.
Si está seguro de que el bajo voltaje (en comparación con lo esperado, independientemente de la especificación) es el problema, poner en paralelo temporalmente otra resistencia con la del receptor para reducir la resistencia efectiva podría ser una forma de probarlo. Normalmente, usar una resistencia como un convertidor de nivel RS232 dejaría corto un inversor, pero si el dispositivo funciona con un puerto RS232 de computadora, el sentido de inversión debe ser correcto.
Si el dispositivo simplemente expone los pines UART del microprocesador, entonces no necesita un convertidor UART->RS232 para comunicarse con él (vaya de microprocesador a microprocesador, con cualquier cambio de nivel necesario en el medio, si lo hay) o use dos UART-> Convertidores RS232 (básicamente le dan a la placa una interfaz RS232 adecuada, que se acopla con la interfaz RS232 adecuada que ha construido en su lado).
Las fallas comunes con las conexiones RS232 son configuraciones de los UART. (A Windows Terminal no le gustó que la configuración cambiara mientras estaba "Conectado") y malas conexiones físicas (Muy delgado/mala calidad o cable o conectores dañados). Cuando ha sido llamado a la planta de producción por otro "problema" que requería descartar el líder en serie, comienza a prestar atención y cobrar por buenos prospectos. ¡Odio RS232 por cable ethernet!
Por favor reformule su pregunta. "en el que la línea de salida max232 y la línea de salida del puerto serie de mi PC son diferentes" no tiene sentido para mí.
@Madmanguruman, eche un vistazo a la última imagen. Supongo que hay algo diferente entre lo que emite el puerto serial de mi PC y lo que proviene del MAX232 solo porque el primero funciona pero el segundo no :) Si olfateo los datos enviados, es lo mismo tanto para el puerto PC como para el max232.
Los niveles lógicos de @Madmanguruman UART están "invertidos" en comparación con los de RS232, aunque no puede funcionar. Los datos transmitidos parecen iguales si los olfateo con un puerto serial de PC que implementa un RS-232 en especificación. Con "diferente" me refiero a algo como la "carga" en esa línea, por ejemplo.
Finalmente encontré el problema :) El dispositivo de interés pretende el uso del bit de paridad... pero en mi caso creo
... el módulo inalámbrico conectado a la PC probablemente consume el bit de paridad. ¿Hay alguna forma en su opinión de "regenerar" el bit de paridad en el max232 justo antes de transmitir datos al dispositivo final de interés?
@mrfree, la generación de paridad ocurre en el micro o lo que sea que esté impulsando el MAX232. Por cierto, si ha resuelto el problema original, puede responderlo usted mismo para que no se quede sin respuesta y podría ayudar a alguien en el futuro, especialmente si no le importa agregar lo que está interactuando.

Respuestas (1)

El problema era un bit de paridad uniforme no documentado requerido por el dispositivo que necesito controlar (un panel de seguridad de alarma Bentel Kyo300), pero incluso si descubrí cuál era el problema, una limitación en los módulos inalámbricos seriales impide volver a generar el bit de paridad en el punto final de destino.

Esos adaptadores seriales inalámbricos tienen, de hecho, una configuración fija del lado serial de 8N1... Lo resolví comprando módulos inalámbricos seriales mejores y configurables (APC220) :)

Aprendí mucho sobre la comunicación en serie a nivel de hardware durante esta discusión, así que estoy feliz incluso si gasté unos pocos euros más;)

Ahora que publicaste tu propia respuesta, ¡no olvides aceptarla! De lo contrario, la pregunta permanecerá abierta en el software y se actualizará periódicamente y afectará las estadísticas.