¿Cómo detectar la señal Serial o TTL para un PIC?

Tengo un Microchip PIC con soporte UART. Si lo entiendo correctamente, el UART puede manejar de forma nativa la señal serial TTL.

Espero una señal de entrada que debería ser TTL (0/5V), pero podría ser RS232 (+/-13V).

  1. ¿Cuál sería la mejor manera de manejar ambas señales diferentes? De todos modos, ¿para detectar automáticamente la señal (entrante)?
  2. ¿O debería tener un interruptor manual que permita la selección de señal?

Estaba pensando en usar algo como un MAX3232, pero no estoy seguro de qué sucedería si ese IC recibe una señal TTL.

¡Gracias!

¿Por qué la señal podría ser TTL o RS232? Parece que esto debería estar grabado en piedra. Si conecta una señal de nivel RS232 directamente a un PIC, el alto voltaje podría destruir el IC.
Mi hardware interactúa con un escáner industrial. Al leer el manual, dice que el escáner se puede configurar en cualquier modo. Simplemente escaneando un código de barras puede cambiar este modo. Y me gustaría asegurarme de que mi PIC no se queme cuando eso suceda. ¿Quizás solo protección de entrada?
¿Quieres detectar el tipo de serial en tu circuito automáticamente?
@SimpleCoder, depende a qué costo. Pero si se pudiera hacer relativamente fácil sí. De lo contrario, ¿tal vez la protección de entrada sería más fácil?
La forma más fácil de hacerlo de forma no automática probablemente sería un osciloscopio. En cuanto a la automática, no estoy seguro; tal vez podría usar algún tipo de circuito para detectar los voltajes máximos (la oscilación de RS232 es mucho más amplia que TTL).

Respuestas (2)

Pasos simples de la siguiente manera ...

El primer paso es deshabilitar el controlador adjunto al PIC (No tiene sentido dañar el equipo con un voltaje excesivo)

Luego, controle la señal entrante del dispositivo y detecte si son formas de onda de voltaje negativas Wiki RS232

Luego decida qué modo debe usar el PIC. TTL es solo positivo. RS232 tiene una buena oscilación de -V y +V alrededor de 0V. Puede ser una buena idea detectar más de -1V solo en caso de ruido, etc.

Ampliando la respuesta del ingeniero de pruebas:

Primero, un par de datos sobre los niveles: el estado inactivo (marca) de la línea debe ser inferior a -3 V (y no inferior a -15) cuando se conecta un dispositivo compatible con RS232. Por el contrario, el estado inactivo de un dispositivo serie TTL debe estar entre 0 y 0,8 V.

Entonces, creo que la forma más fácil de detectar qué tipo de dispositivo está conectado es algo como lo siguiente:

esquemático

simular este circuito : esquema creado con CircuitLab

Para las señales de nivel TTL, el dispositivo levantará el pin Rx en la placa a 5 V, por lo que el pin de detección del microcontrolador verá un nivel lógico alto. Cuando se conecta un dispositivo compatible con RS232, el estado inactivo de la línea estará entre -3V y -15V. Las dos resistencias forman un divisor, por lo que el pin de detección verá menos de 0,8 V (cuando la entrada es de -3 V). D1 evita que el pin de detección pase más de unos pocos cientos de milivoltios bajo tierra para obtener señales más fuertes, y el zener D2 protege contra entradas positivas superiores a +5 V (el estado espacial RS232).

Dependiendo de la velocidad en baudios que use su escáner, el circuito anterior puede incluso ser suficiente para condicionar la entrada (es decir, es posible que pueda conectar tanto el pin RX del microcontrolador como el pin de detección a la línea etiquetada como "Al pin de detección de uController". La única dificultad con esto es que RS232 usa voltajes negativos para representar los 1 y voltajes positivos para representar los 0, que es lo opuesto a lo que se usa en TTL-land. Para solucionar esto, querrá agregar una puerta XOR, así:

esquemático

simular este circuito

Ahora, la línea "desde uC invert" está conectada a una salida en su micro. Cuando está alto invierte la señal recibida, y cuando está bajo la pasa normalmente.