Getting into the Home Stretch

A project log for Persistence of Vision LED Matrix

Because every project needs a twist.

Matthew James BellafaireMatthew James Bellafaire 10/23/2018 at 02:000 Comments

two logs ago I wrote about a few challenges that were on the horizon to bring this project into a stage close to completion. Most of them centered around performance improvements and making the system more "predictable". Most of those goals have now been achieved. The micro-controller board has been sped up to what I now think is the absolute limit without rewriting the methods and the mechanical side now has more stability in both structure and speed.

But what was the purpose of these goals? before adding these improvements there wasn't a whole lot of precision in the display. A single image could only be drawn then rotated, making most of the resulting images look crude and bland since they were all just a compilation of circles. With the improvements to the control board images can be changed down to the microsecond. with the improvements to the motor control board the speed is now a fixed RPM allowing for predictable rotation and no need for rotation monitoring by the main control board (though it might be worth adding). It is now possible to control the 3D image in almost all dimensions. Each rotation gets about 10 image changes. This means that in addition to the 110 RGB LEDs that can be lit the matrix now has 10 different "radial" images that can be displayed (kind of like a 10-slice pizza). The video below illustrates this very well, the circle in the center is displayed on only one "radial" and thus appears as a nearly flat image.  

Warning about video, somewhat loud and lots of flashing lights just letting you know just in case that's a problem for you.

with all these improvements the project is in its final stage, however there are a few things that need improvement. In the demonstration above there are 10 images that are being switched out to constantly, these are in a fixed loop because each rotation takes about .06 seconds. The result of the speed of rotation and the current structure of the program is that to create just two still images that interchange with each other every second would take almost 330 arrays which is nearly double the current capability. One definite requirement going forward is to restructure the program to make the still images easier to handle. In addition the image currently drifts due to small variations in the speed of the driving motor. this is a pretty cool effect on a single image but i feel as though it would become a much bigger issue going forward if the patterns were more complex. There are two ways that I think this can be resolved, either by ensuring an absolutely constant speed from the motor or by adding some rotational feedback. 

Another change to make to this has to do with the matrix itself, images look somewhat crude with the LED's so spaced out. I'd like to make their light spread a bit more, this is probably going to require some kind of covering over each LED but I’m not sure how to accomplish this yet. 

The mechanical parts of this project could use a bit of work also, you can see in the video that I had to give the display a bit of a push start before it would spin. Although it's very close to starting up on its own (and it does sometimes) it has quite a bit of resistance to overcome in the beginning, this should be reduced. The physical stability of the matrix should also be dealt with, the matrix sways by about 2cm at the very top, leading to an image distortion that is visible in the video when the flat image is viewed completely from the side. 

So, then it's improvement list time: