5
\$\begingroup\$

I've got this nice RGB LED Matrix. My goal is to use several of them to create a 16x16 color display. Unfortunately, the display is common cathode.

From experiments driving a single LED with 8-bit PWM, I've noticed that there's a visible difference between colors at the lower (dim) end of the scale. In other words, increasing the brightness gradually from 1 to 16 will not be smooth but perceived as choppy. Increasing the PWM resolution to 16 bit resulted in perfectly smooth transitions.

I've found several LED drivers with 16-bit PWM, like the TLC5943. Unfortunately, the ones I've found are all current sinking, meaning they will only work with common anode types of LED matrices.

Are there any current sourcing LED drivers with 16-bit PWM? If not, is there any way to use a current sinking LED driver to drive a common cathode LED matrix?

\$\endgroup\$
  • \$\begingroup\$ "Is there any way to use a current-sinking LED driver to drive a common-cathode LED matrix?" No. \$\endgroup\$ – Telaclavo Jun 1 '12 at 22:20
  • \$\begingroup\$ @Telaclavo 16 current mirrors! \$\endgroup\$ – Kortuk Jun 1 '12 at 22:43
  • \$\begingroup\$ @Kortuk He would need 8x8x3=192 of them :) \$\endgroup\$ – Telaclavo Jun 1 '12 at 22:45
  • \$\begingroup\$ @Telaclavo Even more fun! \$\endgroup\$ – Kortuk Jun 1 '12 at 22:49
  • \$\begingroup\$ @Telaclavo The display is multiplexed, so I guess I'd need 8x3=24? \$\endgroup\$ – joh Jun 1 '12 at 23:46
2
\$\begingroup\$

As long as you've got some transistors to drive the LEDs, then you can source your 16-bit PWM from a PSoC3. A single PSoC microcontroller should be able to give you 8x3 16-bit PWM channels. You'll then have to multiplex them.

The PSoC should even be able to handle the multiplexing in hardware, using DMA to stream the image data from memory, and deliver it to the PWM channels. This leaves the CPU to do other important tasks like generating the display data

The PSoC5 has an ARM Cortex M3 core. The good thing about the PSoC chips, though, is that they have re-configurable digital peripherals. This means you can choose to have loads of PWM, or loads of SPI, UARTS, or any combinations. You can wire up all of these peripherals internally, with gates, timers, flip flops, etc.

Wiring up a PSoC

This means that you can probably make the hardware in the PSoC manage the screen without any intervention by the CPU, giving a good solid image.

\$\endgroup\$
  • \$\begingroup\$ Interesting! I like the idea of having only one MCU driving the whole display. Is there anything special about the PSoC3 making it well suitable for this kind of task? The reason I ask is because I'd prefer an AVR or ARM based microcontroller. \$\endgroup\$ – joh Jun 2 '12 at 15:13
  • \$\begingroup\$ I've looked at the STM32 family of ARM Cortex-M class MCUs and some of them have quite a few 16-bit PWM channels. I haven't yet wrapped my head around the different package options, but as far as I can understand, the STM32F100RC supports up to 37 PWM channels. Perhaps a bit overkill, as I only need 24... \$\endgroup\$ – joh Jun 2 '12 at 15:14
  • \$\begingroup\$ @joh - I've added my replied to your comment in my answer. \$\endgroup\$ – Rocketmagnet Jun 2 '12 at 21:34
  • \$\begingroup\$ I would advise you to read the PWM part of the datasheet carefully, as marketers like to stretch the truth in that department, e.g. PIC microprocessors with four PWM outputs that are just four outputs from the same PWM channel. \$\endgroup\$ – markrages Jun 2 '12 at 21:51
  • \$\begingroup\$ @markrages - Haha, then you don't know the PSoC! Check this out. \$\endgroup\$ – Rocketmagnet Jun 2 '12 at 22:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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