Bidirectional level shifter circuit problem

bidirectionalconverterlevel

Ok, so here is my problem:

I am trying to create a small 3.3V to 5V signal level shifter, using a BSS138 transistor.
This is my source for the circuit: a SparkFun circuit.

This is my circuit:

schematic

As you can see, I have one bidirectional and one unidirectional line. On the left is the Low Voltage (3.3V) part and the right is the High Voltage (5V) one. When I connect the TX_LV to the Gnd line, the TX_HV turns to 0V. When I connect the TX_HV to Gnd, it does happen on the other side as well.

But the BSS138 transistor seems to act as a 20Kohm resistor when closed (I even measured it with my multimeter – it was about 19.7Kohms). This results in approximately 4.1V on both the LV (Low Voltage) and TX_LV lines (which should be 3.3V) when 5V is applied to the HV input and neither TX_LV and TX_HV are connected to Gnd

This is quite a problem as I want to connect a Raspberry Pi to an Arduino via Serial port and I don't want to damage my Raspberry Pi by putting 4.1V on its pins. Could anyone please tell me how to fix this or what could I use instead of this solution?

Best Answer

You need to connect LV to a 3.3V source for the circuit to work properly. If it's floating up to 4.1V, it must not be connected to anything.

Related Topic