Archive for the ‘arm7-oled-clock’ Category

cuckoo clock upgrade and repair


jtag connecter

When I designed the clock, I neglected to include space for some sort of jtag connector. I left unlabeled through-hole solder pads on the board so that I could program it, but they had to be soldered/unsoldered each time I wanted to take the clock out of service and reprogram it. I finally realized that I could just take the same connector I am using for jtag on the oscilloscope and just epoxy it on one of the edges of the board and run little wires to where they had to go and that would be elegant. I did so and it reprograms properly.

tiniest bit of solder

The oled display can handle up to 18V, so I designed the DC-DC converter power supply to deliver 16.3V to it. This turns out to run the display too bright and too warm (the display has an image burned in now as a result). So I calculated that by replacing a 120k feedback resistor with a 100k resistor, I could get it down to 13.8V. While replacing the resistor, I noticed a stray speck of solder that was between another resistor and a trace, so I heated it up a bit to see if it was supposed to be there (if there was a trace between them on the board), but I couldn’t tell. When I plugged it back in, the image on the display had disappeared (it was there, but it was extremely dim). I assumed it was the resistor I had just replaced and not the speck of solder, so I tried soldering/unsoldering it and going back to the original resistance a couple times unsuccessfully.

Finally, I checked the schematic (RTFM?) – there, I noticed that the shutdown pin needed to be high for the DC-DC converter to be active. It was measuring low, so I checked the source code and I had never written anything to drive that pin high. This implied the blob of solder had done that for me from the first time I soldered it together, nearly a year and a half ago. The splork of solder had shorted the pin on the microcontroller that controlled the DC-DC converter’s shutdown pin to something high. Now that it wasn’t being shorted high, I needed to write some “turn this pin high on startup” code and program it (with the fancy new jtag connector from above). I did so, but the display still didn’t come on. After some frustrating time trying various things to get the display to come back on, it dawned on me that it was the 16.3V display voltage line that had been shorted to the microcontroller pin and that might have damaged the ability of the microcontroller to drive that pin high. I scraped part of that trace off and connected it to another spare i/o pin on the microcontroller and changed the code correspondingly and now it works fine.


presentation today


I gave a short presentation on my project today in class.

I took a picture of the face from an analog watch I have and had my clock display the picture behind the hands:
Yes, the “3” is a slightly modified version of the “8.”

the printed circuit board works! (sort of)


After a day of wondering why the microcontroller + crystal didn’t oscillate at all, it was discovered that the 4 pin crystal was wired backwards (4321 instead of 1234). Two methods of fixing this were attempted (rotating the part 90 degrees and shifting the part on the circuit were both found to connect the two leads that were crystal to the microcontroller’s xin and xout). Both failed. It is unknown why. Guesses include using the wrong capacitance crystal, or blowing up the oscillator inside the microcontroller in some way. My vote’s on the latter at the very least since the prototype used a crystal with the internal oscillator and worked fine since September until two days ago but doesn’t oscillate anymore with a crystal.

Then, after a couple days of worrying about why the crystal didn’t work, full-size oscillators were aquired instead because that’s all that could be found locally (parts kit + electronics supply store). Both the prototype and the circuit board now function with external oscillators. The circuit board looks a little funny with such a large, non-surface mount part hot-glued to it. Not really as elegant as I wanted, but it works.

The vectorboard pictured below is just for the temporary jtag header for programming.


but functional:

the arm7-oled-clock pcb arrived!




Here’s what it looks like populated (click for full-size):




Tonight, I got two things done. The first I named “vectored calls,” where I can have the clock display a completely different face based on the mode selected with a rotary encoder. The second is that now it displays latin numbers around the clock hands instead of just dots. See the pictures below.

As it was earlier today, with dots (red=hour, blue=minute, green=second):

After I did the numbers thing (I think my 9 is a little wonky):

And here’s a pic of the whole circuit board along with it just drawing the ends of the hands:

Note that I was able to take the pictures in quick succession because the vectored calls let me select the different display modes just by turning the knob (yes, I retook the last one a half-hour later).

arm7-oled-clock pcb


I finished off the design of the printed circuit board for my clock. Sent it off this morning to get manufactured ($35 for two). Here’s hoping that it works!

Here’s a rendered pic of what the front will look like: