Voltage Level Shifter


(click to enlarge)




PCB v1.2 Front                   PCB v1.2 Back




Arduino Serial Monitor shows I2C address scan of

BME280 sensor and 0.96" SSD1306 Display



O'scope display of I2C (left) and SPI (right) signals





Eagle CAD Drawing v1.3


Eagle CAD PCB Layout v1.3



PCB v1.3 Hookup



Eagle CAD: Bill of Materials


This voltage level shifter allows you to use modern 3.3v peripherals with older 5v microcontrollers. Actually, the voltage choices are up to you and are only limited by the SH8K51 MOSFET.

v1.2 of the level-shifter has 10K pull-up resistors for both input and output signals as well as decoupling caps for both voltage sources.

v1.3 has the silkscreen cleaned up and is out for production.



- Plug the level shifter board into the center of your breadboard

- Wire the 3v3 pin (2) to one BB rail, the 5v pin (1) to another rail and the GND pin (3) to a common ground

- Usage Example: Pin 4 on the HIGH side connects to SDA from the 5v Uno or Nano, and pin 4 on the LOW side connects to SDA on the 3v3 peripheral like an SSD1306 1.3" OLED display

- Both two I2C and four SPI connections are possible with this one board

- This is a voltage level shifter and can be used with most digital signals, not just I2C and SPI



The level-shifter chips were too small for me to hand solder so I revised the PCB to v1.2 to use SOP8 packages (SH8K51) instead which should be a little easier to work with than the tiny SOT363-sized S13134KDW which are BSS138PS workalikes.



Phillips app note AN97055.


Left Panel Pix:

In the left panel you can see pix of the PCB that was sent out for manufacture.

The PCBs returned, were populated, defluxed and tested with I2C-Scanner.ino and SPI_SD_ListFiles.ino. The results of the I2C Scanner program show the I2C addresses of the BME280 sensor and the 0.96" SSD1306 display.

Below the PCB and Serial Monitor pix are 2 screenshots from my Rigol oscilloscope. The signals from the two I2C and 4 SPI pins (connected to a microSD device) look pretty good without too much signal ringing or overshoot.


Middle Panel Pix:

The lower picture of the three shows a 5v Arduino UNO powering the upper breadboard 5v power rail as well as 3v3 to the lower rail.

5v I2C signals, SCL and SDA, are provided to the upper part of the Level Shifter (LS). The signals go through the LS to the lower part and are output as 3v3 signals which are attached to the tiny SSD1306 128x64 0.9" OLED display, which is daisy-chained to the BME280 sensor.



Updated 2022-02-08 @ 8am