How much current do OLED displays use?

Those little OLED displays are everywhere, and there's a good reason. They're inexpensive, easy to program and they look good. I wanted to explore how much current they draw so that I can plan better for battery powered projects.

Questions I want answered:

  • How much idle current is drawn when the controller is off versus on (blank display)?
  • What's the minimum current to see text indoors?
  • What's the maximum current when all pixels are on at their brightest?
  • How does display size affect current draw?
  • How does active data writing affect current draw?
  • It's obvious they use more, but how much current do grayscale and color OLEDs use?
  • How practical are OLED displays compared to common LCDs for battery powered projects?

Materials:

  • Cheap multimeter (manual scale, assumed accuracy +/-10% at worst)
  • Various OLED displays (72x40, 96x16, 128x32, 64x32, 128x64-0.96", 128x64-1.3")
  • Arduino compatible microcontroller (Adafruit nRF52840 Feather Express)
  • Software (my ss_oled library)

These are the displays I used for my tests. I like to use the I2C breakout board versions for simplicity. There may be inefficiencies in the linear regulator and other discrete components which come on the breakout boards, but since the active displays use milliamps, losing a few microamps shouldn't be a big deal.

What about color and grayscale OLED displays?
I was asked on twitter to include a quick test of these OLED displays. I could tell that the power usage was high because the controller chip gets hot to the touch when barely anything is displayed. I no longer have my SSD1351 color OLED to test, but I do have an SSD1327 128x128 4-bit grayscale display. With the display set to 'off', I measured 600uA. Here are some values I measured when the contrast (brightness) was set to the maximum value:

Display filled with color 0  - 2.5mA (every pixel is off/black)
Display filled with color 1  - 85mA
Display filled with color 2  - 111mA
Display filled with color 3  - 147mA
Display filled with color 15 (display reset due to my 3.3v power supply sagging)

In general, the display uses a lot more current to get the same pixel brightness compared to the monochrome SSD1306 displays.

Procedure:
I ran 8 different tests on each display. The "dim" setting has the contrast set at a value of 31. This is comfortable to read in indoor light or at night. 127 is the default contrast and is reasonably bright. 255 is the max brightness. The current was measured by inserting the multimeter probes between the Vcc of the display and a 3.3V power source (in this case, the regulated output of the Arduino). There was very little visible difference between contrast 1 and 31.

Results:

Type
Display Off
On, but Black
Contrast 31, 50% pixels lit
Contrast 127, 50% pixels lit
Contrast 255, 50% pixels lit
Contrast 31, 100% pixels lit
Contrast 127, 100% pixels lit
Contrast 255, 100% pixels lit
128x64 1.3”
490uA
490uA
15.4mA
26.1mA
31.4mA
20.6mA
33.7mA
39.1mA
128x64 0.96”
26uA
469uA
5.6mA
8.1mA
11.0mA
10.3mA
15.1mA
20.7mA
128x32 0.91”
6uA
6uA
12.1mA
16.2mA
21.1mA
21.3mA
29.0mA
38.7mA
128x32 0.91”
4uA
4uA
16.2mA
19.7mA
21.7mA
27.5mA
33.8mA
36.0mA
96x16 0.69”
7uA
7uA
4.45mA
5.62mA
6.96mA
7.23mA
9.44mA
12.11mA
64x32 0.49”
6uA
6uA
1.56mA
2.71mA
3.11mA
2.49mA
4.63mA
5.17mA
72x40 0.42”
4uA
230uA*
630uA*
N/A
N/A
93
N/A
N/A
* The 72x40 display didn't appear to respond to the contrast setting and had a permanent and somewhat dim contrast.
I thought that the 128x32 was an anomaly from a specific vendor, but a second display from a different vendor behaved the same way. Strangely, a second 64x32 display from the same vendor, bought in the same batch, used twice as much power as the one tested above.

I chose the most efficient display to do a final test which displays text (less than 50% pixel coverage). My ammeter read 630uA for a static text display on the 64x32 OLED.


What about active data writing?
Besides extra activity on the display controller, there will be current leaking through the pullup resistors when the SCL or SDA lines go low. Typical pullup resistors for these displays are 4.7KOhm, so while the data and clock lines are active, about 700uA (3.3V / 4700 ohms) will leak through them. I tried a test where I continuously wrote the same data to the display (same display and same text as above). The results were a reading of 1.47mA. Different pullup resistors and different data being written will produce different results.

Conclusions:

  • There is a nearly linear relationship between the number of lit pixels and current use
  • The display size is directly related to the current use
  • There are some oddball displays that use more current than expected. Need to test each one individually
  • Actively writing to the display uses more current than a static display - hard to know if it's the I2C activity or the controller chip or both
  • There's something odd about the 72x40 displays I have; I will need to get some from another vendor and retest
  • The ubiquitous 128x64 0.96" OLEDs can potentially display a screen full of useful information on less than 5mA
  • The power usage of grayscale and color OLEDs is much less efficient when compared to the same size and brightness of monochrome displays.
  • A small OLED with indoor readable text can run on less than 1mA
The last item above surprised me the most. The power indicator LED on most Arduino boards uses more current than the 64x32 OLED with useful information displayed on it.

To answer my last question about the practicality of OLEDs versus commonly available LCDs for battery powered projects, I think it depends on the project and power source. A decent sized LCD with the backlight off can consume less than 275uA (my measurements from a 2" 128x64 UC1701). If your power budget is small and your MCU is programmed to sleep most of the time (avg current < 1mA), this can make a huge difference compared to a 5-20mA OLED displaying the same info. On the other hand, if you're powering a Raspberry Pi Zero or ESP32 w/WIFI on (80-120mA), another 5-20mA won't make as big a difference to your power budget.

Comments

Popular posts from this blog

My adventures in writing an OTA bootloader for the ATmega128RFA1

Controlling lots of OLED displays with a few GPIO pins

Fast SSD1306 OLED drawing with I2C bit banging