So, here’s a completely custom design I had, a POV globe done in 9 hours. The motivation was easy, I am the president of the Michigan Technological University IEEE Student Lab, and we needed to have lots of blinky things to show off to prospective freshmen touring the university the next day. We had some old stuff, but I had heard that there was a group on campus that couldn’t manage (over a number of years) to build a working POV globe. I immediately stated that it should be a trivial task and that I could do it easily. This statement was, of course, met with a suggestion that I should build one… so I did. This is it:
I have to say that the big seam on the right was closed much better the first time I used it, and the paint jub on the base was done by a friend who wanted to help with the project.
The main parts of this are as follows: a computer power supply, a PC fan, a strip of metal bent into a ring, some foam board for the sides of the ring and the base, a 555 timer based PWM circuit, a Teensy 3.0, a battery, and some LEDs. First I’ll go over my design philosophy for the base. The base is literally made of a computer power supply and a PC fan screwed down to it as seen here:
The blades were broken off the fan so there would be no massive air currents or problems caused by having no air to suck up from the bottom. The metal ring was simply hot-glued on to the ring and balanced so that there was minimal wobble. The PWM circuit seen closer here:
As you can see, it’s a very simple circuit, I built it right on to a DIP-8 555 timer chip and have had no problem using it this way. The reason I chase to do a PWM circuit rather than just use a POT as a voltage divider to vary the speed of the fan is that the fan is designed to run at 12v and is most stable (has the most torque) at that voltage.
Now, let’s look at the Teensy circuit:
So there are two things I have to say about this: I know it’s overkill, and the schematic is slightly wrong. It should have the LED that’s going to pin P13 should go to P16. I couldn’t figure out why that pin kept outputting data/clocks/noise on that pin, so I just re-mapped the output pins in an array in the code. It was pointed out to me that if I had latches on the outputs that I could be assured the columns always turned on at the exact same time, but that’s for another later version which I’ll talk about later.
The battery is a cellboost single lithium ion cell + charger + step up converter to output 5v.
I thought it was the easiest solution considering I couldn’t use a slip ring connector to deliver power since the only axle was the PC fan and I wasn’t going to hack that apart any further than I had to for reliability’s sake.
At this point I feel I should address the lack of any timing mechanism. I didn’t add a timing mechanism for three reasons, one: I didn’t have a slip ring connector to pipe in the tachometer from the fan, and two: I didn’t have a hal-effect sensor handy (the easiest way to get timing), and three: I didn’t have time. The timing is done simply by setting the delay in the code to a sane value and fiddling with the POT until it processes very little.
Now that I have a spinning blinking thing, let’s pick something to display. The earth is the most obvious thing that comes to mind, so I did it. I got a picture of the globe as a Mercator Projection because of the way I placed the LEDs it meant simply dividing the picture into squares and representing the land/water data as binary. I did that using this picture:
Yes, I did it manually, but hold on, that’s not the worst thing. once it was represented in binary in code I just had to iterate through the columns and rows and write out the value in the array. That’s not so simple when you’ve got the syntax for boolean evaluating operators wrong in arduino. The absolute first revision of the code used one loop, the main loop, and a whole bunch of digital writes. I feel kinda dumb, but I was also up for about 36 hours at that point. The final code is here, and the github repo also has some other stuff in it related to this project, like a presentation I prepared to explain what I did.
There’s a glitch in Australia that was fixed in a later revision
I have an updated design that uses a parallel EEPROM and a bunch of discreet logic. I will have a post about it soon if I can find the paper I wrote it down on.