Nixie thermometer

nixie-61

Luca Dentella has developed a Nixie thermometer to measure the temperature of the liquid cooling system, that is available on Github.

 I decided to log the design and the development of the project in ten blog posts. They show my “divide et impera” approach: I divided the whole project in small tasks (drive a nixie with Arduino, read the temperature from a thermistor, use an rgb led module, prepare the first prototype on a perfboard, design the pcb, assembly the final product), all described on my blog with examples and videos.

Project info at Lucadentella.it

Check out the video after the break.

Nixie thermometer

nixie-61

Luca Dentella has developed a Nixie thermometer to measure the temperature of the liquid cooling system, that is available on Github.

 I decided to log the design and the development of the project in ten blog posts. They show my “divide et impera” approach: I divided the whole project in small tasks (drive a nixie with Arduino, read the temperature from a thermistor, use an rgb led module, prepare the first prototype on a perfboard, design the pcb, assembly the final product), all described on my blog with examples and videos.

Project info at Lucadentella.it

Check out the video after the break.

Nixie thermometer – Completed!

The design and development of this project is described in ten blog posts: for the chronological list follow this link

Today I received from Elecrow the PCB for my Nixie thermometer:

nixie-39

Here are two photos of the top and bottom sides:

nixie-40 nixie-41

First, I soldered the female connectors for the Arduino and the power supply module on the bottom side; then I soldered the sockets, the resistors and the 5V voltage regulator on the top side:

nixie-42 nixie-43

Before going further, I performed a smoke test: it’s indeed very important to check that the power supply is correct measuring with a multimeter the voltage that is present in different points (sockets, leds…) of your circuit. The test was ok, so I put in place the nixie with the symbol °C and verified that it lighted up (that nixie is directly connected to the power supply):

nixie-44 nixie-45

At least, I soldered the led modules, inserted the drivers in their sockets and put the other nixie tubes in pace: the project was completed!

nixie-46 nixie-47

nixie-48 nixie-49

nixie-50 nixie-51

Gallery

Here are some shots of the nixies with different led colors and a short video about the project:

nixie-60 nixie-61

nixie-62 nixie-63

nixie-64 nixie-65

Mistakes

When I was assembling the first PCB, I noticed two mistakes:

  • the silk screen of the power connector is wrong: the + mark is near the negative pin
  • the distance between the nixie tubes is not enough: the PCBs overlap

nixie-52 nixie-53

I’ve already updated the Eagle files in my Github repository

Nixie thermometer – Completed!

The design and development of this project is described in ten blog posts: for the chronological list follow this link

Today I received from Elecrow the PCB for my Nixie thermometer:

nixie-39

Here are two photos of the top and bottom sides:

nixie-40 nixie-41

First, I soldered the female connectors for the Arduino and the power supply module on the bottom side; then I soldered the sockets, the resistors and the 5V voltage regulator on the top side:

nixie-42 nixie-43

Before going further, I performed a smoke test: it’s indeed very important to check that the power supply is correct measuring with a multimeter the voltage that is present in different points (sockets, leds…) of your circuit. The test was ok, so I put in place the nixie with the symbol °C and verified that it lighted up (that nixie is directly connected to the power supply):

nixie-44 nixie-45

At least, I soldered the led modules, inserted the drivers in their sockets and put the other nixie tubes in pace: the project was completed!

nixie-46 nixie-47

nixie-48 nixie-49

nixie-50 nixie-51

Gallery

Here are some shots of the nixies with different led colors and a short video about the project:

nixie-60 nixie-61

nixie-62 nixie-63

nixie-64 nixie-65

Mistakes

When I was assembling the first PCB, I noticed two mistakes:

  • the silk screen of the power connector is wrong: the + mark is near the negative pin
  • the distance between the nixie tubes is not enough: the PCBs overlap

nixie-52 nixie-53

I’ve already updated the Eagle files in my Github repository

Nixie thermometer – PCB

The design and development of this project is described in ten blog posts: for the chronological list follow this link

After having verified that everthing is ok (electronic prototype and sketch) it’s now time to develop the PCB for my Nixie thermometer.

I opened Eagle and drew the schematics:

nixie-36

I then started to design the PCB. The request was that it should have been round and as small as possible. Therefore I decided to place the components on both sides, with the biggest modules (the power supply and the Arduino pro Micro) on the bottom one.

The result is as follows:

nixie-top nixie-routed

It’s very important during this phase to verify that everything is properly connected: it’s indeed better to spend a couple of minutes now, than receive a wrong PCB from the service two-three weeks later. For this reason, I printed the drawings (top and bottom layers) at double size and I checked – with the help of a marking pen – all the connections comparing them with my perfboard prototype:

nixie-37 nixie-38

Once verified that everything was ok, I prepared the Gerber files and sent them to my service (for this project I chose Elecrow).

In my repository on Github you can download the Eagle files and also a ZIP archive that includes all the required Gerber files, ready to be uploaded on the service’s website.

 

Nixie thermometer – PCB

After having verified that everthing is ok (electronic prototype and sketch) it’s now time to develop the PCB for my Nixie thermometer.

I opened Eagle and drew the schematics:

nixie-36

I then started to design the PCB. The request was that it should have been round and as small as possible. Therefore I decided to place the components on both sides, with the biggest modules (the power supply and the Arduino pro Micro) on the bottom one.

The result is as follows:

nixie-top nixie-routed

It’s very important during this phase to verify that everything is properly connected: it’s indeed better to spend a couple of minutes now, than receive a wrong PCB from the service two-three weeks later. For this reason, I printed the drawings (top and bottom layers) at double size and I checked – with the help of a marking pen – all the connections comparing them with my perfboard prototype:

nixie-37 nixie-38

Once verified that everything was ok, I prepared the Gerber files and sent them to my service (for this project I chose Elecrow).

In my repository on Github you can download the Eagle files and also a ZIP archive that includes all the required Gerber files, ready to be uploaded on the service’s website.

 

Nixie thermometer – the prototype is complete!

The design and development of this project is described in ten blog posts: for the chronological list follow this link

Today I completed the prototype of my Nixie thermometer.

First, I put some heat-shrink tubing around each RGB led, to be sure that the light is emitted only upward and that the tubes are illuminated through the holes in the PCBs:

nixie-33

Then I wrote a sketch that includes all the previous examples, including the cycling (everytime you press the button) of the leds’ colors. You can download the final sketch from my Github’s repository.

Here are some shots and a video about how it works…

nixie-34 nixie-35

Nixie thermometer – the prototype is complete!

Today I completed the prototype of my Nixie thermometer.

First, I put some heat-shrink tubing around each RGB led, to be sure that the light is emitted only upward and that the tubes are illuminated through the holes in the PCBs:

nixie-33

Then I wrote a sketch that includes all the previous examples, including the cycling (everytime you press the button) of the leds’ colors. You can download the final sketch from my Github’s repository.

Here are some shots and a video about how it works…

nixie-34 nixie-35

Nixie thermometer – RGB leds

The design and development of this project is described in ten blog posts: for the chronological list follow this link

My thermometer will have RGB leds beneath every nixie tube, to be able to light them up with different colors.

I decided to use pre-built modules, which include the RGB led and also all the required components (resistors…):

nixie-25

Within the led package, there’s a WS2812 (datasheet) control chip, which offers 16M of colors, 256 levels of brightness and a minimum refresh rate of 400Hz.

You can control those WS2812 drivers using a simple serial protocol: the different leds are chained (DOUT -> DIN) and the first one is connected to a digital PIN of your Arduino, the different commands are sent through.

Adafruit developed an handy library (NeoPixel) which you can install directly via Library Manager:

nixie-26

Let’s see how to use it.

First, you need to define a new Adafruit_NeoPixel object with some parameters:

#define PIXEL_PIN    3
#define PIXEL_COUNT   10
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

The first parameter identifies the PIN of your Arduino the leds are connected to and the second one the number of leds.

The third parmeter configures some aspects of the library and depends on the specific driver you’re using. Two different behaviors are defined:

  • the sequence of the three primary colors (NEO_GRBNEO_RGBNEO_RGBW)
  • the speed (frequency) the data is sent (NEO_KHZ400NEO_KHZ800)

In the setup() it’s mandatory to initialize the library:

strip.begin();

You can then change the color of each led with the following command:

strip.setPixelColor(#led, red, green, blue);

the first parameter identifies the led your sending the command to (0 is the nearest to Arduino) and the next three ones are the values for each primary color.

To send the new colors to the leds, remember to use the command:

strip.show();

I wrote a sketch (Github) that changes the color of the leds using the sequence defined in a matrix:

uint8_t colors[8][3] = {
  {0,0,0},
  {255,0,0},
  {0,255,0},
  {0,0,255},
  {255,255,0},
  {255,0,255},
  {0,255,255},
  {255,255,255},
};

Each time you press the button, the next color is used:

While I was testing the sketch, I noticed that the 5V output of my y nixipower supplier wasn’t enough to power also the leds. Because of this, I added to my prototype an external linear regulator (7805) that powers both my Arduino and the leds:

nixie-32

Nixie thermometer – RGB leds

My thermometer will have RGB leds beneath every nixie tube, to be able to light them up with different colors.

I decided to use pre-built modules, which include the RGB led and also all the required components (resistors…):

nixie-25

Within the led package, there’s a WS2812 (datasheet) control chip, which offers 16M of colors, 256 levels of brightness and a minimum refresh rate of 400Hz.

You can control those WS2812 drivers using a simple serial protocol: the different leds are chained (DOUT -> DIN) and the first one is connected to a digital PIN of your Arduino, the different commands are sent through.

Adafruit developed an handy library (NeoPixel) which you can install directly via Library Manager:

nixie-26

Let’s see how to use it.

First, you need to define a new Adafruit_NeoPixel object with some parameters:

#define PIXEL_PIN    3
#define PIXEL_COUNT   10
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

The first parameter identifies the PIN of your Arduino the leds are connected to and the second one the number of leds.

The third parmeter configures some aspects of the library and depends on the specific driver you’re using. Two different behaviors are defined:

  • the sequence of the three primary colors (NEO_GRBNEO_RGBNEO_RGBW)
  • the speed (frequency) the data is sent (NEO_KHZ400NEO_KHZ800)

In the setup() it’s mandatory to initialize the library:

strip.begin();

You can then change the color of each led with the following command:

strip.setPixelColor(#led, red, green, blue);

the first parameter identifies the led your sending the command to (0 is the nearest to Arduino) and the next three ones are the values for each primary color.

To send the new colors to the leds, remember to use the command:

strip.show();

I wrote a sketch that changes the color of the leds using the sequence defined in a matrix:

uint8_t colors[8][3] = {
  {0,0,0},
  {255,0,0},
  {0,255,0},
  {0,0,255},
  {255,255,0},
  {255,0,255},
  {0,255,255},
  {255,255,255},
};

Each time you press the button, the next color is used:

While I was testing the sketch, I noticed that the 5V output of my nixie power supplier wasn’t enough to power also the leds. Because of this, I added to my prototype an external linear regulator (7805) that powers both my Arduino and the leds:

nixie-32