A colour-changing illuminated frisbee for kids in grades 5 and 6 to assemble with soldering irons. The device uses a microcontroller running software-based PWM firmware to independently control the brightness of Red, Green and Blue channels.
- Cost – A very limited budget was available per kit was available so a strategy of low parts count & donated parts was pursued.
- Complexity – As the kits are being assembled by young children and are also being attached to a frisbee which is expected to fly, as few parts as necessary were used to save on build time and weight.
- Fun – The final product had to be worth the effort for the kids.
- Parts Selection. More esoteric parts, such as the common-anode 5mm RGB LEDs, had to be selected and sourced, giving consideration to both performance and price.
- Circuit Board Layout. The board has to be easy to assemble and small while implementing all the required functionality.
- Programming. A flicker-free software PWM implementation was developed for the PIC12F675 microcontroller, along with logic to generate new colours to display.
- Restrictions of Software PWM – Implementing Software-based PWM while also running the microcontroller at a speed appropriate for the expected power supply turned out to be quite computationally expensive, leaving little processing time for colour selection. Initial versions exhibited excessive flicker, due to miscalculations in timer overflow predictions. Further, the PWM loop had to be tuned to execute before a second timer interrupt arrived.
- Designing with parallel LEDs – This was learned in the first VFO and applied in the VFO2. As different LEDs can have slightly different characteristics (such as forward voltage), it is not possible to put multiple LEDs in parallel with a single current limiting resistor for the group, without having a high failure rate. Adding these resistors increases build complexity, but also ensures that the device will continue to function properly – with the original VFO design, many kits failed before the end of the week.