28 May 2009

The Micro POV

Electronics design in my opinion is the art of finding the best compromise. And this can be quite a complex art. There are many different and sometimes contradicting requirements to a project: Cost, time, space, weight, power, technology, market, availability of materials and tools, knowledge. This is why the all singing all dancing solution isn't always a good solution. Sometimes less is more. And I don't know why that is, but I have a special affection for minimalistic solutions.

I know, there are POV projects on the net in abundance. And most of them are some kind of propeller clock. There are a few really nice examples and I wanted to have one. I even started to build such a work of art and it was going to be really great with lots of colour and such. But very soon I gave up, because I just don't have the skills or equipment to build more complicated mechanical objects.

I realised that I had to reduce my expectations - a lot. And looking at various projects that I found on the net, I decided that maybe I should go for something really ... compact. And so the idea for a micro POV was born.

The name is of course a reference to the open source project MiniPOV by ladyada. But I wanted to go one step smaller - something to wear e.g. on the wrist. Of course that generates a few problems, which is just what made the whole thing the more interesting. Every component for this project needs special attention.

Lets look at them one after the other:

Power Source

There is only one possibility: The ubiquitous CR2032 button cell. This cell is used on motherboards to retain CMOS RAM data and real time, it powers LED key chain lights and makes pocket calculators - ahm calculate. If you are lucky, you can buy them for under 50 cents. They are rated at 3V /210 mAh and their weight is a very acceptable 3 g / 0.1 oz.

Unfortunately these cells are not made to deliver high currents. The rating of 210 mAh is valid only for a temperature of 21°C and a resistive load of 15 kOhms. The Voltage drops from 3 Volts initially to 2 Volts at full discharge.

A resistive load of 15 kOhms means a current of 200 to 133 µA. That isn't enough to run an 8 LED POV circuit. The battery can however deliver higher currents at the cost of reduced capacity. If I wanted to get about 10 hours of usage from such a cell, looking at the data sheet I expected to be able to draw a current of somewhere between 5 and 10 milliamps.

Since current consumption was an issue, my plan was to use an LED that was power efficient. So I searched and found an interesting SMD LED. It is from Kingbright and is called KPTD-3216SEC. It emits orange coloured light and uses a lens to focus that light. The viewing angle is 50°, not too bad. Their luminous intensity is given with 1200 mcd at 20mA. Not too bad either. Their 3.2 x 1.6 mm footprint frightened me a bit, but I did want to make a micro POV after all.

I wanted to use a controller with just enough I/O lines to drive eight LEDs. Atmel AVRs are my favourite, so I ended up with the tiny24V, which works down to 1.8 Volts. It is available in a 14 pin DIL or SMD package. I considered using the SMD version, but then decided otherwise. Since I didn't want to make a PCB, but use my good old prototyping board, soldering would have been very difficult. Besides, when mounting the LEDs in a straight line, a raster of 2.54 mm was the best I could hope for. And that means that a smaller controller wouldn't get me much in terms of the overall PCB size.

ISP Interface
I didn't want to dedicate board space to the ISP interface, because that would be unused most of the time. So instead I built myself a clamp that makes contact to the controller when needed. Initially I was a bit sceptical as far as reliability of this contraption is concerned. But it turned out to work quite well.

It is built from two single-row headers to contact the controller. Unused pins are cut off. On the top is a standard 6-pin double-row ISP header. The ISP-relevant pins are connected by a bunch of wires.

Well, this is a no-brainer. The LEDs are connected to port B of the controller via 100Ohm resistors. And there is a 10kOhm resistor connected between Vdd and the reset pin. I left out the recommended 100nF decoupling capacitor, but that seemed to be no problem. Most likely the pull-up resistor on the reset pin could be omitted as well.

As the schematic is really simple, the layout is as well. Still, here are two photos of my attempts to solder SMD parts...

Top view, showing controller, LEDs with resistors and common LED supply:

Bottom view, showing reset pull-up resistor, Vdd and GND wires and LED1 / LED2 routing:

Again, not really complicated. Apart from one issue. As mentioned before, the LEDs can be driven with 20 mA. Multiply this by 8 LEDs and you won't get anywhere with that poor, weak button cell.

But where there is a will, there is a way. I wanted to make this display look like a standard matrix display anyway. This means that the LEDs have to be switched on only part of the time. Otherwise you get a striped display(like here). It goes like this: At the position of the first column of the virtual matrix display, the LEDs are switched on for a short time. Then the display is moved on and when it arrives at the position of the second column, the LEDs are switched on again. Inbetween, all LEDs are switched off.

It is obvious, that this has a very nice side effect. The average current goes down, because the LEDs only light up, say e.g. 1/8th of the time. You could now use a large capacitor in order to smooth the current consumption out. But this isn't minimalistic, and it isn't elegant.

My solution is somewhat different. I only ever light up one LED after the other. So I scan the matrix display, very much like a CRT display. From one column position to the next I activate all 8 LEDs sequentially (if needed). This means the peak current that is drawn from the battery is much smaller.

Of course when you do something like this, the once vertical display column isn't quite vertical anymore. Instead, it is a bit warped. Actually, the warping isn't really noticeable. And here is a photo showing the result:

This shot uses a night mode were the shutter is open for 8 seconds. The experimenter (me) spins around to create a POV effect. The number 23 is shown because I made a thermometer using the tiny24's internal temperature sensor. Other software exists to display texts or patterns.

One downside of this design is that there is no synchronisation between movement of the display and the display output. So if e.g. you wave it left-right-left all output is mirror-inverted half the time. Also, there is no stable, repeating image as you would get from a constantly rotating POV.

On the plus side, you can carry it around and show it to everybody. And there is room for further experimenting. There are still some input pins available. So it would be possible to connect some kind of sensor and mount the whole circuit on a rotating object, like a bicycle wheel.


  1. Uh, that's very nice! :) Congratulations on your projects.

    Can I ask, if possible, a simple question? Where did you buy those micro-resistors?


  2. Thanks for your comment, Francesco. The resistors are standard SMD type (called 1206) and I bought them through a mail order company.

    But please take a look at my post "NanoPOV", were I omitted those resistors. This is possible because the controller can not provide enough current to destroy the LEDs.

  3. Thank you very much for your reply and more info Tom!