In 2005 I spent a few months playing around with a persistence of vision (POV) circuit for a bike wheel. It was my first foray into electronics and micro-controllers so, while it worked, it was a hack.
The project was linked to by hack a day which was my 15 minutes of internet fame.
I based the project on two of Lady Ada’s POV projects, the MiniPOV and Spoke POV. The MiniPOV uses only a single PIC16F630 while the spoke uses an Amtel micro-controller, an EEPROM, and several 74x259 8-bit latches.
I wanted to enhance the MiniPOV to display text on both sides of the bike wheel. I chose to use Microchip’s PIC because they sold a cheap programmer and I had Lady Ada’s working source code. the biggest challenge with displaying text on both sides of the wheel each side needs to read from a different end of the string. if you’re displaying ABC the left side needs to start at C and the right side needs to start at A. that meant I needed 16 outputs, four more than the 16F630 has. To work around this I used an 8-bit addressable latch for each side.
MiniPOV uses a simple bitmap to determine what to output. I wanted to have separate bitmaps for each character and link them together in a string. I started by modifying the MiniPOV to use two jump tables. The first selected the character from the string, and the second returned individual rows in the character. Once that was working I started trying to figure out how to read it in reverse order. I wasn’t able to think of anything cleaver so I decided to just throw memory at it, and duplicated the code with the order reversed.
I went through a hell of a time finding the proper LEDs for this. Trying to find bright LEDs that had a wide viewing angle and didn’t cost a buck each was hard. I probably ordered ten different kinds from Digi-Key. the ones below are 1500 mcd with a 70° by 40° viewing angle and only cost about 30 cents each.
Description | Quantity | Supplier | Part number |
---|---|---|---|
PCB board | 1 | advanced circuits | custom order |
PIC16F630 8-bit PIC microcontroller | 1 | Digi-Key | PIC16F630-I/P-ND |
14-pin IC socket | 1 | Digi-Key | AE7214-ND |
74HC259 8-bit addressable latch | 2 | Digi-Key | 296-8291-5-ND |
high brightness LEDs | 16 | Digi-Key | 160-1620-ND |
3 volt lithium battery with soldering tabs | 1 | Digi-Key | P201-ND |
SPDT slide switch | 1 | Digi-Key | EG1901-ND |
The PIC assembly code is attached below. To assemble it you’ll need Microchip’s mplab IDE or the gnu PIC tools. Then you’ll need something to program the PIC with. I spent the $30 for Microchip’s PICkit 1 flash starter kit.
The board layout was done using CadSoft’s freeware version of EAGLE. you can download the board and schematic files below.
This is the first board I’d ever designed so I made plenty of mistakes:
In the next revision has plenty of room for improvement: