Close
0%
0%

Volumetric POV Display

A 3D rotational persistence of vision display

Public Chat
Similar projects worth following
A previous project of mine was a 6x6x6 led cube, and while I was pretty happy with the way it came out, I thought a display with more resolution would be cooler. However, the exponential increase in effort required to construct a larger in constructing a larger LED cube put me off on the idea.

Making a rotational display like this seemed like a good way of getting the extra resolution I wanted, without having to spend lots of effort soldering hundreds of leds. So it felt like a good project to take on.

If I can iron out all the bugs with the design, I'd really like to streamline the overall design to make it easier to produce. As a longer term goal for the project, I really like the idea of making a kitable version of this.

- The effective display area is 60x8x6 "pixels"

- The display uses apa102-2020 addressable LEDs. There are 8 LEDs on each of the 6 blades used to make the display area.
- I'm using an atsamd21g18 microcontroller to drive the LEDs and run all the animations. I had originally started with an atmega328p while I was prototyping, but it wasn't fast enough to keep up as I scaled up to the final design. The microcontroller and control board both rotate along with the LED boards.
- A hall effect sensor on the control board is used with a magnet mounted to the enclosure to measure the rotational speed of the display, and used as a point of reference to stabilize the image being displayed.
- Inductive coils are used to transfer power from the stationary base to the rotating LEDs and control board. I used these ones from adafruit: https://www.adafruit.com/product/1407 
- I'm using an arduino nano, with a simple motor driver to control the brushed motor that spins the display. I'm currently just using a potentiometer to set the speed of the motor

The code is still very much a work in progress, but it can be found here:
https://github.com/Jamal-Ra-Davis/pov_display

20211006_014751.jpg

JPEG Image - 5.31 MB - 10/06/2021 at 08:51

Preview

20211006_014731.jpg

JPEG Image - 5.19 MB - 10/06/2021 at 08:50

Preview

20211006_014617.jpg

JPEG Image - 5.32 MB - 10/06/2021 at 08:50

Preview

LearnOpenGL 2021-10-05 20-21-13.mp4

Simulator for display written in OpenGL

MPEG-4 Video - 7.07 MB - 10/06/2021 at 03:23

Download

received_2227066324007821.mp4

MPEG-4 Video - 3.41 MB - 07/03/2019 at 20:50

Download

View all 18 files

  • 48 × APA102-2020 Dotstart Addressable LEDs. 6 strips of 8 leds are used to make up the display area.
  • 1 × atsamd21g18 32-bit Microcontroller used to drive/control leds, in addition to any logic the display needs.
  • 1 × Inductive charging coil pair Used to transfer power to the rotating components
  • 1 × Hall Effect Sensor (DRV5033) Used to sync display and keep image stable
  • 1 × Brushed DC motor Used to actually spin the display. Targeting refresh rate of 30Hz, so motor needs to run up to at least 1800 RPM, and have enough torque to spin all the components.

View all 8 components

  • Simulator for display

    Jamal-Ra-Davis10/06/2021 at 03:20 0 comments

    First off, apologies for the lack of updates, I've been making slow but steady progress on the display when I can find the time. 

    The major updates so far have been developing out a Bluetooth messaging scheme for control of the display, inputs, and retrieving data from it (stuff like measured RPM, and the RTC time). I've also developed a python shell app that can be used to connect to the display and sends these Bluetooth commands.

    I now want to focus on programming in games and animations, but I've found the the slow compile/upload times have made it difficult to stay motivated, as they make debugging a very painful process. In light of the problem, I've recent been learning OpenGL, and have been able to make a basic simulator for the display that I can test my code against before flashing it to the actual display. Hopefully this will make development go much smoother from now on.

    Video of physical display and simulator running same code:

  • LED Current Measurments

    Jamal-Ra-Davis07/02/2019 at 20:17 0 comments

    Just did some testing on the amount of current drawn from the LEDs. In my project I'm running the APA102's at 3.3V which is technically out of spec according to their datasheet, but they seem to still work fine.

    I did my testing with a set of 8 LEDs (1 blade), and I saw that:

    • Each LED draws about 20mA at full brightness (white)
    • At half brightness (white) each LED draws about 10mA, so the current draw seems to be linearly related to the brightness value
    • With all the LEDs turned off there's still about a 7mA current draw, which means each LED consumes about a 1mA statically

  • Updated Control Board

    Jamal-Ra-Davis07/02/2019 at 20:01 3 comments

    The main control board was updated with the following hardware:

    • HM-11 Bluetooth Module: Will allow for control and interfacing with display while it's spinning
    • IR Led Driver Circuitry: The hall effect trigger signal is now also fed into an inverting buffer which drives an IR LED. This LED is oriented such that it shines on a receiver circuit (consisting of an array of phototransistors) on the stationary base. This setup creates an optocouple and allows me to transmit the hall effect trigger signal from the rotating control board to the stationary motor control circuitry. As the motor I'm using doesn't have an encoder, this signal will allow me to adaptively control the motor speed.
    • Additional Bluetooth Status LEDS: An LED for the bluetooth connection status, and one connected to the bluetooth TX line make it easier to see what's going on with the bluetooth module, and also add a little bit of flair to the board.

    The boards were fabricated using OSH park, and I had a stencil made through OSH Stencils. This was my first time using a stencil but aside from some minor solder bridges between the microcontroller pins, everything came out fine, and I found the experience to be much easier than placing the solder paste on each pad by hand. 

    I feel it's worth noting that I incorporate the receiving circuitry for the inductive coils onto the control board itself, instead of just mounting the coil's PCB. This involves desoldering the components from the coil's PCB and resoldering them onto my board. Which is definitely a less than ideal situation.  I would love to instead develop my own inductive power transmission circuit as to not have to rely on these modules, but my previous attempts didn't pan out. If anyone has any comments or advice on this matter, I'd very much appreciate it.

  • Getting back to work

    Jamal-Ra-Davis06/07/2019 at 19:48 0 comments

    Getting back to work on this project after a very long break. Major issues left that I want to address are:

    1. Adding control method to interact with display while it's running
      1. Description: Currently the only way of interacting with the display is to flash the firmware, there is no way of interacting with it while it is running. Addressing this issue allows for interactivity with the display, and opens the possibility for simple applications or games to run on the display.
      2. Planned Fixes: Update control board to integrate HM-11 bluetooth module, and develop simple android application which can send data to display
    2. Address screen jitter issue
      1. Description: In it's current state, the image that the display creates does not always remain stable, it will commonly will jump back and forth harshly by a few degrees. I believe the underlying cause of this issue has to do with the timing of the timer interrupt that's responsible for pushing out the LED data, and the hall effect trigger interrupt which syncs the display. 
      2. Planned Fixes:
        1. Implement closed loop speed control for the motor. Current the motor speed is just controlled manually via a potentiometer. I plan on adding additional hardware to the control board which will allow me to send the hall effect trigger to motor control microcontroller and be used for speed control.
        2. Improve the efficiency of pushing out the LED data to decrease the time the processor spends in the timer interrupts. I've observed that the SPI transfers my code is doing isn't as fast as the hardware allows, ideally I would like to push the LED data out via DMA SPI transfers instead.

View all 4 project logs

Enjoy this project?

Share

Discussions

Stefan Krüger wrote 05/07/2019 at 18:58 point

great project!

i have a simple 1-Layer POV concept project slowly going...
currently only documented on github:
https://s-light.github.io/ortogere/docs/ideas/
but currently its on-hold (have other things on priority...)
what RPM do you run this at?
and what is your display update speed / framerate?

  Are you sure? yes | no

Jamal-Ra-Davis wrote 07/02/2019 at 18:37 point

Hi Stefan, thank you.

I'm shooting for a display refresh rate of 30Hz which corresponds to 1800 RPM 

  Are you sure? yes | no

Jarrett wrote 06/28/2018 at 20:18 point

Yeah, super cool. I like your power transmission strategy. Do you have closer pictures of the PCBs where they mount, and connect to the coils?

  Are you sure? yes | no

Jamal-Ra-Davis wrote 06/28/2018 at 15:39 point

Thanks, I appreciate it.

Yeah, trying to keep it balanced as it's rotating was a pretty big issue for me, especially during the prototyping stages. (At one point, I had an entire atsamd21 dev board mounted to one side of the control board, and I was almost worried that it was going to shake itself apart). 

To keep it balanced, I've tried my best to keep everything as symmetrical as possible with the layout of the boards and component placement. 

I've tried to cut down on unnecessary weight where I can, especially if was located off center. I previously had the power receiver board for the inductive coils mounted to the control board, but in the final version I actually moved all the receiver boards components directly to the control board. This cut out the weight of the receiver board and the mounting hardware I used.

I also added a bearing at the top of the enclosure that couples to the rotating shaft. It's helped a lot to brace it and keep it rotating straight.

It's still not perfect though. If it's on a hard surface it'll move around due to the vibrations. Right now i just put it on a towel while it's running.

  Are you sure? yes | no

Mike Szczys wrote 06/27/2018 at 14:38 point

This is such a cool build, thanks for posting up some details! I large POV build has been on my future projects list forever (all I've managed to do is a hacky version called #CPOV - a Crappy Persistence of Vision display ).

Is balance and vibration an issue? How did you approach that?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates