Go Down

Topic: .3DOT - 3D POV display project / your suggestion, advice and correction needed! (Read 8462 times) previous topic - next topic



Finally I have almost completed the layouting stage of my first real arduino project.
It should be a 3D-POV display when it is finished.
Quick overview and just a quick sketch to show my idea (not including drive parts):

The red area shows the displayable volume which is approx 70mmx70mm iD= 140mm oD=250mm
Here are some main goals I want to achieve first:

  • 8x8x360deg resolution

  • stable output (properly correct output timings on RPMs)

  • demo code which can show letters and basic geometry

Here are the main parts I gonna use:


Main board:

  • Atmel ATMEGA328PU (with arduino bootloader)

  • MAX7219CNC LED Driver

  • 7805 Voltage regulator

  • LM35 Temperature sensor

  • Bipolar-Hall-sensor switch (to calculate the RPMs)

  • Photocell to adjust brightness.

PWM board:

  • Atmel ATMEGA328PU (with arduino bootloader)

  • 7805 Voltage regulator

  • Bipolar-Hall-sensor switch (to calculate the RPMs)

  • button inputs

LED boards:

  • PLCC4 White SMD LEDs (30mA@3.1V each)


  • 8mm steel spinde in the middle

  • distance rings between the "led arms"

  • 16x 0.8mm iron rods for LED powering (8xrow and 8xcol)

  • ball bearings in Base

  • Timing belts and pulleys 3:1 ratio

  • brushless motor (10amp max. - 2amp idle - 1000kv)

  • 10amp ESC (controlled by the PWM board)

  • acryl half-shepheric dome and cnc carved wood housing/base

How it (should) work:
The main spindle is powered via an belt reduced brushless motor. It should run between 1800 and 3000rpm. The brushless motor is driven by a normal RC-ESC and the ESC gets an PWM-signal from an Arduino (PWM-Board) to control the motors speed.
The main board spinns together with the spindle and the "LED-arms".
That board is powered by two pairs of brushes which grab the power underneath from the "power-disc". The input voltage is 9V which will be cleaned out and stabilized with various capacitors and a 7805 (5V 1A Voltage regulator).
There is a Bipolar-Hall sensor placed on the side if the main board to tell the arduino when new round starts.
The arduino calculates the rpms and trims the timings in the code. The MAX7219 is normally a LED Matrix driver, which is a little abused in this project.
Each row and collum has its very own signal rod going from the main-board up to all "LED-arms". The different LED-arms take the proper signals from these rods (colums are all identical, but each arm has its own row signal rod.
each row has a set of 22.5degress from each other. So in total with 8 rows it sum up to onw full round.
There are some little features I also packed on the main-board: a temperature sensor, a photocell and extension pins.

I want to achieve to tell the main-board which demo-programm it should run, by varying the RPMs with the PWM-Board (also arduino driven). So the main boards knows which speed range is for which demo programm (eg.: from 1800-1850RPMs for demo cycle and 1850-2000 for text plotting). It is a closed loop system from the PWM-board which has its own hall sensor to read the actual RPMs of the main board to optimize its PWM signal for the ESC.

I hope it is not so unclear for you (my English is not the best - i speak German). Please tell me If I have forgotton something important.

Here are my shematics





Ok I hope you can tell me now my mistakes or any suggestions you have - dont be shy - i am open to any kind of criticism and happy to correct them before I produce the PCBs!

grz max!


Sounds ambitious - what do you intend to use for brushes?

Instead of homebrewing your own sliprings, you might look into a manufactured solution:

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.



Cool project! Great ideas...

The Main Board will rotate at up to 3000RPM, right?  Seems it will need to be both statically and dynamically balanced.  I don't know how to do that! 

What are your thoughts on that?
Regards, Terry King terry@yourduino.com  - Check great prices, devices and Arduino-related boards at http://YourDuino.com
HOW-TO: http://ArduinoInfo.Info


thank you both for your helpfull replys.

The brushings:
I would take some brushes out of some brushed dc motors. 
But you made me think a little further.
So far it was planned, that the brushes are placed underneath the main board to grab the power from the Power-disc as shown above.
But at up to 3000rpm the centrifugal forces may cause the brushes to get pushed to the outside - hence they lift up from the power disc and no contact could be made.
Your Idea with the sliprings is very good - I even didnt know the english word for that thing and I wasnt able to find anything proper for my needs.
But they seem to be very expensive - even from chinease retailers on ebay - they cost about 50$ (low grade plastic only). I dont want to know how much the indutrial standards cost.
If someoune of you finds a good and cheap /value source of these sliprings --- please TELL ME!
At the moment to best solution to avoid the centrifugal problem with the brushes, is to switch the positions. So now the brushes are fixed on the base and the power disc rotates together with the main board.
By the way: there are two pair of brushes to establish only connection to +9V and GND. There are 1mF capacitors in total to fill out some power out from the brushes. It is dimensioned that the capacitors can porvide enough energy (anything above 6.5V) to still satisfy the 7805 5V voltage regulator.

I also worry about the stability of the contruction. As it is now - all arms have an opposite next over. -So the circuit boards should be balanced.
In case of any unbalnce (esspecially on the mainboard) I jst would add some tine weights onto the proper side of the boards.
I also had bad dreams about that whole thing just lifts up and flys away. - There is a hiher air resistance on all upper sides of the boards, which theoretical could lead to lower preassure than the bottom side. The right brothers will do the rest of the math.
Anyway - I dont hope that this would happen - but when it does I would simply add equal air resistance on the under sides of the boards.
I will post my mechanical construction here when its finished.

IF YOU HAVE ANY GOOD IDEAS or you POINTED OUT some MISTAKES please TELL ME! I would be glad to correct before production.
grz max!


22.5degress from each other. So in total with 8 rows it sum up to onw full round.

Should it be 45 degrees?
If I understand it right, 1800 rpm comes from 1800/60 = 30 Hz refresh rate, but with 8 arms, probably you could down play it 8 times, 1800/8 = 225 RPM., just synchronizing arm in right moment, 


Could metal ball bearings be used instead of slip rings ?
The inner part is stationary the outer part rotates the connections stay fixed ...

Just my 2ct


well thx for correction, of course it is 45 deg between each arm...
I like the Idea with the ball bearings! I also thought about that some time ago, but I dropped it, because I need at least 2 different contacts.
But I could make the main bearings to GND and one another isolateted from the shaft to +9V. I just wonder how well ball bearings conduct. They are made out of stainless steel and other matels to avoid and reduce axidation and or wear out. I gonna think about that idea again - thx!
Each arm is in an different layer of height to create the "3. dimension" hence each arm needs  at least 30hz. You might have thought that all arms are rotating on the same height. Or is there any logic mistake on my side??

Please look at my arduino wiring, if it is porper. (main board and PWM-Board)
I was not sure, If I should connect the AREF pin to 5V.

edit.: the lubrication in the ball bearings might also block the connection - I would like to test that some kind.


I recommend that you put a counterweight on each arm so that the center of mass of each arm is along the axis of rotation. Otherwise this rotating assembly will develop a torque due to the offset forces of each arm trying to pull away from the spindle. Combine that with a flexible assembly and gyroscopic effects if it starts flexing, and it could get ugly.

Your idea of using conventional motor brushes lightly sprung against a home made slip ring sounds entirely practical to me.


Each arm is in an different layer of height to create the "3. dimension" hence each arm needs  at least 30hz. You might have thought that all arms are rotating on the same height. Or is there any logic mistake on my side??

Indeed, I should look at the device from aside, not just from above. I wander, if someone did it before, it's hard to "visualize" all details in mind. Or is it completely new idea?


Yes ok now i know what you meant - it should be porper visible from any angle except from underneath the boards.
Well LED displays which use that POV effect are almost as old as the led itself. There are many projects from others but these are "just 2D".
But I have reinvented the wheel. From funny looking till impossible my design has already made some changes.
First it was just an single board with an LED Matrix on it rotating in vertical position to achieve the same effect - but a little research with an same sized piece of wood, lead to high air resistance problem, and by the way I needed a matrix placed on the front and backside of the board.
After some searching in google i finally found someone who made almost the same I am currently doing.

Here is a link to the vid: http://www.youtube.com/watch?v=rlptJzWwCXg
He solved the powering with a simple headphone jack. It seems to work quite well and he is even also using an arduino but together with normal shift registers.
I am just wondering how he achieves at least 1800rpm. - it is really air propeller helix shaped and should move lots of air - but he drives the whole thing with a simple no more than 25W dc  brush motor.

I have thumb sucked the centrifual forces in one arm with shouldd be at 2500rpm no more 100N - pratical they should be about 30-50N (equal to 3-5kg)
My current construction has a 8mm steel spindle in the middle, which should resist that tourqe created by the pairs of arms as PeterH stated.
The opposite arm is just 35mm or so higher and the momentums could be disregarded so far - and if I am totally wrong - I could add some wheits later.


Looks nice. 1800 rpm is about 8x CD-ROM, I  think a few watts motor would be enough for your setup. http://en.wikipedia.org/wiki/CD-ROM Probably, you even could salvaged motor from old computer's cd driver. For better balance, you could re-arrange arms in pairs,where two neighbors pointed 180 to each other.


a cd drive is a good idea, but I think it would be not powerfull enough - maybe suitable for a 2D POV Display but this has a much higher air resistance.
I have now finally disgned the whole mechanical construction. I will post some renderings tomorrow.


finally - I was ready to .... fail

I have recently finished the main components and assmbled them together.
The result should look good - but it doesnt  =(
I have made a fatal logic mistake... I knew that the MAX7219 multiplexes at 800hz - I thought some time over it and disregarded that aspect, because in my mind I was sure that when it is spinning with 30Hz that 800Hz are far enough.
Well - but I did not think about that 800Hz divided by 30Hz (for revolutions) that there are only around 27 updates visible
And I even cant control the multiplexing to adjust it to the RPMs.

I made a video summarizing my work and my problem (at the end). Please take a look:


I think that there is no other option than rebuilding the electronics from ground up (took my almost 100h of designing and manufactoring).
IF ANYONE here knows a good solution, I would be glad...

But I dont think that there is any chip which could replace the MAX7219 (in kind of matter)
I am very limeted to a LED Matrix style control (I have common Anode for all culoms and single cathode for my rows - eg "arms") - so total 16 pins.


does anyone know a chip, which works similiar to the max7219 - but just without the multiplexing?
With my current boards, i am limited to that 16 Pin (8 col 8 row) interface - just like a matrix.
... otherwise I will need to create new circuits (with shift regs on each arm).
The scrolling of the Max7219 through the rows doesnt matter - its the multiplexing, that makes me trouble.


Sounds like you need to replace the MAX7219 with 8 resistors, a ULN2803, and write your own code.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Go Up