Hardware Design


A microcontroller is, essentially, a chip that has a program burned into its flash memory. When power is given to the device, it runs the program. A microcontroller can often perform many functions in parallel, such as reading sensors via an A/D, displaying on an LCD, processing data, interacting with other chips, etc. by using interrupts. They're a powerful electronics development tool because they are very inexpensive (on the order of a few bucks), have ROM, RAM, EEPROM, and a processor core already integrated, and can be programmed using popular languages such as C, BASIC and assembly. For this reason, I find them to be an excellent introduction to electronics for those who have some experience with computers and software.

The microcontroller used for the MiniPOV2 is an Atmel 20-pin RISC device called the ATtiny2313. This chip was chosen because it is the cheapest one that has an internal oscillator (no external crystal/clock necessary) and enough I/O pins to give every LED a pin.


LEDs are current driven. That is to say, one should design the circuit with a given amount of current going through every LED instead of deciding what the voltage across the LED is. Basically this means one needs to have a resistor in series with the LED, and the larger the resistor, the less current. Pretty much every LED function best with approximatly 5mA to 20mA of current running through them.

To calculate the resistor size, first one must determine what the (a) supply voltage is and (b) what the LED voltage drop is. For MiniPOV, (a) is 3V since each AA battery provides 1.5V. For (b), one looks up the 'forward voltage drop' in the datasheet. This value is dependant on what the LED is made out of, which also determines the color. Pretty much all red LEDs have a forward drop of 2V. Blue, white, UV and some green LEDs have a forward drop of 3.4V. Note that, in general, the supply voltage must be larger than the forward drop for the LED! Now subtract the two and divide by the current to get the resistor size in ohms: (3V - 2V / .02A = 50 ohms.) Since these resistors 'choke' off the amount of current going thru the LEDs, they are called 'choke resistors.'

There are a few easy to use LED calculators online.


The MiniPOV2 kit comes with a 2xAA battery case. The resistor values were chosen with the expectation that you'll use alkalines, but rechargables should be OK too. In fact, any high-capacity 2.5 to 5VDC supply can be used (but certainly not a 9V!). Of course, if the voltage goes up, the choke resistors for the LED have to be larger to keep the same brightness.

When programming, I suggest making sure you're using fresh batteries, preferrably alkalines. Sometimes the MiniPOV can act flakey if the batteries are low.

Serial Programmer

Previous versions of the MiniPOV used a parallel port plug to communicate with a PC for programming. The parallel port is well suited for this because it sends signals at 0-5V. The serial port, while more common, uses +-10V. This means you can't just wire it up directly to the microcontroller. Often times people use serial port converter chips such as the MAX232 or similar. Recently, people have figured out how to (ab)use the serial port into programming microcontrollers for cheap by "bitbanging" the modem control lines. To convert the voltages, 5.1V zener diodes are used to clamp the +-10V down to -0.5V to 5V. Since a lot of people have managed to use this method for a while, it seems like it's good enough for a kit. The particular wiring standard used is called "dasa" (direct serial) and can be used with uisp/avrdude/ponyprog.

The good news is that serial ports are more common than parallel ports and even when there is no serial port, you can always use cheap ($15) USB/serial adaptor cables. I've tested both Keyspan (TUSB chipset) and PL2303-chipset based adaptors. Note that if you're using the PL2302-chipset ones on a Mac you'll need to download/install an updated driver and not use the one that comes with the adaptor.


This guide was first published on Jul 17, 2013. It was last updated on Mar 11, 2013.

This page (Design) was last updated on Mar 11, 2013.

Text editor powered by tinymce.