Siempre que había necesitado comunicar un microcontrolador con una PC había utilizado el convertidor TTL a RS232 sin MAX232 y me había funcionado bien pero hace unos días trabajando en un proyecto me di cuenta que el convertidor tiene un error.
Al transmitir un dato de la PC al micro (o a cualquier otro circuito TTL) el transistor NPN actúa como un simple interruptor, invierte los pulsos y a la salida se tiene un nivel TTL de 5 y 0 volts para un 1 y 0 lógico. Esa parte está bien.
El problema está en la parte del circuito que convierte la señal RS232 a TTL. En RS232 un 1 lógico equivale a -12V y un 0 lógico equivale a +12V. Como solo se tiene un voltaje de +5V en la alimentación este voltaje se utiliza como nivel positivo (el cero lógico será representado por +5V) y el voltaje negativo se toma del pin Tx del transmisor de la PC. El problema está en que en el transmisor el voltaje será negativo solo cuando este no esté transmitiendo ningún dato, solo cuando esté en reposo. En cuanto se transmita un dato el nivel del transmisor comenzará a oscilar entre un voltaje negativo y uno positivo, de modo que si intentamos enviar un dato del micro a la PC la transmisión fallará porque no tendremos el voltaje negativo.
El circuito de la siguiente imágen soluciona ese problema:
Fuente: Simple TTL to RS232 adapter using bipolar transistors
Es un circuito muy parecido al de pablin.com.ar, de hecho usa los mismos componentes pero le añade un capacitor. El voltaje negativo también se toma del transmisor de la PC pero este crea una "fuente negativa de voltaje" usando un capacitor y un diodo conectados de tal forma que el capacitor se carga únicamente con voltaje negativo. Es una forma bastante simple de resolver el problema
Viendo el circuito no veo que tenga ningún problema para funcionar. A partir de ahora ese es el que usaré en mis montajes. Sobre los niveles +5 y -12V que se obtienen al convertir de TTL a RS232 hay que recordar que el estándar RS232 define niveles de -3 a -25V para un 1 lógico y +3 a +25V para un 0, así que los niveles obtenidos mediante este convertidor entran perfectamente en ese rango.
Al transmitir un dato de la PC al micro (o a cualquier otro circuito TTL) el transistor NPN actúa como un simple interruptor, invierte los pulsos y a la salida se tiene un nivel TTL de 5 y 0 volts para un 1 y 0 lógico. Esa parte está bien.
El problema está en la parte del circuito que convierte la señal RS232 a TTL. En RS232 un 1 lógico equivale a -12V y un 0 lógico equivale a +12V. Como solo se tiene un voltaje de +5V en la alimentación este voltaje se utiliza como nivel positivo (el cero lógico será representado por +5V) y el voltaje negativo se toma del pin Tx del transmisor de la PC. El problema está en que en el transmisor el voltaje será negativo solo cuando este no esté transmitiendo ningún dato, solo cuando esté en reposo. En cuanto se transmita un dato el nivel del transmisor comenzará a oscilar entre un voltaje negativo y uno positivo, de modo que si intentamos enviar un dato del micro a la PC la transmisión fallará porque no tendremos el voltaje negativo.
El circuito de la siguiente imágen soluciona ese problema:
Fuente: Simple TTL to RS232 adapter using bipolar transistors
Es un circuito muy parecido al de pablin.com.ar, de hecho usa los mismos componentes pero le añade un capacitor. El voltaje negativo también se toma del transmisor de la PC pero este crea una "fuente negativa de voltaje" usando un capacitor y un diodo conectados de tal forma que el capacitor se carga únicamente con voltaje negativo. Es una forma bastante simple de resolver el problema
Viendo el circuito no veo que tenga ningún problema para funcionar. A partir de ahora ese es el que usaré en mis montajes. Sobre los niveles +5 y -12V que se obtienen al convertir de TTL a RS232 hay que recordar que el estándar RS232 define niveles de -3 a -25V para un 1 lógico y +3 a +25V para un 0, así que los niveles obtenidos mediante este convertidor entran perfectamente en ese rango.