07 June 2016

A clock with Arduino and four HP 5082-7300 displays - 3

Last part in this series about building a clock with four HP 5082-7300 displays controlled with an Arduino.
 
After using the HP 5082-7300 desk clock for a whole day and night I came up with few improvements.
 
First of all, during the day nobody will look at it; why keeping it running, then? The are many ways to control it via software, like switching off the display according to the time of the day, to the room brightness, to a physical presence and you can certainly come up with other ideas. Instead of developing a software solution I will add a switch to control DC power to the whole circuit.
 
Meanwhile I wrote and applied some firmware updates. The first refinement is meant to reduce heat production, which occurs during the day when nobody looks at the clock: cut in half the display brightness at the higher luminosity levels. It does have an effect since the top of the box is not warm anymore. Then, since every digit has the decimal point, the new firmware moves around the dot endlessly instead of just blinking the central one. Third and last change was to read the LDR value once a second instead of once every PWM loop: this makes the loop a bit faster (ca. 0.1 ms) thus reduces flicker.
 
A further improvement could be to add some hysteresis and averaging to the intensity control, not counting adding further digits.

The firmware is available on github. Homework: are there other functions I have not described in these three posts?

9 comments:

MatejB said...

Do you have a circuit schematic? I just found 4 of these displays that work and I'm going to try to build a wrist watch out of them, but I have to test them out some more.

Paolo said...

Hello Matej.
Unfortunately there is no schematic diagram. I followed the datasheet for the display. Input data lines are in parallel. Each display latch input is controlled via software, also to achieve some form of brightness control. Wristwatch? You need to turn off completely the display because they are very power hungry: 100mA, 500mW each!

MatejB said...

That's exactly what I thought - so I would be making it with a cover that when opened would turn the display on. So in reality it would work only for a few seconds at a time.
Did you use any transistors with PWM to control the voltage given to these displays?

My biggest problem right now is designing a small circuit that would charge the LiPo battery and ensure that the microcontroller and displays get ~4V.

Paolo said...

My project was a desktop clock permanently connected to AC so I had no need to conserve energy. I used a step-down from 12V to 4.5V so that everything runs cooler and displays last longer. And for brightness control I switch on-off digits using the "all LEDs off" input code "F" (other HP 5082-73xx have real PWM brightness control). Nevertheless, their internal logic circuitry is power hungry all the time.

For your battery controller, check if some Nixie Watch design is public and shares how they do it. The simplest way (and dangerous, so purely theoretical!) is to feed the battery max 4.2V when charging.

MatejB said...

Thanks for the reply and for the advice, good luck in your future projects :).

MatejB said...

Just one more question, to which pins on the Arduino is the DS1302 connected to?

Paolo said...

The RTC is connected to A4 and A5, as "standard" I2C pins. If possible don't use DS130x but rather a DS3231/3232 which is more accurate. Or drop AVR series and move to STM32 uC that includes an RTC. That's somewhere in my future plans. Very future ...

MatejB said...

Revisiting this thread after a while, do you think the code would need any modifications for work on DS3231 RTC?

Paolo said...

Hello MatejB.
I had implemented i2c commands specific for DS1307, so it will not work with DS3231 out of the box. Probably it is sufficient to check if the 0x68 i2c address is correct and change the memory address for the SQW set bit (not 0x07, probably 0x0E).