Get power out of PC RS-232 port
Copyright Tomi Engdahl 1997-2000
This text tries to clear out the mystery of how to get power out of PC serial power. There are quite many small circuit which take all their operating power from serial port, where there are no real power output pin. Examples for this type of circuits are PC mouse and software protection dongle. You might wonder how this is possible.
There is one way to get some power out of serial port: steal it from signal lines. When you are developing you own circuit which connects only the PC, then the only line which can be used are the output signal lines from PC serial port: DTS, RTS and TD.
In normal operation situation DTR and RTS are raised so they give positive voltage output (about +12V when not loaded). TD pin is in logic 1 when no data is sent which means that it is most time at negative voltage (-12V when not loaded) most of the time. The voltage at these outputs drop quite fast when load current is increase, because they are designed to drive normally only RS-232 input circuits (3-7 kohm resistance). The voltage drops about 1-2 volts every every 1 mA of load current increase. Usually the short circuit current flow is 7-10 mA (this depends on the circuit types used in PC serial port).
PC serial mouse
PC serial mouse uses typically DRT and RTS lines for generating +5V power for microcontroller circuit in the mouse. Because typical optomechanical mouse also needs power for 4 leds in the optocoupler movement detectors, there is not much power to waste. Typical PC mouse might can have the following power requirements: "+15V 4mA -15V 4mA" (taken from Microsoft mouse bottom).
A typical approach make the power for microcontroller is to use diodes to take current from DTR and RTS lines and then feed it through resistor to all of the (infrared) leds in the movement detectors. All four (infrared) LEDs are connected in series, which gives about +5V voltage drop over all leds (typical to IR LEDs used in mouse). This +5V is adequate power for low power mouse microcontroller. The serial data transmitting circuit consists of simple discrete transistor circuit to make it consume as little power as possible. The positive power supply usually taken from RTS and DRT lines (just after the diodes and before the resistor going to LEDs). The negative supply for transmitter is taken from TD pin. Typical PC serial port mouse takes 10 mA total current and operates at voltage range of 6-15V. For more information about PC mouse operation check my PC mouse protocol document. Some schematics of working PC mouse impelementation can be found from PC Mouse Implementation Using COP800 (AN-681) from National Semiconductor and Implementing a Simple Serial Mouse Controller using PIC16C5x (AN519) from Microchip.
My circuit
The following circuit is an example how to get power from RS-232 serial port. It gives regulated +5V power for logic circuits and also unregulated positive and negative power supplies for RS-232 transmitting circuit. The circuit gives only few milliampres power output because the power available from serial port is limited (and resistors R1, R2 and R3 limit current more).
Modification idea: Use the circuit with 9 pin serial port
Modern PCs have typically 9 pin port instead of this older 25 pin port. If you want to use this circuit with such PC you have two options: use a 9 to 25 pin adapter or modify the circuit to 9 pin port. To do the conversion you have to make the following modifications to the circuit pinout:
25 pin 9 pin 2 3 4 7 7 5 20 4
Modification idea: Get more current
You can get a little bit more current from the circuit if you leave out the resistors (R1, Rs, R3) and replace them with short piece of wire. 78L05 regulator takes 3-4 mA current all the time and needs at least 2V voltage drop, so if you can find a similar regulator which takes less current and has lower voltage drop, you get more current for your circuit. One this kind of circuit can be found at http://www.ee.washington.edu/eeca/circuits/serialpower.txt.
Other circuits
Some small circuits signal input circuit I have seen have taken positive and negative supplies for simple operational amplifier circuit just by using DTR and RTS lines. Just by driving one of them to 1 and other to 0 using suitable software routine, there are available positive and negative voltages from those pins.
Some simple circuit which does not take much power (less than 2 mA) can take their power simply from one serial port line (DRT, RTS or TD). I have used this approach at my Serial Port A/D-converter circuit, where is have taken power from DTR line and regulated it to +5V with 1 kohm resistor and 5.1V zener diode.
David Tait has designed a regulator circuit which takes port from RS-232 port and gives out regulated +5V. That circuit is based on two standard transistors and few other components. You can download the circuit at http://www.ee.washington.edu/eeca/circuits/serialpower.txt
How much do I really get power ?
How much you can really draw from a serial port depends on the circuit technology used in the serial port. B&B Electronics Connection Newsletter number 2 has a good article "Tips For Using Port Powered Converters" about how much you can really get power from different serial ports. The following data is extracted from the article text:
Type of State of Voltage Voltage/current Power available from Driver Line at no load per driver (max) 3 driver outputs 1488 positive +9..11V +5V @ 6.5 mA 98 mW 1488 negative -9..11V -5V @ 6.5 mA 78 mW * MAX232 positive +7.5V..8V +5V @ 5 mA 75 mW MAX232 negative -7.5..8V -5V @ 3.5 mA 42 mW * EIA-562 positive +3.7..5V +4.5V @ 1.5 mA none EIA-562 negative -3.7..5V -4.5V @ 1.5 mA noneNOTE: The power ratings are what can be obtained used the methods B&B Electronics uses in their circuits. The values marked with * are the power available after the negative power is converted to positive +5V with extra electronics in the circuit connected to serial port.
Here is another table how much power is available from different computers form RS-232 port RTS line and how the load affect the available voltage. Information is collected from the RS-232 powering articles posted to sci.electronics.design newsgroup. I have not verified those results but those seems to be quite similar values what I have found in my RS-232 experiments and should be applicable to also to other RS-232 port lines in PCs (TXD and DTR).
Computer no load 8mA load Toshiba Laptop 8.4V 4.0V Pentium 133 bd 11.5V 7.0V Pentium 90 bd 11.5V 6.0V 286 Computer 11.5V 3.6VThe choice of processor does not affect the RTS line drive, they are only listed to distinguish between the different machines. The only thing which affects the output current capability is how the serial port interfaces implemented in motherboard or in I/O card (which driver IC is used).
Beware of combining pins for more output because using two pins does not necessarily give double the power. Many modern RS-232 output buffers use charge pump circuit to generate the RS-232 voltages form +5V source and it will often be a charge-pump converter which limits things (i.e. on all pins) rather than the individual pin drivers, especially on laptops.
Driving relays using RS-232 port power
If the serial port is used for no other purpose then to operate one or two devices use the RTS and the DDR line. They can be set and reset by simple I/O commands to the serial port chip (UART).
Using a 3-8VDc Solid State Relay
If the solid state relay operates at 5 mA input current range you can run it directly using the following circuit:
1N4148 RTS-----|>|------[ + SSR input - ]---------GNDIf the 5 mA is not enough for the semiconductor relay then you can can combine the power from two RS-232 output lines together using the following circuit
1N4148 RTS-----|>|-+----[ + SSR input - ]---------GND | DTR-----|>|-+When using this combination circuit you must remember that both RTS and DTR lines are controlled at the same time. If you have only one line activated at the time there is no guarantee if the relay is activated or not if it takes more than 5 mA.
Micro Electronic Relays
Using a 3 mA Input 'Micro Electronic Relay' or 'Photovoltaic Relay' The exact terminology depends on manufacturer. They are basicaly very sensitive opto couplers that have a MOSFET transistor output. ( DC ) Or thet have 2 MOSFETS back to back for switching AC.
1N4148 R RTS-----|>|----/\/\/\/\----[ + opto inp. - ]------GNDThe resistor R value should be calculated so that the current flowing through the "relay" is around 3 mA.
Sensitive reed relays
You can drive directly a sensitive 12V reed relay that has a minimum coil resistance of 1200 Ohm.
DTR--------( 1200 ohm 12V reedrelay coil )-----------TXDInternal current limiting in the RS232 drivers will give a combined voltage of 0 or about 12V to the relay depending on the level of the DTR line. When the DTR and TXD lines are at different potential the relay gets energized and when they are at same potential relay gets no power. TXD line is normally at negative potential when no data is sent so the relay gets energized when DTR line is raised.
Controlling the relays with software
The serial port DTR and RTS pins can be controlled by directly writing to the I/O-port address which is the RS-232 port base address + 4.
The bits what you should set to that port are following:
- Bit D0: DTR pin state (0 = -12V, 1 = +12V)
- Bit D1: RTS pin state (0 = -12V, 1 = +12V)
- Bits D2-D7: Leave those to be 0
In the relay controlling circuit examples above +12V energizes the relay and -12V does not nergize it. Here is a short table of different values you send to serial port and the states different pins get:
Value DTR RTS sent state state 0 -12V -12V 1 +12V -12V 2 -12V +12V 3 +12V +12V
The standard I/O port addresses for different COM ports are following (in some systems are are some different one used sometimes):
Serial Typical I/O Memory location (in DOS) where port address I/O address in use can be read COM1 3F8h 0040:0000 COM2 2F8h 0040:0002 COM4 378h 0040:0004 COM4 278h 0040:0006Straigt controlling the I/O ports if the serial port controlling chip is usually the mist straightforward way to do the relay controlling.
For actual programming code examples take a look at my Parallel port interfacing made easy article program examples. Just change the I/O port addresses and the values uou send to the port to match the one tols this article and the examples are usable.
Tips for designing RS-232 powered devices
Remeber that different RS-232 drivers provide differing voltages and currents. You'll probably wind up having to check which driver chip is being used in the system you want to tap (if power's really tight) or make sure your requirements are so low that it doesn't matter.
In IBM PC world RS-232 ports use typically the MC1488 drivers. They are current limited to +/-10ma. The "equivalent schematic" on datasheet shows 300 ohms in series with the output, and additional 70 ohms in series with the driver transistors. Typical Vcc and Vee are +/- 12V +/- 10%. This is at a junction temperature of 20 Celcius.
If you are using all outputs, you may be able to count on only 7.5 ma per output in the typical pcb thermal environment. The data sheets have a curve of the value of this current versus junction temperature.
If you are going to combine outputs to get more current, try to use drivers from different 1488s, so that you do not unduly shorten their life by overheating them. And put diodes in series with the leads so they don't try to fight each other.
Possible problems with new computers
In the last few months there have been increasing notification of problems on lap-tops and a few desktop computers because the serial port signals are only driven to +-5V (rather than 12V nominal current limited on PC's etc.). So if you go for such a design make sure it will work on +3 and -3V - all you may have left. Longer term USB may be taking over - something to think about if you are going into production.
Addition 05/2004:
There are better regulators chip for this application than the 7805. For example the LM2931 from National Semiconductor has a very low voltage drop and a very low quiescent current. I think this IC would be worth to try for this circuit. Datasheet for this IC can be found at http://www.national.com/ds.cgi/LM/LM2931.pdf.
Tomi Engdahl <[email protected]>