2-side POV
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.
Parts list
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 |
Software
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.
Hardware
The board layout was done using CadSoft’s freeware version of EAGLE. you can download the board and schematic files below.
Future improvments
This is the first board I’d ever designed so I made plenty of mistakes:
- I didn’t label the board with orientation information (I’ve corrected this in the version posted here).
- I forgot to put resistors inline with the LEDs. This hasn’t been as big a problem as I would have thought because they’re being pulsed and because cooling isn’t a problem.
- I didn’t put a switch on the board forcing me to put it inline on the power cable.
In the next revision has plenty of room for improvement:
- Putting a momentary contact switch on the board and having it put the PIC into sleep mode.
- Adding a hall effect sensor and magnet to determine the speed of the wheel a la the spoke project.
- Moving to a higher end PIC with more flash space or using an external flash ROM chip.