I hope this is the right forum that i can post this for some help. I am looking to control 10,000s - 100,000s leds with a c++ front end. My background is C/C++/C# development and I have virtually no limitations with the actual software portion of this project (I am a professional developer by trade). The area where I am not good is the actual engineering portion of it although i do have a through grasp of electronics in general (just not IC's).
I would like to start off small but my end goal would be something like this.
Can someone please point me in the general direction so that I could begin this development?
I think best way to approach that is as several panels of displays.
Each panel could be say 16x32 RGB LEDs, with a microcontroller controlling the LEDs, and receiving input from a Central PC that is coordinating the display via serial data dump to each microcontroller.
Each microcontroller would control 16 anode drivers and 96 cathode drivers, multiplexing the outputs at 30 Hz for flicker free operation.
The cathodes could be chips like WS2803 so you could have PWM and multiple colors. Or simpler chip like TCIP6x595 if Red, Green, Blue, Red-Blue, Red-Green, Blue-Green, White, Off is all that is needed.
The anode could be a shift register controlling the gate of P-channel MOSFETs as current sources so that 3 LEDs could be turned on at a time for White light, or a mix oif Red-Green-Blue for varying color, or brightness control.
Drive the anodes, sink the cathode for a column, cycle thru all 32 triple-columns.
WS2803 can only sink 20-30mA current per pin, will need to buffer that output. They want to pull low, so run the output thru an inverter to drive the gate of N-Channel MOSFET to sink current from cathodes.
There are versions of TPIC6x595 that can sink a lot more current, so the simpler color version panel could be made larger and remain with single chip drive for the anodes. (6A595 has 350mA outputs, 6B is 150mA, have to check what 6C and 6D can do, all are available from avnet.com)
EverydayDiesel:
I hope this is the right forum that i can post this for some help. I am looking to control 10,000s - 100,000s leds with a c++ front end. My background is C/C++/C# development and I have virtually no limitations with the actual software portion of this project (I am a professional developer by trade). The area where I am not good is the actual engineering portion of it although i do have a through grasp of electronics in general (just not IC's).
You need to be aware that C++ programming for embedded systems is very different from C++ programming on a PC or similar (I do both). On an embedded system, RAM is a scarce resource, and there is no virtual memory to back it up. This means that dynamic memory allocation (i.e. new, malloc, calloc etc) should be avoided because of memory fragmentation issues. [Exception: you can use dynamic memory allocation during the initialization phase, to allocate objects that you will never free.] This in turn means that most of the STL collection classes (vector, string, set, map etc.) are not available. That makes a huge difference to how you write C++ code.
I hope this is the right forum that i can post this for some help. I am looking to control 10,000s - 100,000s leds with a c++ front end. My background is C/C++/C# development and I have virtually no limitations with the actual software portion of this project (I am a professional developer by trade). The area where I am not good is the actual engineering portion of it although i do have a through grasp of electronics in general (just not IC's).
Either way, all the electronics is done. All you do is connect power to them and program the colors. Building something like that out of MOSFETs and wires would be madness.
dc42:
You need to be aware that C++ programming for embedded systems is very different from C++ programming on a PC or similar (I do both). On an embedded system, RAM is a scarce resource, and there is no virtual memory to back it up. This means that dynamic memory allocation (i.e. new, malloc, calloc etc) should be avoided because of memory fragmentation issues. [Exception: you can use dynamic memory allocation during the initialization phase, to allocate objects that you will never free.] This in turn means that most of the STL collection classes (vector, string, set, map etc.) are not available. That makes a huge difference to how you write C++ code.
I have written everything from device drivers to main frames (well as/400) to directx rendering applications. For device drivers I actually use C as it seems to be a a better fit for hardware.
fungus:
For an installation that size they're probably using pre-built panels of LEDs with come sort of communication bus to each panel to update the colors.
Either way, all the electronics is done. All you do is connect power to them and program the colors. Building something like that out of MOSFETs and wires would be madness.
Thank you for your response! This is exactly the direction I am looking for. Once I buy a bunch of panels as everyone is suggested how do I sync them up and make them work together? Is this an ardurino that does this or do I need something different?
EverydayDiesel:
Thank you for your response! This is exactly the direction I am looking for.
You can find all sorts of things if you poke around on AliExpress.
EverydayDiesel:
Once I buy a bunch of panels as everyone is suggested how do I sync them up and make them work together? Is this an ardurino that does this or do I need something different?
Probably a combination of things. The light sequencing is probably done on a desktop PC. There may be Arduinos driving the individual panels. That's up to you (and the panels).