# How can I shift a low logic voltage to a higher one in the simplest way?

Suppose I want to enable an IC by pulling EN pin high with an Arduino. Suppose that the IC works on 12V and accepts a minimum 8V as high but the Arduino only outputs 3.3V.

What is the simplest way to shift that voltage level? I've seen some level shifter ICs but can't I do it with simpler components? I thought of using two N-MOSFETs as below but still it looks messy.

I was about to get in trouble for that because the IC I'm working on indeed works on 12V but when I checked the datasheet I learned that it accepts a minimum 2V as high on the EN pin. I'm relieved as I don't need to shift Arduino voltage. Nevertheless, I wanted to ask the question for future use.

Over a request, I've added my incomplete circuit schematic below, the values are wrong. The question is a general level shifting question, it is not about programming an Arduino (the source of input logic could be something else) or gate drivers.

• How low does it need to go to disable? Commented Feb 26 at 18:18
• EN pin must go below 0.8V Commented Feb 26 at 18:19

Would something like this work for you? Use a logic level NFET so that the gate gets turned on reasonably with 3.3V.

simulate this circuit – Schematic created using CircuitLab

• Woow that's some clever thinking. I see, increasing source voltage turns off the MOSFET. This would work even without R1, am I right? Commented Feb 26 at 19:02
• yeah, you could remove R1 for your application. This circuit is actually a bi-directional level translator, but removing R1 will make it work in one direction only. Commented Feb 26 at 19:05
• I couldn't understand how it works to the other direction I will think about it later because it is bedtime. Still I am amazed that this configuration solves level increasing problem with only two components. Thank you. Commented Feb 26 at 19:12
• The underappreciated common gate configuration. Commented Feb 26 at 19:16
• One disadvantage. If I/O powers up high-z, then EN is high until software can set it low. Commented Feb 26 at 21:03

The Arduino pin is under software control so invert the pin in software. So 0 at the pin is enabled and 1 is disabled. Then you eliminate R33 and Q7 taking the EN output from the drain of Q8.

• True, though the same Arduino pin is connected to a MOSFET gate driver so I normally wouldn't be able to invert the pin as I wish. But the MOSFET driver has inverting version so that can be a workaround. Thanks. Commented Feb 26 at 18:34
• Having a gate driver on that pin may add other options. It would be interesting if it was included in your circuit diagram.
– RoyC
Commented Feb 26 at 18:41
• The thing is, I currently have no problem as I stated in the question. Please consider my question as a general level shifting question. Instead of Arduino, there could be some output that cannot be programmed. Still, I've added the incomplete circuit schematic as you wished. Commented Feb 26 at 18:56
• @CaveScientist, this is a general answer. If you have a 2nd signal that needs to be driven non-inverted then the cheapest solution is to use a 2nd Arduino pin to drive that signal. Use a pin on the same port if you need to be able to change both at exactly the same time. Commented Feb 26 at 19:12

There is nothing extravagant using two N-MOSFETS to replicate the signal at a higher voltage. Double MOSFET ic's are common, small, cheap and convenient for this use.

Please note that high level on input pins often depends on the supply voltage. If it's supplied with 12V it may not see 2V as high level. While it will do if supplied with 5V. Check the data sheet carefully.