Ultra Low Power Displays from Ynvisible

Overview

So far I was aware of that Glass segment display are the display which consumes lowest power compare to any other type of display available in the market and also that they are one of the cheapest.

But, recently I came across a company called Ynvisible from Canada who are manufacturing ultra low power displays using printing technology and has a lot of other unique features.

These displays typically consumes only 0.21uW per cm2 of display area. They are also cost very less at high volume as the manufacturing cost is significantly low.

Ultra Low Power Displays from Ynvisible 1

Key Features

  • Ynvisible’s segment displays are Electrochromic, they reflect the ambient light.
  • Ink is screen printed on plastic substrate that’s why they are thin and flexible.
  • Bistability – Display retains the content for a long time, 80% contact till 15 minutes and 50% contrast till 2 hours although company claim they can design display with much shorter or longer bistability for any custom needs.
  • Thickness is typical 0.3mm, you can also bend the display
  • They operate from -20 to 60 degree c
  • Its takes about 250mSec max to activate and 200mSec max to deactivate the segment thats why are only meant for slow refresh applications.
  • Operating voltage is 2.2V to 3V DC (Max 3.3V)
  • At 3V it consumes only 0.21uW / cm2 which is really very low.
  • Typical activation cycles mentioned by the company is >100,000.
Ultra Low Power Displays from Ynvisible 2

How to operate

You don’t need a special driver IC, it can be directly interfaced with any MCU operating at 2.2V – 3V. Refer below images:

  • figure 1: MCU operating at 2.2-3V
  • figure 2: MCU operating at 3.3v
  • figure 3: MCU operating from 3V to 5V range
  • Ultra Low Power Displays from Ynvisible 3
  • Ultra Low Power Displays from Ynvisible 4
  • Ultra Low Power Displays from Ynvisible 5

Low Power Display Evaluation Kit

Company provides evaluation kit which contains various segment display and boards with the help of which you will be able to evaluate quickly and understand how you can use it for your application

Advantages and limitations

Advantages

  • Low Power
  • Thin
  • Flexible
  • Reliable
  • Water proof
  • Low cost

Limitations

  • Slow refresh rate
  • Matrix type graphic display is not available yet
  • Can’t be used the dark, need external source
  • Standard of the self displays are not available, you can get your display custom design (samples are available for the evaluation)

Applications

Due to its it unique ultra low power feature these can be used in various applications like mentioned below:

  • Smart Labels (Expiry date, temperature of bottle)
  • Asset monitoring for high value items (shock, vibration, temperature, humidity)
  • Thermometers
  • Price Labels
  • Battery-less monitoring solution with display using energy harvesting
  • Soil moister display
  • Customer feedback capturing consoles
  • Indoor air quality monitoring system, etc.
  • Ultra Low Power Displays from Ynvisible 9
  • Ultra Low Power Displays from Ynvisible 10
  • Ultra Low Power Displays from Ynvisible 11
  • Ultra Low Power Displays from Ynvisible 12
  • Ultra Low Power Displays from Ynvisible 13

How to buy these low power displays?

You can buy Segment display kit, designer color display kit or individual segment displays or boards(click, driver, adapter) from their web store directly.

What do you think, can these displays be used in some of your products, let me know in the comments below?

If you prefer the video format:

Watch the video

Seven Segment Display with STM32 MCU

In order to check what it takes to interface segment display with an MCU, I then connected the Single digit Segment display with STM32L031 Nucleo board using adapter board.

The connections are pretty straight forward, all segments and common need to be connected to GPIO Pins(output).

Ultra Low Power Displays from Ynvisible 14

I wrote the below given code to quickly test.

Example Code

Display Function

void display(uint8_t value)
{
	switch(value)
		{
		case 0: 
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);

			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);

			HAL_Delay(250);
			//HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_SET);

		break;

		case 1: 
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_Delay(250);

		break;

		case 2:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);

		break;

		case 3:

			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 4:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);

			HAL_Delay(250);
		break;

		case 5:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 6:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 7:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 8:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 9:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 10: // OFF
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_RESET);
			HAL_Delay(250);
			//HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);

		break;

		}

}

Main Code

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

	display(0);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(1);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(2);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(3);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(4);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(5);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(6);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(7);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(8);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(9);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);
  }
  /* USER CODE END 3 */
}

Quick Video showing Seven Segment Display demo (counting from 0 – 9)


I hope you found this post useful and you learned something new.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.