Bicycle Persistence of Vision Light Display using PIC16F84

Summary of Bicycle Persistence of Vision Light Display using PIC16F84


Summary (under 100 words): In 2007 the author prototyped a persistence-of-vision bicycle wheel display using a single LED string and a microcontroller. The hand-built first revision used an ATTiny26, 14 LEDs, a resistor array, and a magnetic reed switch. A PCB revision expanded to 48 LEDs (24 per side) driven by 74x373 ICs on an 8-bit bus, removed series resistors thanks to IC current limits, and upgraded the MCU to an ATTiny861 with 8 KB program memory for full-resolution bitmap storage.

Parts used in the Bicycle Persistence-of-Vision Display:

  • ATTiny26 microcontroller (used in hand-built prototype)
  • ATTiny861 microcontroller (used in printed PCB revision)
  • 14 LEDs (hand-built prototype)
  • 48 LEDs, 24 per side (printed PCB revision)
  • Resistor array (used in hand-built prototype)
  • Magnetic reed switch
  • 74x373 ICs (latch drivers for LEDs)
  • PCB (printed board for revision)
  • AA or AAA batteries (two cells as power source)

In February of 2007 I spent a little while prototyping a board that turns any bicycle wheel into a moving display billboard using a single string of LEDs. The idea was to do something that would be very visible, turn itself on and off automatically, have enough processing power to dynamically generate bike computer style displays, and have enough memory to store full resolution bitmaps.

bike_light

The first revision was a hand built board using a single ATTiny26 micro, 14 LEDs, a resistor array, and a magnetic reed switch.

Next I drew up a board using PCB and had it printed. The printed board differed in a couple of ways from the original hand-built prototype:

  • More LEDs: 48 LEDs total, 24 on each side of the board. This gives higher resolution patterns, and they can be seen from both sides of the bike. The LEDs are controlled from a series of 74×373 ICs connected to an 8 bit bus on the microcontroller. As opposed to shift registers, all 48 LEDs can be updated in 20-30 microcontroller cycles, leaving plenty of time to spare to figure out what should go there.
  • No Resistors: Turns out the I/V curve of the particular 74x family IC I had maxed out at around 20mA with two fully charged AA or AAA batteries with no series resistor. Yeah!
  • Bigger Micro: While the ATTiny26 is very versatile, the ATTiny861 is a strict superset including 8k of program memory. All the better to store full resolution bitmap patterns in.

And some pictures of the final product: (some have been flipped to account for my lack of a proper bicycle stand)

HERO-1 Robot — April 2004

Zia and I have spent a good amount of time retrofitting a HERO-1 to use a little more modern technology. We replaced the processor board with an Atmel ATMega8535, and some of the peripherals are controlled by ATTiny26’s so that they are all capable of operating simultaneously. I don’t have any code yet, but here are a few pictures of the retro-fitted robot.

 

For more detail: Bicycle Persistence of Vision Light Display using PIC16F84

Quick Solutions to Questions related to Bicycle Persistence-of-Vision Display:

  • What microcontroller was used in the original hand-built prototype?
    The original hand-built prototype used an ATTiny26 microcontroller.
  • What microcontroller was used in the printed PCB revision?
    The printed PCB revision used an ATTiny861 microcontroller with 8 KB of program memory.
  • How many LEDs were on the PCB revision?
    The PCB revision had 48 LEDs total, 24 on each side of the board.
  • What ICs were used to control the LEDs on the PCB revision?
    74x373 ICs were used to control the LEDs and were connected to an 8-bit bus on the microcontroller.
  • Were series resistors used in the PCB revision?
    No, series resistors were removed because the I/V curve of the 74x family IC limited current to around 20 mA with two AA or AAA batteries.
  • What switch was used to detect wheel rotation or position?
    A magnetic reed switch was used in the design.
  • What advantage did the ATTiny861 provide over the ATTiny26?
    The ATTiny861 is a strict superset and provides 8 KB of program memory to store full-resolution bitmap patterns.
  • How quickly could all 48 LEDs be updated?
    All 48 LEDs could be updated in 20–30 microcontroller cycles.
  • What power source was implied for this design?
    The design used two AA or AAA batteries as the power source.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter