0
\$\begingroup\$

I want to use an AVR microcontroller to ultimately control an array of RGB 8-segment displays. The only relatively cost effective RGB 8-segment I could find was here,

2x RGB 8-segment display - Photo - Isometric

but it isn't common anode/cathode; instead, it's slightly more involved in order to reduce pin count from 25 to 14:

2x RGB 8-segment display - Schematic

There's no reference to an associated driver, so:

  • Is this a standard topology, which would have associated driver ICs?

It appears that a PWM must be used to split the cycle in two (a half cycle for each of the two digits on the dual 8-segment display), in which the cycle may be depleted further to dim the associated color (RGB), so:

  • If not, is there a means to array a datastream (serial or other) to PWM signal?
\$\endgroup\$
11
  • 1
    \$\begingroup\$ I think you are looking for multiplexing, not PWM. Each of the horizonal lines (4,7,8,10,11,14) is connected to a low side driver (since there are multiple LEDs, just using a GPIO won't provide enough current). Each of the vertical lines (1,2,35,6,9,12,13) is connected to a GPIO or high side driver (depending on the current requirement) and a current limiting resistor. The horizontal lines are then enabled one at a time while the current pattern on the vertical lines is output in parallel. There are driver ICs specifically designed to do this, look for "multiplexed led driver". \$\endgroup\$ Commented Apr 5, 2023 at 4:30
  • 1
    \$\begingroup\$ Why are you asking for PWM, do you need shades of colours? \$\endgroup\$ Commented Apr 5, 2023 at 5:51
  • 1
    \$\begingroup\$ Good luck in finding a driver chip doing multiplexing and segment-individual PWM control. I would go for a microcontroller solution, but my experience is quite limited. -- BTW; did you notice the really limited peak forward current? This display might not be suited for PWM. \$\endgroup\$ Commented Apr 5, 2023 at 12:43
  • 2
    \$\begingroup\$ At the end of the day this is a matrix of 6 "digits" (3 per actual digit) by 8 segments. You could handle it as 12 "digits" by 8 segments, using 2 time slices per "digit". \$\endgroup\$ Commented Apr 5, 2023 at 13:31
  • 1
    \$\begingroup\$ Take a look at the ICM7218 (assuming you want something in a DIP package, lots of other choices in surface mount). This chip can drive 8 digits, each color is connected as a separate digit, so you only need support for 6 digits. The chip handles all the multiplexing/etc and there is an Arduino library (reference.arduino.cc/reference/en/libraries/icm7218) that will work with the AVR (or can be used as reference to write your own). \$\endgroup\$ Commented Apr 5, 2023 at 17:12

1 Answer 1

1
\$\begingroup\$

Electrically, these are 6 digits by 8 segments.

If you use any well-known method of multiplexing, you can have the usual 8 different colors per segment.

To get intermediate brightness levels, we can imagine 12 logical digits. Multiplexing this way, each physical digit is covered by 2 time slots. If you use a hardware driver, simply connect pairs of digit outputs of the driver.

If the 2 time slots are equally long, you will get 27 different colors. Each LED of a segment can be off, half on, and fully on, resulting in 3 different levels. Taking the power of 3 levels by 3 LEDs results in 27 colors.

If you make one time slot longer than the other, you will get 64 different colors. This case results in 4 different levels per LED, off, 1/3 on, 2/3 on, fully on. 4 to the power of 3 gives 64.

There are caveats:

First, the data sheet reveals only a low maximum peak current. It is just 3 times the maximum continuous current. Please check that you don't source too much, or prepare for early failures.

Second, the perceived brightness of an LED is in general not proportional to the average current. You will need to experiment with the duration of the time slots for the 64-color solution.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.