I had to once interface an high voltage circuit to PC, The uC had to communicate thru RS232–Comm port–Serial Port.
Part of the 80C31 8051 SBC
Even though i had isolation at the sensors and actuators to make doubly sure the PC also has been isolated. There are chips that are available for this purpose, The circuit above is built with discrete and passive components except for the opto 4N35. You can use MCT2E and CNY17-3 Optos too. For MCT2E some tweak may be needed as current transfer ratio is 20, for the other two CTR is 100 so above design will work.
The circuit derives power from PC but does not load the PC supply. Any voltage above 5V applied to the PC connectors may lead to damage of motherboard in PC. Old PCs were more vulnerable but PCs today maybe a bit rugged at the Ports. Due to internal current limits and clamping.
The VCC, VDD and Agnd are derived from PC no other power needs to be applied on PC side of opto. On uC side of opto the uC power supply lines +5 and gnd has to be used. There is no copper link between the two sides and depending on opto a 1KV isolation is possible if PCB is well designed. The PCB should show the visual isolation above and components should be laid on separate areas of PCB to prevent creepage.
The LEDs are to indicate the port activity Rx and Tx, they are not required once testing is over. The circuit can be simpler, but this worked for me and it is not tested at very-high buad rates.
The levels of RS232 are not TTL like 0-5 we have both polarities +10 and -10. The circuit has to change that to drive the Opto Leds.
RS232 software. Understanding RS232 Serial Port Communication.
Using this circuit on Printer Port, one could drive 256 Relays or 16K LEDs as Dot Matrix display. It can be used to drive a Large size multiplexed LED dot matrix display or Latched Relay-Solenoid-Motor-Lamp Array Drivers.
This circuit can be modified for a Static drive output or a fast changing output like a Waveform Generator. You can also make it a 16 Bit waveform generator. The frequency limited to the speed of the port or a fraction of it, depending on 8bit, 16bit or 32bit.
Now I have Some Explaining to do. Latch the U7 with a 8 Bit Data to address the device you want to talk to. So one among the 32 Output Devices can be Selected by a combination of G1-G2 of U5-U8 and U7 8 Bits, Split into Two Nibbles for Upper and Lower 16 Devices. That means 16 * 2 = 32 Devices of 1 Byte each,. 32 * 8 = 256 if my calculations are correct. Please verify.
One of the decoders U5 or U8 decode their respective nibble and output a Low on Selected device to Latch Data on the Chosen one (74HCT373). Why HCT ? Speed is good, low power and CMOS ! and works with TTL too. It Interfaced well for me on a Card with Both TTL and CMOS levels, with a Fast uC.
The 74HCT373 outputs are current amplified and isolated by darlingtons and optoisolators. Both source and sink examples shown. This circuit was not tested and documented properly. So there may be things missing. It is just a Concept design..
Printer Port 256 Relays 16K Dot Matrix – del20021
Some outputs are via Dual Differential Line Driver type DS8830. This device will interface with standard TTL systems.
The differential outputs are balanced and are designed to drive long lengths of coaxial cable, strip line, or twisted pair transmission lines with characteristic impedances of 50 ohms to 500 ohms. Differential transmission is superior to single wire transmission in that it nullifies the effects of ground shifts and noise signals which appear as common mode voltages on the transmission line.
Mixed and Interface Circuits
If the signal voltage at the end of the line is found to be of insufficient magnitude then the following circuit may be used (at the recipient equipment end) to boost the levels.