COVID-19 impact: We are still operating and shipping all orders. We have reduced our on-site staff, so for critical requirements, please contact us so we can identify priorities. Click here for more info.

New product: Logic Level Shifter, 4-Channel, Bidirectional

Posted by Paul on 2 May 2014
Tags: new products

Level shifting is a common issue when interfacing multiple microcontrollers or other digital logic devices. For example, you cannot directly connect an Arduino running at 5 V to the Wixel, which runs at 3.3 V. Our Wixel Shield for Arduino contains several level-shifting circuits to help you do this.

In some cases, such as connecting a digital sensor output to your microcontroller, a simple voltage divider or transistor inverter might be good enough. However, in many cases a better solution is necessary. I²C, for example, is a common protocol that makes use of a bidirectional communication line. Luckily, a relatively simple circuit consisting of a MOSFET and two pull-up resistors can be used for general-purpose bidirectional level shifting:

Schematic of a single bidirectional logical level shifter.

We have used this level shifter circuit on many of our breakout boards operating at a lower voltage, such as the MinIMU-9. It works like this:

  • When Lx, the lower-voltage input, is driven low, the MOSFET turns on and the zero passes through to Hx.
  • When Hx, the higher-voltage input, is driven low, Lx is also driven low through the MOSFET’s body diode, at which point the MOSFET turns on.
  • In all other cases, both Lx and Hx are pulled high to their respective logic supply voltages.

The circuit works for any pair of voltages (within the limitations of the MOSFET) and can be used with most common bidirectional and unidirectional digital interfaces, including I²C, SPI, and asynchronous TTL serial. You can read more about it in NXP’s application note on I²C bus level-shifting techniques.

Today we released a logic level shifter board featuring four of these bidirectional channels:

Our board can convert signals as low as 1.5 V to as high as 18 V and vice versa, so you can use it for almost any logic-level signals that you might encounter in your project. It is also, as far as we know, the smallest bidirectional logic level conversion board out there:

Note the use of a more internationally-appropriate size reference than our traditional U.S. quarter. After we put together this image, nobody believed that the board was actually that small, but we verified it several different ways to make sure.

Anyway, with this board’s small size, low cost, and versatility, we think it is something that everyone should have in their toolbox. For more information or to order, see the product page.


Can you send me a link of the data sheet of the fet? Thanks

Is there a specific parameter you are concerned about? We do not want to commit to particular components for boards like these, but the specs should be in line with typical components like this (dual low-voltage MOSFET in a small package).

- Jan
Would it be possible to shift 24v to 3.3? We are looking to converting such levels, but I see the module is limited to 18v on the high side. Are there any alternatives?
Hello, Alessandro.

As you noted, this level shifter has a maximum operating voltage of 18V, so it would not be able to shift 24V to 3.3V. We do not have any recommendations for other level shifters that can do higher voltages. If you only want to level shift down from 24V to 3.3V, you might consider using a voltage divider.

- Jeremy
Could You please give the thermal range of this design ? Thanks.
Hello, Michel.

It should be fine over the typical -40 to 125° C range.
What is the speed of this level shifter? For example can I use it to drive the data line on neopixels? WS2812B addressable LEDs?
Hello, Scott.

Someone posted to our forum about using that level shifter with a 3.3V Teensy to control a NeoPixel ring and it worked for them. Like Jeremy mentions in that same thread, in our tests we were able to use a 3.3V signal directly with our WS2812 addressable LEDs. So, if you are using a 3.3V microcontroller, you might try connecting it directly to your NeoPixel to see if it works without any level shifting. You might also consider adding a 10kΩ pull-up resistor in parallel with the existing pull ups to Lx and Hx on each channel, which should effectively reduce the time constant by half.

Could you please mention the current consumption of the board? Thanks.
Hello, Supreeth.

The 10k pull-up resistors on each of the signal lines on each channel consume current when the channel is in a logic low state. It is possible to calculate a current from your HV and LV supplies using Ohm's law.


Post a comment

Using your Pololu account allows you to customize your avatar and manage your comments; you can also post anonymously.

Related Products

Logic Level Shifter, 4-Channel, Bidirectional
Log In
Pololu Robotics & Electronics
Shopping cart
(702) 262-6648
Same-day shipping, worldwide
Shop Blog Forum Support
My account Comments or questions? About Pololu Contact Ordering information Distributors