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?
The firmware is available on github. Homework: are there other functions I have not described in these three posts?
9 comments:
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.
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!
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.
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.
Thanks for the reply and for the advice, good luck in your future projects :).
Just one more question, to which pins on the Arduino is the DS1302 connected to?
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 ...
Revisiting this thread after a while, do you think the code would need any modifications for work on DS3231 RTC?
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).
Post a Comment