"Firmware" must-have's / nice to have's

208 views
Skip to first unread message

SWISSNIXIE - Jonathan F.

unread,
Nov 15, 2016, 3:53:14 AM11/15/16
to neonixie-l
Hi

I know a lot of people here have assembled kits or build there own clock. For driving nixies there are not too many different ways. Since im more "builder" than "programmer" i want to make a firmware thats really good, and use the same firmware for all my future clock projects, so i don't need to make a new code for each project and only need to change pin definitions or values! Of course, i want to share that firmware along with my schematic!  Link to my current board!

I just wanna ask what people would like to have in a firmware option!

Imagine you have a nixie clock with 6 Tubes (each has 10 digits) and 2 colon separators (each can be driven alone). For the settings there is a rotary encoder. The Anodes are fixed (no anode pwm).

What options would should there be?



List of current features:

  • Different Cycle (Anti-Poisioning-Routinge) choices (each minute, each 10minute, each hr, off)
  • Cycle speed (1-99%) 1%= cycling around 5 seconds (very long!)
  • Numbers of cycle (1-10)
  • AM/PM Mode ( 24hr, 12hr, 12hr with indication with the separators)
  • colon separator options (left on, right on, both on, both of, blink each second, overwrite AM/PM indication)
  • time-setting via Serial
  • LED brightness
  • LED colors (16 different)
  • Automatic Daylight Saving change* (on off) (and menu to set start/end date)
    This works by setting the time over serial, the date when the time was set, will be saved into eeprom. On reset, it will check if the date was in daylight saving time or not, and checks if today's date is in daylight saving time or not, and then will react by change the time by +1 or -1.
  • GPS sync (on/off) (if receiver connected).
  • Manual time setting (hh:mm, s = 00 when pressing save)
  • Date display by a single button push. 



Any ideas? :)


Thanks

- Jonathan




Paolo Cravero

unread,
Nov 15, 2016, 1:11:41 PM11/15/16
to neoni...@googlegroups.com
Hello Jonathan.
First of all, thank you for sharing your work.

While I grew up surrounded by RS232 cables, the serial setup sounds not practical and user friendly.

In a couple of my firmwares I hardcoded DST changeovers for 100 years (eats up 100 bytes): you only need to reset the clock at a known point in time&DST when RTC battery backup is lost. Someone here mentioned a DST button, which is pretty elegant (and easily implemented if you don't care about the date). Another approach I collected on neonixie-l is to step backwards 1 when setting hours, then going forward, so you don't have to loop through. I think that automatic DST is a must if you have an alarm function, otherwise it is a programming exercise :) "Cosmetics" a friend of mine used to say.

I think your setup misses a motion detector.

Maybe you would add a scrolling display of date-time? Again, it's a programming exercise :) By the way, is any of the known clocks scrolling the information?

I like the idea of a rotary encoder, and it should be super easy to set time with it (no more need for archaic serial).

A thought more hardware-wise: how about allowing for -optional- individual anode current adjustment (I know it takes board space)?

In any case, a shared project is good by default. Keep up your work.
Paolo

gregebert

unread,
Nov 15, 2016, 2:34:57 PM11/15/16
to neonixie-l
Jonathan - Are you running in an Arduino environment, or is the AT328 essentially standalone ?

I'm planning to switch to Arduino for my current/future projects, so this is definitely something I'm interested in.

One thing I suggest is a 'scramble table' that allows you to handle arbitrary mapping of serially-transmitted bits to specific tubes or segments. The actual timekeeping software would be platform-independent, but a specific user would need to populate the scramble table to adapt to their tube-driver hardware. Basically, the table would be a set of pointers that informs the serialization routine where to get the next bit to send. So, if you had a 6-tube clock, each with 10 cathodes, your table would have 60 entries for the tube data, and perhaps a few more for the colons. If you had eight b7971 tubes (15 segments), you would want at least 120 entries.

In my last project, I used an FPGA so the scrambling was done in verilog by re-assigning bits, so it took zero RAM/logic gates. Not true for software, though, but much easier to change.

Andy Tefft

unread,
Nov 15, 2016, 2:43:39 PM11/15/16
to neoni...@googlegroups.com
This is not completely a firmware feature but a clock for this day and age should be able to connect to my wifi, and then use ntp for time setting. A challenge to make it easy for the user to set up since you have limited display/input capability, but it could be as simple as allowing the user to place the ssid and password in a file on a thumb drive that gets inserted once to bootstrap the process.

--
You received this message because you are subscribed to the Google Groups "neonixie-l" group.
To unsubscribe from this group and stop receiving emails from it, send an email to neonixie-l+unsubscribe@googlegroups.com.
To post to this group, send email to neoni...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/neonixie-l/24f5d341-b550-4137-a3ac-5b0670035a86%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

David Forbes

unread,
Nov 15, 2016, 3:00:45 PM11/15/16
to neoni...@googlegroups.com
Andy,

I don't know about that. I find it takes less effort to set a clock than it
takes to configure a network device. It also takes less effort to ensure that
you haven't crete a spambot if it's not connected to the Internet.

That said, I do believe in ntp for setting the time on our university
telescope's computers.


On 11/15/2016 12:43 PM, Andy Tefft wrote:
> This is not completely a firmware feature but a clock for this day and age
> should be able to connect to my wifi, and then use ntp for time setting.


--
David Forbes, Tucson, AZ

SWISSNIXIE - Jonathan F.

unread,
Nov 15, 2016, 3:20:33 PM11/15/16
to neonixie-l


Am Dienstag, 15. November 2016 19:11:41 UTC+1 schrieb Paolo Cravero:

While I grew up surrounded by RS232 cables, the serial setup sounds not practical and user friendly.

Maybe you would add a scrolling display of date-time? Again, it's a programming exercise :) By the way, is any of the known clocks scrolling the information?

Paolo


The Board has usb, and i think its very easy to set the time, just plug in the usb, and then start my batch-programm, it will set the time :)
 My clock does switch automatically, the settings are just to set the day when the daylight saving time starts (Europe, US, and other countries have different start/ending dates. 

Very nice idea about the scrolling function, it will look into it! :)


Am Dienstag, 15. November 2016 20:34:57 UTC+1 schrieb gregebert:
Jonathan - Are you running in an Arduino environment, or is the AT328 essentially standalone ?

I'm planning to switch to Arduino for my current/future projects, so this is definitely something I'm interested in.


Yes, its Arduino. I have chosen that, because if the boot loader is burned, the "user" does not need any special hardware, just a serial port, or in the case of the clock in my link a usb cable. And the IDE is free and there is alot of libary and example stuff!


Alic

unread,
Nov 15, 2016, 6:41:37 PM11/15/16
to neonixie-l
Hi Jonathan,
Thanks for sharing!

Jürgen's clocks (nixiekits.eu) use scrolling to switch between time and date. I find it a nice feature since it uses the digits in the tubes more evenly in addition to the anti cathode poisoning routine.

I like clocks with 2 "dots" for each separator column. This way it's easy to see the difference between date and time.
Do you think it would be possible to implement some sort of PWM for the separators? When they fade in and out in 2 seconds each (4s for one "pulse") it is really beautiful!

An option to easily turn the LEDs always off would be nice : some people don't like it when they interfere with the beautiful orange glow of the nixies.

Do you plan to display the date only when a button is pushed? Or is it possible to add an option to choose for how long to display the date and how long the time?

I also think a motion detector is important for those clocks with rare nixies ;-)

An independent arduino firmware is exactly what I need!
Nice project!

Jeff Walton

unread,
Nov 15, 2016, 7:46:18 PM11/15/16
to neoni...@googlegroups.com
Juergen uses code developed by Pete of PV Electronics.   Take a look at the clocks on the PV Electronics web site. 

Jeff
--
You received this message because you are subscribed to the Google Groups "neonixie-l" group.
To unsubscribe from this group and stop receiving emails from it, send an email to neonixie-l+...@googlegroups.com.
To post to this group, send an email to neoni...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/neonixie-l/31063a70-a126-4c1d-b058-5d0599541b09%40googlegroups.com.

Mitch

unread,
Nov 16, 2016, 6:39:25 AM11/16/16
to neonixie-l
Here is the documentation for my Zev clock. 

Mitch
ZevManualV2.doc

SWISSNIXIE - Jonathan F.

unread,
May 11, 2017, 1:11:19 AM5/11/17
to neonixie-l
I have now created a big part of the software and it works very well.

http://swissnixie.com/index.php?go=sunixs

Intentionally i left all "dimming" alone, since my current design does not have anode-control.

The current version is the "stable" release, but i will start optimizing and adding features, for this i put the code on github

https://github.com/sgtJohnny/sunix

If anyone wants to use the code - feel free :)

Any ideas,tipps,comments are welcome :)

Paul Andrews

unread,
May 11, 2017, 7:09:46 AM5/11/17
to neonixie-l
Can you blank the tubes in software? If so you could implement dimming in software, which is all PWM is. No need for a dedicated pin. I did this for an Arduino controlled clock kit I bought. There were no timers left, so I just kept track of whether the tubes should be on or off in the 'PWM' cycle in a small PWM class. Essentially your 'clock cycle' is however fast you can get around your main loop.

I implemented cross fading the same way!

SWISSNIXIE - Jonathan F.

unread,
May 12, 2017, 6:15:58 PM5/12/17
to neonixie-l
Yes i can blank, the problem is, shifting out 64bits of data via arduino takes a "long" time (several mircrosecs), while these shifting, the tubes are hardware blanked. If you send the 64bit datastream very often in a short period, you can see the tubes flicker... and i don',t like that...

Paul Andrews

unread,
May 12, 2017, 7:28:56 PM5/12/17
to neoni...@googlegroups.com
I had to fine tune how I was doing that to remove the flicker. I think it is caused by a beat between how often you go around the main loop and what you think the state of the tubes should be. You have to keep of an error term to keep track of the state you should be in.

Anyhow it seems to work and I think the hardware I was programming is quite similar. It is an Arduino uno driving a display shield with no way to PWM the state of the tube. It is hard to know without getting my hands on the hardware. However my code is github here if you want to take a look: https://github.com/judge2005/NixeTubesShieldNCS314/blob/master/NixieClockShieldNCS314HW1.1.ino. Look for SoftPWM.

On May 12, 2017, at 6:15 PM, SWISSNIXIE - Jonathan F. <jfre...@gmail.com> wrote:

Yes i can blank, the problem is, shifting out 64bits of data via arduino takes a "long" time (several mircrosecs), while these shifting, the tubes are hardware blanked. If you send the 64bit datastream very often in a short period, you can see the tubes flicker... and i don',t like that...

--
You received this message because you are subscribed to a topic in the Google Groups "neonixie-l" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/neonixie-l/FOegRqszvH4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to neonixie-l+...@googlegroups.com.

To post to this group, send an email to neoni...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages