Become a subscriber (Free)

Join 29,000 other subscribers to receive subscriber sale discounts and other free resources.
:
:
Don't worry -- youre-mail address is totally secure. I promise to use it only to send you MicroZine.

How to make your own logic level Converter

This page is all about logic level converters that allow you to easily change between different logic voltage levels.

You know when you just bought that nice shiny new chip to play with, you get it in the post and only then do you think: What about voltage levels? Then you see that the new chip only works at 3V3 and the only microcontroller you have works at 5V! See this project for an example of using the logic converter circuit.

Logic Level Converter using resistors

First of all you think that's easy, I'll just use a voltage divider tro drop the high side voltage to 3V3 and problem solved. Maybe it is, but if your device is an I2C device (where you need bidirectional communication on the data line), using a divider on the high side won't allow the voltage to go the other way at a reliable level.

The solution is to use a level converter which only requires a MOSFET, and two pull up resistors.

This method uses a MOSFET and relies on the parasitic diode between Source and Drain (this is usually a problem rather than a benefit!), to allow full bidirectional communication with low and high side voltages. The operation is explained below.

Logic Level Converter using MOSFET

This is a very useful bit of electronics that also happens to be extremely simple, but extremely clever. It lets you easily convert between different voltage level systems using only a simple enhancement mode logic level MOSFET and a couple of 10k resistors.

Note: The actual voltages used can be anything that the MOSFET is specified for - but there will be a voltage drop across the parasitic diode of 0.7V to be accounted for (low-side to high-side drop).

Since the 10k resistors pull up inactive lines, they have to charge any stray capacitance so for fast speed use 1k resistors. The rate of voltage rise will therefore be faster.

TIP: For faster operation reduce the pull up resistor values.

MOSFET Level converter diagram

2N7000 pinout

2N7000 pinout

MOSFET level converter circuit

Logic Level Converter Operation

wrt = with respect to.

High side '1'

When the high side outputs a '1' (5V) drain and source are pulled towards the high voltage so the source is high wrt. gate (reverse Vgs voltage) so the MOSFET is off so the low side pullup is active and pulls the low side to 3V3.

Note: This action also happens when the high side is tristated (the pullup pulls the high side to 5V anyway - this is why I2C interfaces work.

High side '0'

When the high side outputs a '0' (0V) the source is pulled low wrt gate, so the gate is higher than the source and the MOSFET is on (Vgs is positive). The MOSFET then conducts the zero through to the low side pulling down the low side.

Low side '1'

When the low side outputs a '1' (3V3) the gate source voltage is zero so the MOSFET is off. The high side pullup is active and pulls the high side to 5V.

Note: This action also happens when the lowside is tristated (the pullup pulls the high side to 3V3 anyway - this is why I2C interfaces work.

Low side '0'

When the low side outputs a '0' (0V) the gate source voltage is 3V3 and the MOSFET is on. The MOSFET then conducts the 0V through to the high side pulling down the high side.

Note: It is up to your program to decide when to switch from driving the output connected to the high side to becoming an input. For I2C there are defined time periods for this to happen.

Level converters and SPI

For a 4 wire SPI interface there is no bidirectional requirement (data out: SDO, and data in: SDI use separate pins) so you could use the divider method and that requires 3 dividers with a total of 6 resistors.

Note: Data in from the low side driver is usually high enough in a 3V system to signal a logic one to the 5V high side.

To go from 5V to 3V needs a resistive divider with 22k and 33k (which drops the output to 3V) (or you can replace the 33k with 39k for a drop of 3V2 (for a 3V3 system).

A 3 wire SPI interface requires a bi-directional data I/O conversion - the data I/O pin uses bi-directional signals.


New! Comments

Have your say about what you just read! Leave me a comment in the box below.




Privacy Policy | Contact | About Me

Site Map | Terms of Use



Visit our Facebook Page:
To Visit Click Here


Recent Articles

  1. How the HMC5883L 3-axis digital magentomter works

    Find out the differences between the HMC5883L and the QMC5883L and whether they are compatible.

    Read more

  2. Arduino absolute value - abs() - secrets revealed...

    Secrets of Arduino absolute value abs() - Why it might fail, Why it may cause problems...and how to fix it.

    Read more

  3. Arduino Analog Output...Easy analog output generation

    Arduino Analog Output: How to create the most accurate PWM analog ouput and how to create analog PWM sine waves.

    Read more

  4. ACS758 secrets...

    Using the ACS758 to measure very high current

    Read more

  5. Arduino Voltage Reference Capabilities

    Arduino Voltage reference: Both the Uno and Nano have a built-in voltage reference: Find out how to make it more accurate. In addition find out how to use it to measure the supply voltage 1V8 ~ 5V5

    Read more

  6. DigitalWrite and equivalent fast macros. Speed up your code!

    Find out how digitalWrite() works...Now use 17x Faster macros!

    Read more

Readers Comments

"I wanted to thank
you so so so much
for all the information
you have provided in
your site it's

SUPERB and FANTASTIC."

- Ranish Pottath

"This site really is
the best and my favorite.
I find here many useful
projects and tips."

- Milan

bursach<at>gmail.com<

"Awesome site,
very, very easy and nice
to navigate!"


- Matt
matt_tr<at>
wolf359.cjb.net


Learn Microcontrollers

"Interested in
Microcontrollers?"

Sign up for The
Free 7 day guide:

FREE GUIDE : CLICK HERE


"I am a newbie to PIC
and I wanted to say
 how great your
site has been for me."


- Dave

de_scott<at>bellsouth.net

"Your site is a great
and perfect work.
congratulations."


- Suresh

integratredinfosys<at>
yahoo.com

"I couldn't find the correct
words to define
yourweb site.

Very useful, uncovered,
honest and clear.

Thanks so much for
your time and works.
Regards."


- Anon

Back to Top