9
\$\begingroup\$

I have a binary signal, 0V to 1.4V, which I can't change directly. What circuitry, (on a PCB) can I use to increase 1.4V to at least 2.5V.

Do I need a transistor? I guess I'm looking for a switch that will "close" when there's 1.4V? I'm a complete noob at electronics, but I'm alright at physics and understanding the equations

\$\endgroup\$
  • 2
    \$\begingroup\$ What supply voltages do you have available? \$\endgroup\$ – Leon Heller Mar 25 '11 at 18:10
  • \$\begingroup\$ @leon, anything up to 5V? \$\endgroup\$ – Jonathan. Mar 25 '11 at 18:35
  • \$\begingroup\$ sparkfun.com/products/8745 \$\endgroup\$ – Kellenjb Mar 25 '11 at 19:25
  • \$\begingroup\$ Ideally I'd like to do it myself. \$\endgroup\$ – Jonathan. Mar 25 '11 at 20:53
  • \$\begingroup\$ what drive capability does the 1.4V signal have? if it can source 1 mA or more, that's one thing, but if it has 10M impedance, that's another thing. \$\endgroup\$ – JustJeff Mar 26 '11 at 13:35
13
\$\begingroup\$

You're asking for a logic level shifter.

There are packaged chips that do everything for you, but it's also not hard to construct one yourself from discrete parts. There are many ways to do it, each with different tradeoffs.

I find this schematic, from NXP Semiconductors' AN10441 to be a quite elegant way to get that function:

bidirectional MOSFET level shifter

This schematic shows the logic level shifter on an I²C bus, which has two signal lines. If you need only one line shifted, you need only one MOSFET and two pull-up resistors, one on its gate and the other on its drain. Similarly, if you need more lines shifted, you simply add a MOSFET and pair of pull-up resistors to each line.

For the example shown in the schematic, with 3.3 V and 5 V logic levels, any small-signal MOSFET will work, such as the ubiquitous 2N7000. Most generic MOSFETs have a VGS(th) maximum too high to work with your 1.4 V logic level, however. You'll have to look to something more specialized like a Vishay TN0200K or a Zetex (Diodes, Inc.) ZXMN2B14FH.

The values of the pull-up resistors (Rp) depend somewhat on the application, but will have a wide range even then. 10 kΩ is a popular value here, giving a good tradeoff between speed, noise, and current draw. I could see using a value as low as 1 kΩ in certain circumstances, and values North of 1 MΩ in others.

The app note describes how the circuit works, but to paraphrase:

  • With nothing attached to the data line being shifted, the pull-up resistors bring the data line to the low-voltage logic level (VDD1) on one side and the high-voltage logic level (VDD2) on the other.

  • When the low-voltage side brings the signal line down, it drags the MOSFET's source pin down. Since the gate is tied high, this causes the MOSFET to turn on when VGS passes the VGS(th) threshold, so it conducts, dragging the high-voltage side down, too.

  • When the high-voltage side wants to do the same, it's more complicated. This circuit scheme relies on the fact that every MOSFET has a parasitic diode built into it, which is shown in the above schematic's MOSFET symbol. (The MOSFET symbol isn't always drawn with the parasitic diode showing, but it's always there.) By dragging the drain pin down, the high-voltage side causes this diode to conduct, which indirectly drags the low-voltage side's source pin down, causing the same thing to happen as in the previous case.

This tendency of the circuit to "ride high" by default may not be appropriate for all applications. If one end can ever become disconnected and the device left connected isn't actively pulling the data line down, the data line will go to the high level. This is fine for I²C, since the high logic level is the normal idle condition. If your data line doesn't work like that but neither end can become unplugged and at least one end is always actively pulling the line down when it wants the line to be low, this circuit will still work.

\$\endgroup\$
11
\$\begingroup\$

Note: Corrected logic inversion problem.

2nd Update: Fixed output voltage range, using MOSFET rather than BJT


The basics of the problem as you have described it, appear to be called either a "logic level shifter" or converter. The essence is that you have a digital logic (binary) signal at a given signal level, and you wish to use adapt it to another signal level.

Digital logic signals are normally classified according to the original logic family they belong to. Examples include TTL (low: 0, high: +5V), CMOS (low: 0, high: 5 to 15V), ECL (low: -1.6, high: -0.75) , LowV (low: 0V, high: +3.3).

Ideally, you should also be aware of the switching threshold as well. E.g Logic signal voltage levels that shows the TTL logic voltage levels in the first two graphics.

If you wish to amplify a logic signal that is either 0 or 1.4V, then a single transistor can be configured as an electronic switch to act as a level converter.

N-channel MOSFET level shifter schematic (src: mctylr CC-BY-SA)

In your application the output is the 5V-level output (0 or 5V depending on low/high status) and M1 could be a common small-signal N-channel enhancement mode MOSFET transistor, the 2N7000 in TO-92 plastic through-hole, and SMT packaging.

The resistors R2 should be 330Kohms, (additional resistor component details are not critical, e.g. 1 or 5% tolerance, 1/8 to 1/4 Watts rating are fine).

The resistor's resistance values is not particularly critical, I picked an approximate standard value so that if M1 is not conducting then the output will be below ~0.8 V, while when M1 is conducting (i.e. the input is 1.4V, 'high') then the output will be approximately 5V. I picked the value using a quick SPICE simulation.

V3 is a +1.4V voltage source, and V2 is a +5V voltage source.

The other values (tolerance and wattage) are common through-hole component values used to select real-world component, but are not critical in this application.

That's a very simple and small circuit, costing about twenty-five cents or less for three common electronic parts.

Since you didn't mention any high-speed requirements (i.e. switching speed), so this should work in most simple cases.

I've adopted this approach of using a MOSFET rather than a bipolar junction transistor as I had trouble making a single BJT give the desired voltage swing when switching. From a design point of view, the nice thing about FETs (and MOSFETs) is that they are voltage controlled devices (in terms of a design model), rather than current-controlled as BJT are.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the answer, it's a little too complex for me, but it's something to work towards. Where would I get out the increased signal? \$\endgroup\$ – Jonathan. Mar 25 '11 at 20:11
  • 2
    \$\begingroup\$ @Jonathan - At the "Out" pin; you'll need a pullup resistor to 5V. \$\endgroup\$ – Kevin Vermeer Mar 25 '11 at 21:14
  • \$\begingroup\$ Surely I need another voltage in. Also how did you calculate the resistors' resistance? \$\endgroup\$ – Jonathan. Mar 25 '11 at 21:22
  • \$\begingroup\$ @Jonathan In such a circuit the resistor values are not very important unless you need fast signals. They should just be higher then several kOhms so that the current stays low. If you set the resistors too low you could overburden your 1.4V outputs. \$\endgroup\$ – jpc Mar 26 '11 at 1:57
  • 1
    \$\begingroup\$ This also inverts the output. \$\endgroup\$ – freespace Mar 26 '11 at 3:30
11
\$\begingroup\$

You can build a logic level shifter (that's what it's called) with a few discrete components (transistors and resistors) or you can go for a one-component solution, i.e. an IC. Most ICs won't accept input voltages as low as 1.4 V, but I found Fairchild's FXLP34 which does. (You want the FXLP34P5X, the other versions have leadless packages and are therefore more difficult to solder)
Connection diagram:
FXLP34
A is where you supply the low-level input signal, Y is your "high"-level output signal. Vcc1 is your 1.4 V connection, connect the required output voltage to Vcc (up to 3.6 V).
The device may be hard to get in low quantities, maybe a distributor can supply with a few samples.

PS: yes, that tiny cursor is also present in the image in the datasheet :-)

edit
An alternative part, in case PCB space is a premium: the OnSemi NLSV1T34 is available in a Damn Small™ 1.2mm x 1mm DFN. For mortals also in SOT-353.

\$\endgroup\$
  • \$\begingroup\$ The FXLP34L6X is a leadless package. If you want actual pins, you need the FXLP34P5X which comes in an SC70 package \$\endgroup\$ – Federico Russo May 25 '11 at 10:21
  • \$\begingroup\$ @Federico - You're right, thanks for pointing this out. I'll edit my answer. \$\endgroup\$ – stevenvh May 25 '11 at 13:52
  • \$\begingroup\$ TI has SN74AVC2T244 (ti.com/product/sn74avc2t244) which won't translate up to 5 V, but it will go up to 3.3, which meets the requirement of "at least 2.5 V". This solution might be a little bit more expensive ($1.50 onesy-twosy) than the discrete solution, but its less parts to manage and less chance to mess it up. \$\endgroup\$ – The Photon Dec 1 '11 at 17:16
1
\$\begingroup\$

To change the voltage, you could use a trusty hand-wound transformer. Go to a bookstore and pick up a copy of the ARRL General Class License Manual for ham radio. It teaches you how to do that.

For the voltage-controlled switch, Panasonic makes an IC called the 1381 voltage-based trigger. It's designed to turn off a switch when voltage drops below a certain level (usually for turning off gadgets when the battery dies). It's available from Solarbotics.

\$\endgroup\$
  • \$\begingroup\$ I thought transformers only work with AC? \$\endgroup\$ – Jonathan. Mar 26 '11 at 9:57
  • \$\begingroup\$ @Jonathan, you are correct. \$\endgroup\$ – Kortuk Mar 26 '11 at 12:45
  • \$\begingroup\$ The idea of using the 1381 is a clever one, +1 \$\endgroup\$ – freespace Mar 26 '11 at 15:06
  • \$\begingroup\$ It's possible to make a dc to dc converter using a 555 timer, thereby changing voltages in direct current. Of course, there are other ways to make them. \$\endgroup\$ – technowizard12 Mar 26 '11 at 19:58
  • \$\begingroup\$ The trigger level of the 1381 seems to be 2V minimum, which means it will never trigger on an input signal between 0 and 1.4V. \$\endgroup\$ – stevenvh May 26 '11 at 12:46
1
\$\begingroup\$

If you just want a switch that closes when the logic signal is 1.4V and opens when it's 0V, then you need very little:

The transistor will turn on when the logic level is high, and off when low. You can connect whatever you want to control between the power supply and the collector of the transistor. This could be just a resistor if you want to make a logic signal that goes between ground and the supply, although the signal will be inverted from the input logic signal. Or it could be a LED with appropriate current limiting resistor in series, or many other things. If the thing being driven can be inductive, then a diode should be added from collector to power to catch the kickback current when the inductor is turned off.

This puts about 1 mA thru the base of the transistor when on. Figuring a guaranteed gain of about 50 for the transistor, the output is good for up to 50 mA to keep the transistor operating as a switch.

The power voltage is independent of the input logic levels, and only needs to not exceed the transistor's max Vce spec, which is 40V in this example.

\$\endgroup\$
0
\$\begingroup\$

Do you have control over the waveform from the low-voltage side? If so, maybe a rectifier voltage double circuit can be used to charge pump to the higher voltage. The only gotcha with this approach is that you need to have the low-voltage side output go from a "high/low" signaling to a "carrier/no carrier" signaling.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.