Dax the Robot was originally conceptualized with a very unique set of eyes. It required a lot of development on my part to bring this concept into reality. The first set of Dax eyes used two Laser Projectors, casting an image onto a rear projection paint screen. Two Raspberry Pi Zeros generated the eye images that were sent over HDMI. This method made nice glowing blue rings but also had many drawbacks. The projectors took up a lot of space in the head, and cost over a thousand dollars. Worst of all it was not even visible in sunlight. After this became clear, I proposed a powerful LED array and was given the go ahead on this ambitious project. This is that result.
- 2mm LED pitch
- LEDs are cool white with a light blue filter
- 112 x 48 Resolution
- 12fps (or even more with DMA firmware)
- Output power over 20W
- Visible in direct sunlight
The LED Array itself is made up of 5376, Cool White, 20mA rated, 0402 LEDs. The LED's cost 1.4 Cents each, $75 in total. These LED's are "Cool white" because they contain the most spectrum of colors needed for being filtered down to light blue. Naturally light-blue LED's would be far too expensive to be used in this quantity. The LED's are driven at 45mA by the MBI5051 but after 8-scan they only consume 6mA on average. These LED's are specifically vetted against other LED models from china, and were chosen for their ability to survive 45mA continuously in case the array failed to keep scanning for some reason. Each LED array usualy has 4 to 10 dead LEDs once assembled, and needs to be hand repaired to replace them.
When fully lit, the array can use up to 5A at 5V, supplied by an onboard DC DC switching converter. Instead of using a Polyimide flex PCB, a 0.6mm 4-layer PCB is used, helping to reduce manufacturing costs. Luckily there has never been any malfunctioning LED Arrays due to bending the PCB into place.
The most important component of the array are the Forty-two MBI5051 IC's. The MBI5051 is essentially a fancy shift register with 16 constant current drain outputs to drive 16 LEDs. To multiply the amount controllable LEDs even further, 8 high side MOSFETs cycle though 8 Columns of LEDs, increasing the amount of LED's per driver to 128. Then, 42 of these 128 LED sections are arranged in a 14 by 3 array, bringing the total resolution to 112x48. The MBI5051 has 4K of SRAM that contains 16-bit brightness for each of the 16 outputs and 8 scan lines. The SRAM makes it a lot easier to control from a micro-controller, since image data only needs to be shifted into the chips once for each image. In older LED drivers, every scanline update would require a new serial input be uploaded into it.
A powerful MOSFET Gate driver is used, not for driving the 8 scanline MOSFETs, but to buffer the high speed data signals transmitted to the MBI5051's. This is required to drive the very large total input capacitance of 42 chips. Under worse case conditions, 5V at 30Mhz into a total 420pF load results in 150mA, which is far more current than an average logic buffer can source.
Chinese manufactured RGB led arrays are common and cheap online, but a curved, fine pitched LED array of sufficient brightness are not available off the shelf. I started by making pixelated printouts of Dax's oval eyes at different pixel pitches, 4mm, 3mm, 2mm to get an idea of an acceptable pitch. Clearly 2mm was required for convincing oval shapes, but I knew making and affordable array at this fine pitch was going to be an undertaking.
"Mikes Electric Stuff" had a great information in his longform video that helped me get started with choosing an LED topology: https://youtu.be/Sq8SxVDO5wE
I initially considered making the array bend in "two axis's" to create the distinctive quarter-sphere shape of Dax's screen. I used a Papercraft template generator program called Pepakura Designer to create a two dimensional cutout that could be created as a flat PCB and then folded into an approximation of a quarter-sphere. The program took a low-poly version of the DAX 3D model and produced the following shape seen on the right. Ignoring the very tiny diagonal slits, in theory I could have fit independent LED driver sections in each of the larger rectangular sections. I ended up just getting the go ahead to make a simpler version, and just made one array with a single large bend. A quarter-sphere of clear acrylic in front of the array gave it right look.
When designing It is a challenge to make an LED screen that can get bright enough to overpower direct sunlight and become visible. There were many design choices made to maximize brightness including the apparent brightness increase from pulsed LEDs rather than linearly driven ones.
There were interesting signal integrity issues in communicating with 42 array drivers. As mentioned above, the capacitance of 42 clock inputs is in total about 420pF and with the ~30Mhz clock signal requires about 150mA. Without realizing this, I tried to use a 74AC541 signal buffer which can only source 35mA. It quickly exploded. The solution was to use a more powerful signal buffer designed to drive large capacitance. A MOSFET Gate Driver was a perfect solution since MOSFETs often have large gate capacitance too. On the left is the MOSFET driver bodged into place for a test.
The first prototype was a smaller 48x32 pixel array that I assembled entirely by hand. It took 10 hours of work sorting and placing 1536 LEDs. Then my boss asked me to make another one in 3 days so there could be two eyes for an upcoming event. The key is to get comfortable and let your fore-arm do the robotic placement work, not the wrist. :) This eventually became the first PCB I have ever had assembled by a PCB assembly company. It was out of necessity since it was the only practical way to place so many LEDs. I use Diptrace as my primary CAD software. In order to exceed the 500 pin limit of license I had for Diptrace, I replaced the component footprints with individual layer shapes that Diptrace did not see as a "pin". Diptrace slowed to a crawl with the large amount of objects once the full array assembled on screen. It makes me wonder if using Diptrace for more than 1000 pins is even a good idea, despite them offering a 2000 and also unlimited pin license.
I tell ya, it was great to be able to tell my boss I had a way to make wonderful glowy blue eye-rings, and then be able to deliver a fully functional, cost effective version. The array became my most publicly viewed part of the robot, and people love the expressions DAX can make. I hope one day the firmware department can display things like text and pictures of food. We have even discussed the idea of having DAX play Pong against itself when it has to wait. :)