Introduction: DIY TiX Clock

Picture of DIY TiX Clock

Here's my instructable for a DIY TiX clock.  It is powered by an AVR microcontroller.  The display is made up using a piece of reflector grid you find covering office lights, some smoked perspex, a diffuser and a bunch of LED's.  The Idea came from the Tix clocks you can buy at various places on the web, but nothing beats making it yourself.  It is a talking point in the lounge and once you are used to reading it, you can tell the time in a jiffy.

Step 1: The Electronics

Picture of The Electronics

The first prototype was made using Vero strip board.  The layout on strip board is fairly straight forward.  The Transistors in the top left are row drivers and the IC's on the right are  transistor arrays that are the column drivers (see circuit diagram at the end of instructable for more info).  This allows me to get a bit more current to the LEDs to make them brighter.  The Transistor array IC's can be replaced with transistors if you like.  You will find circuit diagrams and software at the end of this instructable with which I have included an Eagle PCB layout design as well for a single sided board that combines the controller and display board into one.

Note that if you etch your own PCB the LED's are mounted as normal thru hole components but the IC's, links and other components are placed on the copper side of the board.  The LED's and links will need to be mounted first as the AVR covers some of the LED solder points.  Details in the pictures.

Step 2: The Display

Picture of The Display

The display is made up of a sandwich of the display Board, The square reflector, a diffuser and a smoked perspex window.  You can place a sheet of tinfoil under the LED's to give more reflection, just make sure you cut a hole in tinfoil around a legs of each LED so it doesn't short things out.  I also sanded the lens of each led to distribute the light more.

The first three photos show the strip board version, the remainder the etched PCB version.

Step 3: The Case

Picture of The Case

For the case, you can use pretty much anything.  I used Rimu, a native timber to New Zealand.  I used a mill to cut out tracks and recesses for the "Sandwich" of the board, reflector, diffuser and window to sit in and the whole assembly slides in from the bottom.  There is also a thin recess for the rear of the clock to sit in, this is made from a thin sheet of plastic.  Buttons to press the switches were turned up on a lathe.

Step 4: The Final Product and Files

Picture of The Final Product and Files

here's a video of the clock in action and a zip file containing the Bascom AVR basic code, schematic and PCB. If you click on the schematic you can view it full size.

Here is a link to the Bascom code in HTML format and

Here is a link to the compiled HEX file of that (right click - save as). You should be able to program an AVR Mega16 with that using a programmer of your choice. Note, you'll need to set the fuse bits for 8MHz internal Clock.

Note:- You will need to turn of JTAG debugging on the AVR other wise you will have issues with the first column on the clock not working. Do this using the Fuse Bits as well.

Parts List:
Q1-Q3 BC548
LED1-LED3 5mm High Intensity Blue LED
LED4-LED12 5mm High Intensity Red LED
LED13-LED18 5mm High Intensity Orange LED
LED19-LED27 5mm High Intensity Green LED
R1-R4 100k 1/4w Resistor
Q4 32.768 kHz Crystal
C1 4.7uF 10V Electrolytic Capacitor
C2,C3 10pF Ceramic Capacitor
IC1 ATMEGA16 AVR Microcontroller
IC2,IC3 TD62304 Darlington Transistor Arrays (these could be replaced with standard transistors)
S1-S3 Momentary Push Buttons

Enjoy! and vote for me!


BEHROOZK2 (author)2016-09-05

you are a true winner!

robkirk (author)2014-06-13

Compact version. When making the led grid, miss the square separating the digits if you want it smaller.

gweeds (author)2014-03-22

Hmmm, maybe I got the JTAG fuse bit around the other way. Change the JTAG fuse bit, reprogram and see what you get.

robkirk (author)gweeds2014-04-20

one last thing is id love for it to be 3 second instead of 5 :/ :)

gweeds (author)robkirk2014-04-20

Hi Rob? 3 seconds instead of five for the change time? is that what you mean?

robkirk (author)gweeds2014-06-11

hiya gweeds if you ever get the time please could you do the 3 second change time tweak and upload the hex? many thanks. Also if you had a variable resistor pot on the positive feeding the 3 bc transistors would this be able to dim the leds? and could you even incorporate a photocell to this and have it done automatically.

robkirk (author)gweeds2014-04-21

Yes gweeds i thought that 3 seconds would be about the optimum time for changing the leds in time. one and five seconds is still a good option so if you could just add three seconds as an option it would be awesome. When you have time of course no rush :) (if you even want to do it that is haha). Btw i deleted a lot of posts that won't help future people as i kind of spammed here whilst being a noob :).

robkirk (author)gweeds2014-03-23

just to confirm jtag refers to the jtagen setting

robkirk (author)2014-05-04

i was just looking at different leds and found a type called straw hat leds that spread the light evenly like a lightbulb instead of in a beam, wish i had known of these before i might even redo them with this type in the future when i get bored as my less are very close to the acrylic and you can see the brightness in the middle even with them lightly sanded :)

gweeds (author)robkirk2014-05-04

yes they use them for LED christmas and party lighting. you might end up with a darker circle in the middle, as in the opposite of what you have now.

robkirk (author)gweeds2014-05-12

tweeds just a thought but how hard would it be to incorporate a dimming feature either automatic or manual?

robkirk (author)gweeds2014-05-12

I've gone for just diffused standard leds this time, see how they work out i shouldn't have to sand them and they are not high intensity so shouldn't be to bright i hope they are bright enough though. oh and i fixed the 3 dim orange less it was either a solder issue or faulty leds as i replaced them and seems fine now.

gweeds (author)2014-05-04

Hmm yes I did see that, and no sorry mine doesn't do that, I wouldn't have put up with it. I would check your wiring and soldering, it could be the smallest of solder bridges that can cause that sort of effect.

robkirk (author)2014-05-03

Added a few finishing touches today which included blu tak (a form of putty/plasticine) around all the inside grid rows to stop light leakage. Very pleasing to see the squares so crisp now. Also painted the grid black so you can't see it under the smoked acrylic. Added some push buttons on the back by drilling the back piece of acrylic and securing them with lock nuts then soldered onto the main board (my vero board is a mess with jumper wires everywhere and no doubt cold solder joints everywhere and it was 3rd time lucky as I'm no good at soldering). Officially finished and very pleased with it.

robkirk (author)robkirk2014-05-03

oh and i used white baking paper to diffuse in place of the thick tracing paper gweeds suggested and it works very well.

gweeds (author)robkirk2014-05-03

baking paper, now why didn't I think of that. That's what I like about instructables, you see so many different uses for different products! :)

robkirk made it! (author)2014-04-20

Finally had time to put the enclosure together it looks sweet with the smoked acrylic and instead of egg crate reflective squares which i found hard to source i used 2cm square plastic grid which is actually a Chinese plate dryer rack. didn't go to the trouble of etching a pcb but managed to fit a vero board inside the enclosure which btw is not as good quality as gweeds enclosure. Thanks to gweeds for helping me and anyone who thinks they can't do this because of limited knowledge of micro controllers i say go for it as i was a complete noob at electronics and managed it from scratch just be prepared to wait for different parts and to learn as you go.

robkirk (author)robkirk2014-04-20

gweeds (author)robkirk2014-04-20

Looking good Rob!

gweeds (author)2014-03-24

Oh don't give up hope, it does work I have one here that works fine. I also have someone else who built one and has it working.

repei (author)gweeds2014-04-04

About the need to disable jtag I understand, but what is necessary to change the pin 4 to pin 25 have Mr. gweeds, thank him for that, it works out ok

robkirk made it! (author)2014-03-25

finally i have a working prototype, now i have this i shouldn't have to bother you anymore tweeds lol :) many thanks for helping me troubleshoot and even redesigning the schematic because of me. one final question is when i plug my 5 volt breadboard supply into the wall charger it goes mad and all the less flicker. is this to do with the hz being messed up by the 50hz wall transformer? when its plugged into my usb 5v laptop it works fine.

gweeds (author)robkirk2014-03-26

All good, glad it is going!, I hope the new schematic is a bit easier to follow as well.

robkirk (author)robkirk2014-03-25

nope its working fine actually from a different 5v wall charger :)

robkirk (author)2014-03-25

many many thanks i might be speaking to soon but i think i solved it, on that extreme burner program i was not clicking write tick box when programming so the jtag must not have been programmed off!!!! i feel such an idiot! ill post back when i rewire the breadboard again as im only testing that pin atm thanks again gweeds your awesome!

gweeds (author)robkirk2014-03-26

Ah yes, I did that trick too!

repei (author)2014-03-11

работает все,кроме порта PB3 pin4. AVR

gweeds (author)repei2014-03-25

Hi there, I have uploaded a updated schematic, that with the current code and JTAG disabled should work.

gweeds (author)repei2014-03-11

Hi there, make sure you have disabled the JTAG interface.

Привет там, убедитесь, что у вас есть интерфейс JTAG отключена

repei (author)gweeds2014-03-12

Благодарю за быстрый отклик!Да jtag отключен,иначе не выключался нижний ряд led -3,6,9,12 ....27.Программирую PoniProg через ICSP.У PoniProg переключение FUSE обратное для AVR.На PIN 4 нет логической 0 или 1 ,состояние неопределено,но ЕСЛИ в исходном коде ПОМЕНЯТЬ строку DDRB = & B00000000 на DDRB = & B00001111, то на PIN-4 появляется логическая 1, и столбец led 25,26,27 светит постоянно.Собрано на отладочной плате.- Foto в привязанность.Один резистор для драйвера pin4 не видно ,он внизу платы.

gweeds (author)repei2014-03-12

Hi again, sorry google has a bit of problems translating that reply. I think I may have mucked up the code and schematic a bit when I uploaded this instructable. Connect the last column to pin 25 instead of pin 4.

repei (author)gweeds2014-03-12

Великолепный проект!Благодарю от всего сердца за подробную и быструю техническую поддержку!Это я должен извиниться за беспокойство.всё работает отлично!Но я пока искал причину зашил до смерти один AVR.но не жалко,теперь есть некоторый опыт благодаря Вам!Неплохо было поправить файл для тех кто еще захочет повторить и не имеет достаточного опыта в AVR .А Google лучше переводить оригинальный текст,иначе вообще ничего не понятно .Спасибо!

gweeds (author)2014-03-25

There you go, updated schematic uploaded.

gweeds (author)2014-03-24

Right, so I have had a good look, yes the diagram on here is an old version compared to the code, I shall fix that. The differences are:

Pin 2 of IC3 should go to Pin 25 of the AVR (this drives the last column)

S1 (set) goes to pin 2 of the AVR

S2 (Up) goes to Pin 3 of the AVR

That should get you going...

gweeds (author)2014-03-24

nope, those bits look like that on mine too.

gweeds (author)2014-03-24

Hi again Rob, ok, so I downloaded the same hex file of my web site, and programmed it to my Tix clock using your program and programmer and using the fuse bits I suggested and it works as it should. Before I programmed it, I read the fuse bits and mine were set to 84 and 51. However the difference doesn't refer to anything that might affect operation. I will double check the diagram I have listed here with the board I have in my hand here a little later. Be good to get everything correct eh! :)

robkirk (author)2014-03-21

ah thankyou so much, to anyone who is reading this I'm using eXtreme burner on windows 7 64 bit and have a usbasp programmer. Ill let you know how i get on and post pics of it. btw did you say the smaller crystal would be ok to use as they are all the same as long as its 32.768 its about half the size of the one on your board and I've used legs 1 and 4 the other legs are not used as i can tell from the datasheet. Thanks again for your kindness and patience at my noob diatribes.

gweeds (author)robkirk2014-03-21

The physical size of the crystal does not matter, it is the frequency that needs to be correct, other wise your clock will run to fast or slow. :)

robkirk (author)2014-03-21

I've started on the breadboard prototype just one thing, the blue line connecting 7 pins of the atmega to one of the arrays, does that mean connect each pin to each pin separately or link them altogether? thanks.

gweeds (author)robkirk2014-03-21

Hi there, yeah in the diagram it is show as one line for clarity, but they are individual connections from the array to the AVR

gweeds (author)2014-03-20

Hi Rob, so you need to set the fuse bits as follows, click on the "Configure AVR Clock" button and set as per image 1;

Calibrated Internal RC oscillator

8 MHz

Start-up Time from Power Down (The first recommended option)

NO Options

Then OK that, click on the "Bit Details" for the High Fuse option and UN program the JTAG fuse.

You should see C4 and D9 in low and high fuse respectively.

The 32.768MHz crystal is for the clock only for the Real time clock. It's 32.768 because that can be divided down to 1 Hz pulses for the clock.

As for capacitors, as long as the voltage is higher, it doesn't matter, so you can replace a 10uF 16v with a 10uF 35v.

And the transistor array can be bought from:

take your pick, I have purchased 100's of products from Aliexpress, and only one ever got lost in transit. Those links will also give you some alternative part numbers.

robkirk (author)2014-03-20

thanks a lot for your help. sorry to be a pain but what is the exact crystal model is it a e571? i have ordered one and its the same frequency but a lot smaller than yours i have soldered 2 leads on it to use but not sure if i need a bigger one. also i have a 4.7 uhf capacitor but its rated 63v and yours states 10v although it looks the same size. finally would these arrays work>:

gweeds (author)2014-03-20

Hi there, the code on the site is correct, read some of the other comments I only got one of the connections wrong (pin 25 should be on 4 or vice versa) and you MUST turn off JTAG. this interferes otherwise. You could use some transistors instead of the array, not sure what type to use but look up the spec of the array and match something discrete. But yes, make sure you set the clock bits right on the fuse settings, otherwise you may brick your mega. If you have a screen shot of the software's fuse setting screen, I might be able to help you select the right ones.

Neph1x (author)2013-01-11

Where i can change blinking time, i wanna make it faster...this is a little bit slow for me..which variable you use for that....Thank you!

gweeds (author)Neph1x2013-01-11

Hi there, after you set the time there is an option to change the blinking time. it cycles in the setup between 1, 5, 10, 15, 30 and 60 seconds. The actual variable that holds this delay time is "Delayvalue". The code sets it to a default of 5 just after all the Pattern definitions.

Grumpy Mike (author)2012-12-15

What limits the current through the LEDs?
Is this not going to burn out the LEDs and / or the drivers?

gweeds (author)Grumpy Mike2012-12-15

Nothing does, to get maximum brightness I drive the LEDs with all the current they can source, but because they are multiplexed, they don't burn out. It is quite common to drive LED matrix displays this way to get more brightness. The clock has been running 24/7 since its inception in 2002, never crashed, never needed repair.

mofassir (author)2012-01-24

can you please tell me what the JP1 in the schematic is, this is my first time making something so i would appreciate the help

gweeds (author)mofassir2012-01-24

Hi there, JP1 is the main power connector. 5v DC. you can make this a proper DC plug style, or a 2 pin header or just solder the wires to the board.
JP2 is the programming connector

mofassir (author)gweeds2012-01-25

thanks, i actually wanted to know how to implement the JP2. for now i have made the connections as specified on the bread board. in place of the JP2 i have simple use the electrically linked vertical column. i hope that will work.

About This Instructable




Bio: self proclaimed geek with more ideas than money
More by gweeds:Jen & Tom's Lego Hair tie /  Rubber band gunLego Excavator for the kidsDIY TiX Clock
Add instructable to: