Preface: I don't have any MAX232 ICs handy, and only need unidirectional communication (from TTL to RS232). It's just a quick test to see if an old GPS OEM board still works. I don't have any MOSFETs on hand either - just some basic BJTs, as shown in the schematic. I'm using a dual supply instead of parasitic voltages from the serial port.
Here's the translation I was after:
TTL_Tx --> RS232_Rx
0V ~ +12V
5V ~ -12V
simulate this circuit – Schematic created using CircuitLab
I thought this would work (and it does in LTSpice).
Q1 - Turns Q2 on when the TTL input is high, providing a path for current to flow
Q2 - Provides a translation of 5V->12V and 0V->-12V at its collector
Q3 - Inverts Q2's collector signal for the final output
It works perfectly in LTSpice, but on my oscilloscope I see that the output is not being pulled down to the negative rail:
Of course, this actually works fine. The serial port is happy and the values are in spec. But I'm still trying to figure out why the circuit doesn't behave as I expected.