The persistence of vision (POV) optical illusion is pretty common in cheap toys nowadays, but how cool would it be to have your own programmable POV message board? German electronics grad student [Matej] has luckily created an open source fidget spinner with a fully customizable POV display that lets you share whatever thoughts you’d like fellow fidget spinning friends to know.
The displayed graphics don’t rely on rotation velocity, thanks to a solution that tracks the rotation angle. Unlike over POV devices, the POV fidget spinner displays the same graphics at higher and lower rotational speeds, which is useful considering the fidget spinner doesn’t automatically spin at the same rotational speed for every user. It also doesn’t require a constant speed for the image to be displayed correctly, unlike POV fans or clocks.
The project uses an enhance Microchip PIC 16F1619 micro controller for the core, which a built-in Angular Time peripheral using an omnipolar Hall sensor (DRV5033) and a magnet to track the current rotational angle. The Hall sensor generates a pulse every time a magnet passes it (every 360°), while the Angular Timer generates 180 pulses per revolution (every 2°). This creates column sizes of 2° for the printed characters. The Angular Timer automatically handles changes if the time between the two sensor pulses changes due to the rotation velocity.
The graphics are displayed with 32 LEDs (16 green, 16 red) with a nominal current of 1mA, driven by two 16-channel constant current shift register drivers (TLC59282) daisy chained together. [Matej] made use of the free software “The Dot Factory“ for generating the letters, although a few adjustments needed to be made to account for the order of the LEDs on the PCB layout (a few bits were shifted and the font needed to be 16bit high rather than 8bit high).
In order to remote access the device, a Bluetooth Low Energy module (RN4871) communicates to the micro controllers via UART interface, which can be accessed from a LabVIEW PC application or from a smartphone BLE application.
[Matej] uses a clever solution to allow the power to be accessed by just one capacitative touch button. A capacitative IC (PCF8883) embedded under the solder mask of the PCB controls the power to the device. The result from the capacitative IC is fed to the OR logic gate (BU4S71G2) along with a signal from the MCU and the output is connected to the Enable pin of a step-down converter (TPS62745). The button can also be used to change between modes of operation (turning on the Bluetooth radio or other components only) when energy conservation is needed.
Low energy is definitely a necessity when building a tiny POV toy like a fidget spinner. A step-down converter is used for converting the 6V nominal from the batteries to a 3.3V source. The TPS62745 component was chosen for efficiency with light loads, low quiescent current, operating with a tiny 4.7uH coil, an integrated input voltage switch used to measure the battery’s capacity with minimal current consumption, and an output voltage that is user-selectable by four inputs rather than feedback resistors, reducing BOM. The device sleeps after 5 minutes of inactivity, reducing current consumption to less than 7uA.
It is interesting to note the [Matej]’s first inspiration was a similar fidget spinner given away by Microchip at the Embedded World Fair in Nurnberg, Germany, where they were demoing the Angular Timer peripheral for their PIC16 series MCUs. It’s pretty easy to say that the resulting devices look nothing like one another apart from the MCU and BLE module.
While some commentors complain of video links,
this is a project/blog that could benefit from such.
Is there one?
are fidget spinners still a thing?
Maybe Matej will bring’em back.
I like how the writer delves into the source code and appreciates the little things that had to be done to make it work. Refreshing.