Pages: [1] 2 3 ... 10
 1 
 on: July 20, 2017, 12:07:08 pm 
Started by mrspicman - Last post by mrspicman
Greetings!

This is my first-time post and wanted to share my journey to building a Nixie clock.  The old time nostalgia is what brought me to build one of these but bottom line, they look COOL!  Grin

Sorry for all the pictures but thought it would be a nice touch to see them and follow how I built and got to the end result.

One thing I am NOT is a coder and I use code graciously provided here at Arduinix http://www.robotpirate.com/forums/index.php?topic=298.0.  The one item I am struggling with is how to add a real time clock.  I have been looking at other's code but still can't quite wrap my head around it.  If anyone has any pointers or example code that I can use in my project it would be greatly appreciated.

I purchased several different kinds of nixie bulbs from a russian site and in this project I decided to use IN12 bulbs along with INS1 colon dots:







I purchase a bunch of pins for my needs and designed some sockets in Aspire Vectric to use with my hobby CNC machine and carved them out of wood.  The results turned out pretty good.  I did this with the purpose of being able to swap out any dead lamps in the future.  I went ahead and expoxied the pins into place:












Then came the first tedious part of wiring up the INS12 sockets, and properly adding heatshrink tubing. 





I had some oak and maple wood scraps lying around so I started of with the faceplate for the IN12 and INS1 sockets.  I messed up a bit on my CNC machine but because the plate gets the sockets inserted you don't notice a thing afterwards:





Here are all the sockets inserted.  I wanted a bit of a modern/techno look so I used M3 screws to affix all sockets and enclosure (to follow):







Next step was to wire it up to the Arduinix nice and neatly as I am dealing with some confined spaces when it comes to my enclosure:





Next came the enclosure.  Like I said I had some scrap oak and maple that I made it out of.  I used linseed oil and a spray of clear laquer and finally built it up with all the electronics inside.  The entire enclosure is sealed up with M3 screws:













It turned out quite nice but like I said I really need to get a real time clock involved since I am losing seonds and have to adjust it every once in a while.

Here is a video as well for your viewing pleasure:

https://youtu.be/WCTsQQ1ziMI

If you have any comments I would be more than glad to answer...and am hoping someone with better coding experience can help me out with the real time clock!

Cheers!

 2 
 on: February 25, 2017, 01:25:28 pm 
Started by maximevince - Last post by nonentity
Thank you for sharing Maxime!

 3 
 on: February 25, 2017, 02:54:29 am 
Started by maximevince - Last post by maximevince
Hey all,

Since I wanted a minimalist build with no buttons on my clock, I decided to throw in a GPS to get the time sync from!

Short list of features:
* Time sync from GPS (Ublox NeoM6 module, but can be any)
* Timer interrupt to refresh/multiplex the tubes in a stable way.
* Fully non-blocking tube multiplexing (no delay()-functions)
* Uses the Time class, rather than millis() to keep track of time

Overall I think the code is cleaner and easier to read, compared to the original example code.

You can find the code on GitHub:
https://github.com/maximevince/arduinix_gps_timer_isr

Let me know if you like it, use it, ... or send me a pull request on GitHub if you improved the code!

 4 
 on: November 19, 2016, 11:45:56 am 
Started by nonentity - Last post by nonentity
Sorry guys, we had some broken links on the assembly section and the code section.  Those should be fixed now.  Please let me know if you find anything else that is broken on the website.

Thanks!

Brad

 5 
 on: June 09, 2016, 02:53:59 pm 
Started by RJTPMP - Last post by nonentity
Has anyone tried using the IN-16 tubes? I'm working on mine now, but my first setup doesn't seem to work.  I think I just have the voltage set too low. I plan on getting back to it at some point this week if all goes well.

What voltage do you have it set to? What power supply are you using?  Make sure it's at least 650 milliamps or greater, one amp would be good. 

 6 
 on: June 09, 2016, 02:53:10 pm 
Started by Dr.Wizard - Last post by nonentity
digitalWrite is very slow and inefficient because it does error checking to make sure the user isn't trying something stupid, and because it has to decode which port and bit the requested pin is on.  And it makes your code much easier to read and understand.  Not necessarily bad, but in a multiplex routine, especially one called from an interrupt, speed counts.  The code gets executed hundreds of times a second.  If it's slow and inefficient, it leaves less processing power for other things.

A faster and more efficient way to control pins is the write directly to the control registers.  The disadvantages to this are the opposites of what I mentioned above.  You need to know what port and bit the pin is on.  You better get it right, because if you do it wrong, god only knows what could happen.  And it involves binary math and bit manipulation which can be rather confusing.

So here it is, a routine for controlling the output pins that writes directly to the ports.  It is literally 100 times faster (I benchmarked it!).

Code:
void setOutputs(byte bank, byte digit1, byte digit2) {

byte val1 = digit1 << 2; // Store number 1 in value 1, shift bits 2 places left (Move BCD value on last 4 bits to middle 4 bits)
byte val2 = digit2 << 6; // Put least 2 bits of Number 2 into upper 2 bits of Value 1
byte val3 = digit2 >> 2; // put highest 2 bits of Number 2 into lowest 2 bits of Value 2
byte val4 = (1 << (bank + 2));  // Choose which bit is needed to control the bank pins 10-13
// The bank selection is middle 4 bits, so the number needs to be shifted over by 2 bits

PORTD &= B00000011; // Turn pins 2-7 off
PORTB &= B11000000; // Turn pins 8-13 off
PORTD |= val1; // Set pins 2-5 to match BCD number held in middle 4 bits of Value 1
PORTD |= val2; // Set pins 6 & 7 to match highest 2 bits of value 1 which is lowest 2 bits of num2
PORTB |= val3; // Set pins 8 and 9 to lowest 2 bits of value 2 which is highest 2 bits of num2

PORTB |= val4; // Turn the appropriate pin (10-13) for the bank
}

This code is very specific to Arduino models Uno, Micro, Mini, Nano, and other Arduino clones that use the 328P chip.  To use it on a Mega, or some other type of microcontroller, you will need to change the ports and which bits get manipulated.


Wow, that's pretty awesome. 

It'd be nice to get a fresh codebase for the ArduiNIX one day, I've been looking into it, but I am not a coder, I am more on the art side and hardware side.

Very neat work!

 7 
 on: June 03, 2016, 01:37:41 pm 
Started by RJTPMP - Last post by Dr.Wizard
I'm using IN-16 tubes for my seconds, and IN-8-2 tubes for hours and minutes.  I didn't have any trouble with the IN-16's other than their weird pinout with the 7 and 2 reversed.  My voltage is set to 170, and I used a 6.8K resistor for the anodes.

 8 
 on: June 03, 2016, 01:27:21 pm 
Started by Dr.Wizard - Last post by Dr.Wizard
digitalWrite is very slow and inefficient because it does error checking to make sure the user isn't trying something stupid, and because it has to decode which port and bit the requested pin is on.  And it makes your code much easier to read and understand.  Not necessarily bad, but in a multiplex routine, especially one called from an interrupt, speed counts.  The code gets executed hundreds of times a second.  If it's slow and inefficient, it leaves less processing power for other things.

A faster and more efficient way to control pins is the write directly to the control registers.  The disadvantages to this are the opposites of what I mentioned above.  You need to know what port and bit the pin is on.  You better get it right, because if you do it wrong, god only knows what could happen.  And it involves binary math and bit manipulation which can be rather confusing.

So here it is, a routine for controlling the output pins that writes directly to the ports.  It is literally 100 times faster (I benchmarked it!).

Code:
void setOutputs(byte bank, byte digit1, byte digit2) {

byte val1 = digit1 << 2; // Store number 1 in value 1, shift bits 2 places left (Move BCD value on last 4 bits to middle 4 bits)
byte val2 = digit2 << 6; // Put least 2 bits of Number 2 into upper 2 bits of Value 1
byte val3 = digit2 >> 2; // put highest 2 bits of Number 2 into lowest 2 bits of Value 2
byte val4 = (1 << (bank + 2));  // Choose which bit is needed to control the bank pins 10-13
// The bank selection is middle 4 bits, so the number needs to be shifted over by 2 bits

PORTD &= B00000011; // Turn pins 2-7 off
PORTB &= B11000000; // Turn pins 8-13 off
PORTD |= val1; // Set pins 2-5 to match BCD number held in middle 4 bits of Value 1
PORTD |= val2; // Set pins 6 & 7 to match highest 2 bits of value 1 which is lowest 2 bits of num2
PORTB |= val3; // Set pins 8 and 9 to lowest 2 bits of value 2 which is highest 2 bits of num2

PORTB |= val4; // Turn the appropriate pin (10-13) for the bank
}

This code is very specific to Arduino models Uno, Micro, Mini, Nano, and other Arduino clones that use the 328P chip.  To use it on a Mega, or some other type of microcontroller, you will need to change the ports and which bits get manipulated.

 9 
 on: October 31, 2015, 09:37:28 am 
Started by willystyle - Last post by nonentity
So I've put everything together, no visible cold solder joints, I plug everything in and do the voltage test - disconnected I can get to about 183v on the low end of the pot. Once the tubes are in, it reads about 149 or so, but only the middle two tubes light up and it seems as though multiple cathodes are lit. If it is displaying a number, it's indistinguishable to me. I also tested each of the tubes from anode to every cathode to verify there are no shorts in the tubes. I'm using the basic code off the site.

Looking for the next logical test steps...

Thanks in advance!

Can you tell us if your driver chips may have been fried? Pictures would help, but that's my first thought.

 10 
 on: October 31, 2015, 09:36:18 am 
Started by catdotgif - Last post by nonentity
Hey All,
      The nixie clock I built based on the Arduinix circuit is still going strong after three years.  Recently, the #3 digit on one of the IN-4 tubes stopped displaying as a number, and now there's just a blobby glow on one side of the tube.  I've had that happen once before on a tube that doesn't display the full 0-9 digits, and swapping it with another tube eventually cleared it up.  But this one appears to be sticking around.

I'm assuming what has happened is that some kind of filament bridge has formed between the number and the adjacent anode mesh.  I was thinking maybe I could run low voltage current through it to burn out the bridge, but I thought I'd post the issue first to see if anyone has had a similar problem and found a solution for it.  

thxthx!

Do you think it could be cathode poisoning?  If so, to reverse it, swap the anode and cathode for the digit in question and run it in "reverse" for a bit.

Pages: [1] 2 3 ... 10