Rotating POV Globe

11,288

17

11


The Rotating POV Globe utilizes the arduino uno as the central control brain which contains an Atmel AVR microcontroller. Essentially we have a rotating ring which contains up to 32 LEDs in this particular configuration. As the ring rotates, changes in the configuration of the LEDs will give the impression of a consistant and persistant globe or sphere covered in LEDs. The best way to describe the construction of a Rotating POV Globe is with a description of the hardware followed by a description of the software.

Step 1: Rotating POV Globe Hardware

It is a ring that is driven or rotated by a brushless multipole DC motor at the base and held in place at the top by a bearing. At both of these points, we transfer electrical power by varying the internals of the ring where all of the processing and LED control occurs. Once we enter the ring, we need to perfom some power smoothing because this is constantly rotating and may have interruptions to the supply current as a result of these moving contacts. We use a rectified diode capacitor to provide continuous power to the control electronics. We also have a 5 volt regulator to supply low voltage power to the LEDs along a common anode.

The arduino uno is interfaced with the LEDs using a data bus and a series of TTL latches. This is done because the I/O limitation of the arduino uno prevents us from directly wiring LEDs to its outputs. We have an 8 bit data bus which is common to all four D-type latch chips and each latch chip is directly addressed from another pin so there are four pins that do the addressing. It is done this way because it is highly scaleable. If you want to increase the number of LEDs that you are going to drive,you can easily extend the data bus, use a hardward d-multiplexer rather than in software (which is what we have done here for simplicity) and drive many more LEDs. It is very simple, very fast and very effective! The TTL latch chips will read the data bus and upon the clock transition on the address or the clock signal provided to the latch chip, the data is stored within 8 registers so the output is held continuously at value regardless of what the data bus does next. So you can very quickly write all the values of these LEDs using the limited I/O. Each of these chips directly drives an LED by syncing the current because its a TTL.

For timing we have an inductive proximaty switch or sensor. On each rotation, this inductive proximaty switch will pass a very closly bolted piece of iron and induces an electromagnetic field within the iron and detects the change as it moves past the iron. In air or in an non-iron environment the signal will behave differently to what it does in front of the iron. The electronics within this proximaty switch will give us a reasonably nice signal output each time this proxy switch passes the iron. Because the switch operates at 12 volts, and the arduino will only accept up to 5 volts on its input we use a resistive potential divider to drop the signal level coming out of the inductive proxy switch to one that is nice and friendly for the arduino. This is run into one of the analogue pins and we convert its function to trigger the interrupt service routine. This determines timing and synchronizes the image on each rotation.

Step 2: Rotating POV Globe Software

The image space is stored in a two dimensional boolean array to maximize the resolution. Because of the limitations of the arduino or the AVR in particular, we are only given 1 kilobyte of SRAM so we need to use the program space in a way that is most effective for displaying the greatest resolution possible. We use boolean because we are only dealing with On and Off states for these leds. These are not brightness controlled. Using boolean, we can utilize more than a thousand pixels despite only have 1 kilobyte of RAM. 1 represents On and 0 represents Off.

Under normal operating conditions when the globe is stationary nothing is happening but as soon as we pass this inductive proximaty switch and pass the iron, we trigger an interrupt service routine. This routine will consecutively scan through the columns of the array and write each column. It will write a column and then allow the column to stay in its existing state for a predetermined amount of time before switching it all off again. It will then wait for a predetermined amount of time before it looks at the next column and repeats the process. So, what we have in the software is a very fast consecutive reading of the columns and in between reads we blank. This gives the impression that although the LED is moving quite fast, we have a relatively short duration of On time relative to the Off time.

By adjusting this timing, we can change how much that LED is going to appear to smear because what we want to do is make the LED appear to be stationary. The longer we keep that LED On for, the more it will turn from a dot to a smear or line. So, if we want to display something with a regularly spaced pixel representation, we need to keep that LED looking like a dot. You should be able to find these timing values quite easily.

It will continue to scan through the entire array column by column, until it has reached the end. When it reaches the end you have a small period of time to manipulate the array. You can either write a new one or manipulate the existing one. If you want to write a new one, there are two ways you can do it:
  • from algorithms which may use nested loops to write a repetitious pattern
  • or, read a set pattern from flash memory as is the case with the world map image
If you want to load a new image into the system, you can use the freely available bitmap. It requires a monochrome bitmap. You do a bitmap to boolean array conversion and copy that array declaration and paste it into the source code where the variable is declared overwriting the array contents.

Step 3:

Share

    Recommendations

    • Frozen Treats Challenge

      Frozen Treats Challenge
    • Fandom Contest

      Fandom Contest
    • 1 Hour Challenge

      1 Hour Challenge

    11 Discussions

    0
    None
    KingHovey

    1 year ago

    Any update on making this DIYable (specs/designs?) for anyone who wants to make one of their own?

    hi, i'm making a rgb globe for my end project but i'm stuck on the code. this one seems to work fine, could you send it too me?

    matthias.vanoostveldt@hotmail.com

    Thanks for the help

    0
    None
    Sarahbaha

    6 years ago on Introduction



    Wow, this is perfect and awesome project !
    Actually , I very interested to do this project and can i have a circuit diagram for this project ? Cause I'm going crazy doing my final year project now . I would greatly appreciate if you would send me a circuit diagram . Thanks

    0
    None
    eyhseow

    6 years ago on Introduction

    Thanks you for your prompt reply. When can I expect the schematics diagram, program code, photos to be upload to the website. I would greatly appreciate you would send me the circuit diagram, bill of materials to me so that I can start purchasing the components first.

    0
    None
    eyhseow

    6 years ago on Introduction

    Do have the components parts,circuit diagram and Arduino porgram code. Please advise. Thanks.

    1 reply
    0
    None
    ScitechWAeyhseow

    Reply 6 years ago on Introduction

    We are redoing the design at the moment to make it easier to build and program.
    We hope to have it out very soon.

    0
    None
    wyllton

    7 years ago on Introduction

    Please, we are participating in a science fair for a poor community, and are having difficulty in pic programamção the 3D Led Globus.3GP could please send to email wyllton@gmail.com, grateful.

    1 reply
    0
    None
    ScitechWAwyllton

    Reply 7 years ago on Introduction

    You have the wrong project! that file is for someone elses POV globe.
    We used a Arduino not a PIC.

    0
    None
    rhaber

    7 years ago on Introduction

    Congratulations on a great project, I'm sure it wasn't easy. Can't wait to see the code/circuit so I can build one....

    0
    None
    wilgubeast

    7 years ago

    Hey, this is a great instructable and is very informative. Just one thing is missing... pictures! It really helps a lot when trying to follow directions so you should consider taking some photographs. Once you do that leave me a message so that we can publish your work.

    Thanks for the cool instructable and we hope to publish this soon!