A simple but well designed clock that displays the time in binary coded decimal
The current design uses an Atmel ATtiny4313 microcontroller in conjunction with a Maxim DS3231M RTC for accurate time keeping. The LEDs are driven with a STP16CPC26 constant current LED driver along with high-side MOSFETs for multiplexing.
The LEDs are driven by multiplexing the rows and columns. The columns are dirven individually via PMOS transistors. The rows are daisy chained and driven by the STP16CPC26. The columns are refreshed at an effective rate of 360 Hz to be equivallent to 60 Hz refresh rate.
In order to get more than basic red, green and blue combinations, the LEDs have four time slots to create more color combinations. So in reality, the LEDs are updated at (60 Hz) * (6 columns) * (4 bit color) = 1440 Hz.
Below shows the connectivity of the LEDs to the driver chips.
Below is a snapshot in time when the minute ones column is active.
Below is a gif of multiplexing in action.
The user interface communicates to the PCB via a UART through a USB to serial converter chip. The user interface can do a few things:
- set the time to the current computer system time
- set a custom time
- set one or all LEDs to a certain color
- clear one or all LEDs