The Word Clock – Arduino version using ATMega168 microcontroller
Major updates – A much better enclosure for this clock has been designed – check out
Last month I wanted to build a special gift for my beautiful wife, Megan. She has a teaching background in English, so what better present to make for her than a clock that uses language to tell the time for her desk at work.
The original project that I created used a Microchip PIC microcontroller (16F877), because that’s what I had in the garage. Since I published it (http://www.instructables.com/id/A-Word-Clock/), quite a few people, including my next door neighbor (Thanks Mikal) have asked me why I didn’t use an Arduino. Having never used one, my automatic reaction to Mikal was ‘Whats a one of those??” So, I did some research and found out what an Arduino was. Wow – they are so cool – so simple to develop for, and the barrier to entry is so low!. I ordered one from eBay, and re-designed the clock to use the Arduino Duemilanove as the controller.
I have to admit right from the start that the Arduino is a beautifully engineered piece of work – While I am used to the PICs, because I have been playing with them for years, I do admit that there is a certain level of ‘unreachability’ for the beginner because of the requirement that specialised programmers be purchased or built. The Arduino is equally powerful, comes on it’s own little self contained board, and best of all is self programmable using a USB cable.
I have also listened to people who have constructed the original clock, and done away with the need to run off AC power. This clock simply uses a DC supply of 12 Volts, so you can run it off a wall wart, or off a set of batteries. If you are using batteries, may I suggest ‘D’ cells, as they run forever, or a couple of 6V ‘Lantern’ batteries.
REUSE YOUR ARDUINO FOR ANOTHER PROJECT
Finally, I have designed the controller board so that you can construct the project with your Arduino Duemilanove board just by plugging it in. But, if you want to recover your Arduino for something else, you can install the optional support components along with an appropriately programmed ATMega168 and a handful of support components and your project will still operate. People on eBay will sell you a ATMega168 with a boot loader that you can simply pop back into your Arduino board.
So, here it is – The word clock – constructed using an Arduino!
I am now able to sell all sorts of components, ranging from complete clocks, through to kits, through to individual modules and components. Please visit my web site www.dougswordclock.com for further information.
Step 1 The new hardware – Controller board schematic
My original clock used discrete transistors to drive the array of LEDs. I have realised that while that approach works fine for a project that I have built for myself, it makes it more complex for others to build, so this new clock uses ULN2003A Driver ICs. The ULN2003A contains a set of darlington transistors in a convenient DIP package, so there is MUCH less soldering to do.
A NEW PCB
I have also re-designed the PCB to make construction much simpler – The Arduino controller simply plugs into the new PCB. If you want, once you have constructed the clock, you can recover your Arduino board by purchasing an ATMega168 with a boot loader, and populate the PCB with just the new Microcontroller and a crystal.
IS THIS JUST A NEW SHIELD?
In the spirit of Arduino development, it would be fair to say that the controller board was a 24 output LED (or relay) driver shield. It is just as happy to turn on a big set of 24, 12 volt relay coils as it is turning on a bank of LEDs.
Below you will find the new schematic diagram for the controller board as a PDF file.
Note that you should look at step 4 to understand what resistors to use. Don’t simply use 360R and 36R with supply voltages above 10v. You will need to use 680R and 270R instead.
Step 2 The hardware – Make the controller board
Enough talk – lets start by making the controller board.
If you want to etch your own board, you can download the attached a PDF file and follow the steps I used.
TONER TRANSFER IS EASY
When I made the board, I photocopied the page onto Toner Transfer paper (Press-n-Peel Blue), then I used an old laminator to transfer the image onto a piece of very clean PCB stock. I etched the board in a mixture of Hydrochloric Acid and Hydrogen Peroxide etchant. There is a brilliant Instructable that describes the process at www.instructables.com/id/Stop-using-Ferric-Chloride-etchant!–A-better-etc/
When you etch ANYTHING – make sure you are wearing safety goggles, and old clothing.
When the etch process is complete, everything was rinsed very well under running water to remove all traces of etchant. Just before I rinsed everything, the etchant was collected for use with the next project.
Once the board had been rinsed and dried, I used a Dremmel to drill the holes, and removed the Press-n-Peel film using some steel wool, detergent anf good old elbow grease.
This time, I took buckets of photos of the process – It is very pretty!
I personally really enjoy making printed circuit boards, and I am sure that you can make them yourself. However, if you would like your own controller PCB, I am able to supply blank, or pre-assembled boards. Have a look at the last step for further information.
Step 3 The hardware – Populate the controller board
POPULATE THE PARTS IN ORDER OF SIZE
I soldered all of the components, using the stencil layout as a reference. I started by mounting the six jumpers that I needed to place because I used a single sided board. Then I soldered the header pins and the IC sockets, Then the resistors, diodes and off board connectors. Finally, I plugged in the Integrated Circuits and the Arduino Board, and that step was done.
Note there there was a small change with the final board version – the two resistors (R2 and R3) are actually mounted below where the photos show them, and jumpers are installed in the corresponding space. Just follow the parts layout for the exact placement.
It was a very restful 30 minutes to do the soldering. Make sure that you use some sort of fume extraction when you solder. To many fumes can end up being bad for you.
Here are heaps of photos, showing the steps I used to populate the board.
Step 4 The display board
Before you do anything, have a think about the size you would like the project to be. In this version, I used high intensity LEDs. they have a beamwidth of about 10 degrees, which means that I had to mount the stencil about 30mm from the LEDs to get an even illumination. If you purchase ‘Flat Top’ LEDs, then you can make the clock much thinner.
MOUNTING THE LEDs
I decided to make the display board using a piece of fiberglass material, with the LEDs mounted into a series of holes that I pre-drilled. This is a different mounting system than the original, but I feel that it is probably more accessible, as it doesn’t rely on another expensive PCB. The LEDs are soldered on the back of the board to a piece of 26 way ribbon cable that is terminated with a 26 way IDC socket.
You can use a piece of thin plywood, or acrylic if you like – Just use whatever material you can that will hold the LEDs stable.
MAKING IT (Hey thats a great name for a magazine 🙂
I started with a square of fibergless sheet, upon which I measured a 12cmx12cm square. I divided that into a grid that was 13 dots x 9 dots (which turned out to have a spacing of 1cm x 1.5cm), and drilled starter holes using a small drill.
Then I measured the LEDs, and they were indeed 5mm diameter, so I drilled LOTS of 5mm holes…..Before I started drilling, I was aware that there was going to be a very big mess. There was board material everywhere. I did the drilling outside, and made sure I wore a dust mask.
So many little holes….
Once that was done, I slid each led into a hole, being careful to make sure that they were all oriented the same way. A drizzle of hot melt glue was useful in holding the leds in place. When assembling, I mounted every second row on the board, and gently folded the leads down as time came to mount the final sets of rows.
SOLDERING IT TOGETHER
Then I trimmed the leads, and soldered in the current limiting resistors, and soldered the LEDs together, following the layout diagram exactly. When you are following the diagram, remember that you are working on the BACK of the board, so you need to mentally reverse the layout. Also – don’t forget to use 36R resitors (see below) when you are connected to a set of 3 LEDs and 360R (see below) resistors when you are connecting to a set of 2 – It alters the current flow to make the LEDs a uniform brightness.
DO I *REALLY* USE 360R AND 36R RESISTORS?
As an update, I have been using Blue Flat Top LEDs, with a forward voltage drop of about 3.3v @ 20mA. The supply that I was using was about 10.5VDC. With the original design, with 2 LEDs, the voltage drop across the LEDs was 6.6v, meaning that 3.9v was being dropped across the resistor (11-6.6). With a 360R resistor, this limited the current to 10.8mA, and with 3 LEDs, the voltage drop across the LEDs was 9.9v, meaning that 0.6v was being dropped across the resistor (11-6.6). With a 36R resistor, this limited the current to 16mA.
What I have subsequently discovered is that with supply voltages of 12V, the current through the leds ends up being way too high (15 & 58mA), which is a problem.
In my most recent versions, I have setled on 680R for the 2 Leds and 360R for the 3 Leds, providing 7.9 and 7.8 mA respectively. Much lower current, and still ample illumination.
ADD A RIBBON CABLE
When everything is finished, prepare and solder on the ribbon cable with the 26 way connector.
The connector plugs into the controller board. (But I guess you figured that out!)
The photos below should show the process that was used.
To be completely honest, I think next time I will simply use the display board from the first WordClock that I built. Yes, it would mean making another circuit board, but it was so much simpler to make, and the result looks much nicer.
For more Detail: The Word Clock – Arduino version using ATMega168 microcontroller
Leave a Comment
You must be logged in to post a comment.