Squeezing One More Signal Through A Connector
What do you do when you have to interface to an already existing design through an already defined connector, all the connector pins are spoken for, but you need to pass just one more signal through that connector? Clearly, a pin is going to have to be multiplexed to carry your new signal in addition to its original signal. Time domain, frequency domain, and even code domain multiplexing are all techniques for doing this, but are overly complicated for this situation. This design idea illustrates a simple technique that, for lack of a better name, I call "impedance domain" multiplexing.
Figure 1 illustrates the scenario. We have a multi-pin connector passing various analog and digital signals in both directions between the original equipment and the new equipment being designed. The new equipment needs to know the status of a particular element in the original equipment, but the desired signal is not available on the interface connector!
The technique requires that the original signal is being carried in the opposite direction to the new signal to be multiplexed onto the pin. It is most easily applied on a pin used to carry a low-speed logic signal that is received by a high-impedance device, such as a CMOS logic gate. Even if the signal is analog and/or driving into a moderate-impedance termination, this technique is still applicable, just a little more difficult.
In this case, since we desire to pass information about the state of something in the original equipment to the new equipment being designed, we pick a pin carrying a signal that is sourced by the new equipment and received by the original equipment as the candidate for "impedance domain multiplexing."
Figure 2 gives a general block diagram of the technique. The premise is to use a very low impedance driver as the source of the original signal. A tiny "sender" circuit is added to the original equipment to capture the desired signal "X" and draw a corresponding current from the connector pin. As long as the impedance of the source driver is sufficiently low, this will have negligible effect on the original signal’s voltage and hence not interfere with it in any way. A "monitor" circuit in the new equipment detects the current being drawn from the source driver and uses this to reconstruct the "X" signal. Essentially, voltage is being used to convey the original signal from left to right, while current is being used to convey the added signal from right to left, through the same connector pin!
Figures 3 and 4 give one specific implementation for the sender and monitor, respectively. In this case, the signal chosen for multiplexing was a low-speed 5-volt logic signal that was being received by a high-impedance device in the original equipment. There was room in the original equipment for a postage-stamp sized circuit board to implement the sender, but only 5-volt power was available. Because of this, it was not possible to implement a circuit that would be able to source current when the logic signal was also at 5 volts. Likewise, a design that tried to sink current would not work when the logic level was at zero volts. Since the logic level would always be either zero or 5 volts, it was possible to create a design that would sink current when the logic level was high and source current when the logic level was low. If, say, a 12-volt supply had been available, the entire design would have been considerably simpler!
U2 is an 8-pin microcontroller that simply receives the desired signal on one of its pins. When that signal is present, it drives one of its outputs high and the other one low to create a Thevinen network from R5 and R6 which will draw current one way or the other depending on whether the logic signal is high or low. If the input signal is not present, then U2 tri-states its outputs, and no current is drawn. This simple switching function could just as well be performed by a few transistors and resistors, but use of a microcontroller affords the opportunity for additional signal processing or conditioning that the application may require, for not much more expense.
The monitor circuit in Figure 4 detects the presence or absence of current in the signal line in order to reconstruct the desired signal, with the wrinkle that when current is present, it can be flowing in either direction depending on the logic level of the original signal!
U1A functions as a unity-gain buffer for the original signal. R1 serves as the current-sense resistor. R1 is inside the feedback loop of U1A, hence its voltage drop is effectively removed from the signal. C1 provides compensation to ensure stability.
U1B and the diode bridge comprising dual diodes D1 and D2 implement a single-comparator window detector. If the voltage drop across R1 exceeds the size of the window (2 diode drops, about 1.2 volts) in either direction, the result is the same: U1B’s output goes high. If no current is present, U1B will be low. Hence the desired signal is reconstructed. R4 prevents excessive current flow when the -5 to +10 volt output swing of U1B is clamped to logic levels by the receiving logic device.
This design is subject to a "glitch" when the original signal changes state. This causes the current draw to change direction and necessarily pass through the window of the detection circuit, but the glitch is easily filtered out in software by the processor that is receiving the signal in the particular application this design was used for. Adding a capacitor after R4 to form a low-pass filter could accomplish the same effect in hardware if necessary.