# Using BSS138 in Level Switcher

I am trying to interface 1.8v UART and 3.3v UART using NXP app note here. Unfortunately, my circuit does not perform as expected. I am using BSS138 as mentioned in Adafruit and Spakrfun.

When I measure Vgs, it read 0v, but drain and source is somehow connected (same voltage, I checked also using buzzer). Therefore, no level switching happened on my circuit. Is this due to defect in my MOSFET? After reading about MOSFET, I learn that drain and source will only connect if Vgs >= V threshold which is 0.8 - 1.5 in BSS138.

Here's what that app note says that may be relevant: -

The lowest possible supply voltage VDD1 depends on the threshold voltage VGS(th) of the MOS-FET’s. With a threshold voltage of about 1 Volt below the lowest VDD1, the level shifter circuit will operate properly. If for example the lowest VDD1 is 3 Volt, a threshold voltage VGS(th) of maximum 2 Volt is allowed.

I'm pointing this out because you are using 1.8V as lowest Vdd and the BSS138 is: -

VGS(th) Gate Threshold Voltage is 0.8(min) 1.3(typ) 1.5(max) V

So immediately you should not be expecting this to work if you go on the typical figure of 1.3V - this would imply your lowest Vdd can be no-less than 2.3V.

Going back to what you said in your question you say

When I measure Vgs, it read 0v

If you've used the circuit in the link you provided the gate is tied to Vdd(low) and the source is your low voltage IO pin so for you to measure 0V this must mean your your IO pin is at Vdd(low) and this would be the case unless the drain pin is being activated low.

I think you need to measure the voltages on the FET with respect to 0V on all three pins. Maybe it's correct but there's not enough to go on in your question BUT like I said originally I don't think this circuit is going to perform how you expect with the BSS138 FET.

• The PMZ250UN has a typical threshold of 0.7V but is in a strange package which might not suit. I think the PMR280UN is in a more usable package. See also the answers in this to get some other options: electronics.stackexchange.com/questions/36529/… . There is also a fair chance that a regular BJT will do the trick like BC547 - emitter to source, base to gate etc.. Commented Jul 2, 2013 at 13:51
• Oops sorry, I misunderstand the test. Actually, still same behavior when I use 3.3 and 5v voltage. Anyway, do you think that Vgs=0 result in drain and source connected? I checked Vgs (0v) also Vg to gnd (3.3v), Vs to gnd (3.3v) Commented Jul 2, 2013 at 13:56
• Gate voltage should be 1.8V to ground - gates should be tied to your lowest supply rail - maybe you should check the diagram in the link again - the 5V side should be 3.3V and the 3.3V side should be 1.8V for your system to stand a chance of working. Commented Jul 2, 2013 at 14:00
• 3.3 in my comments above is when I test using 3.3 and 5v circuit. In first attempt (1.8v to/from 3.3v), Vgs 0v, Vg 1.8v, Vs 1.8v. I just switched 1.8v side to 3.3v and 3.3v side to 5v. I still do not understand why drain and source is connected eventhough Vgs = 0, Vg = Vs Commented Jul 2, 2013 at 14:04
• Are you measuring connectivity between source and drain with a meter? Or are you assuming connectivity because they are at similar voltages? Commented Jul 2, 2013 at 14:07

I still do not know the answer to the problem with BSS138, but I successfully create 1.8 to 3.3 v level switcher using npn transistor, 2n2222. The circuit can be found in here : http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter