close-circle
Close
0%
0%

Nixie Tap

Minimal USB powered Nixie display and IoT button

Similar projects worth following
close
Nixie Tap is a minimal device which will elegantly display information in living rooms, work desks and bedrooms.
The goal is to design a completely open product, and possibly manufacture a small batch via Crowdsupply.

Device displays time, date, as well as arbitrary information from Internet (temperature, cryptocurrency price, IFTTT...). It also has an IoT button functionality, via a piezo tap sensor.

Interaction:

  • piezo tap sensor
  • WiFi
  • serial port

Display:

  • 4 digit IN-12B, with dot
  • direct drive

Enclosure 

  • CNC machined wood / aluminium

Design logs:




current versionstatus
PCB1.1testing
enclosure
1.2in production
code0.9implemented NTP sync clock functionality
documentation0.9in progress

License:

  • 1 × ESP8266 (NodeMCU) WiFi controller board
  • 1 × BQ32000 Clock and Timer ICs / Real-Time Clocks
  • 1 × HV5812 Power Management ICs / Display Drivers
  • 1 × EECS0HD224H supercap Capacitors / Electric Double-Layer (EDL)
  • 1 × 74HC595 Electronic Components / Misc. Electronic Components

View all 8 components

  • Piezo sensor considerations

    mladen10/15/2017 at 20:56 0 comments

    Piezoelectric transducers are curious little devices. You can use them both ways, as a vibration source and as a vibration sensor.

    In this project, piezo crystal is used as a sort of a "knock" sensor, or a microphone. It’s glued to device walls from the inside.

    ESP8266 is continually polling (yeah, not too optimized) the A0 input. When device is tapped with a finger, piezo picks up the vibration, and generates a voltage spike. ESP8266 samples the voltage, and if it's over detection threshold, it considers that a tap event has occurred.

    I whipped up a demo code for this feature:

        adc_reading = analogRead(A0);
        if (adc_reading > threshold)
        {
            delay(5);
            adc_reading = analogRead(A0);
            if (adc_reading > threshold)
            {
                display.write(state,state,state,state,1);
            }
        }

     The result of this quick'n'dirty code is:

    As it can be observed from the video, this interface should be further optimized (skipped detection at 0 and 8). Maybe I need a transistor preamp, since handling this in code is tricky.

  • Firmware considerations

    mladen10/15/2017 at 19:05 0 comments

      Nixie Tap will have 4 "slots" for information display. For the time being, these slots are planned:

      1. Time
      2. Date
      3. Bitcoin value
      4. Ethereum value

      The user knows which slot is currently displayed by observing the blinking dot position.

      You'll notice that 50% of slots are taken by cryptocurrency. Hopefully, 4 digits won't be enough to display the price :)

      State diagram looks like this: 

      Basically, it should be an interrupt driven program. So, let's dive in:

      Prototype features

      Final features

      init

      Connect to WiFI using hardcoded credentials, get NTP time and store onto RTC

      Serve a WiFi Manager-like hotspot, for user entry of WiFi credentials

      main

      Wait for RTC interrupt and poll analog input to detect taps

      TBD

      RTC interrupt

      RTC fires an interrupt every 1s, this signals the main function to refresh display

      Display time

      Read time from RTC and refresh display

      Display date

      Read time from RTC and refresh display

      Display bitcoin

      Not implemented

      Read BTC value from Internet and display value

      Display ethereum

      Not implemented

      Read ETH value from Internet and display value

  • Nixie considerations

    mladen10/15/2017 at 18:05 3 comments

    This project is designed around IN-12B nixies (same as IN-12A but with a decimal dot in front of the number). Its compact size makes this tube perfect for a desktop display application.

    To make a Nixie, you take conductors shaped like numbers and place them in a Neon - filled glass tube. When the voltage across conductors gets over a certain threshold (striking voltage), gas around the conductor will light up, due to corona effect.

    In principle there are two ways to drive a Nixie:

    1. direct drive
    2. multiplexing

    In practice, multiplexing uses fewer pins, but may suffer from audible noise, because the nixie is a mechanical beast which can behave like a speaker due to vibrations.

    Since I don't want my clock to buzz at me, I opted for a direct drive strategy.

    To sustain the digit glow, a sufficient current needs to flow through the tube. Based on the tube datasheet and experimentation, the circuit is currently tuned to the following operating point:

    • Anode voltage: 170 V
    • Sustain voltage: 130 V
    • Digit current: 1.8 mA (this might be too low, datasheets recommend 2-3.5 mA)
    • Dot current: 0.2 mA (this might be too low, datasheets recommend less than 0.7 mA)

    This is what the schematic for that part looks like:

    Here I found three options: 

    1. NOS single piece sockets
    2. Generic 1mm tube pin sockets
    3. Specialty brand name ~1mm sockets (e.g. HARWIN H3153-01)

    NOS single piece sockets have a huge advantage when it comes to PCB assembly. These sockets are held together by some sort of resin, which makes soldering easier. However, they are relatively bulky, and I wanted to stay away from NOS as much as possible.

    Generic pin sockets are readily available, cheap, but probably require hand soldering, so this option may end up being more expensive than NOS option. In any case I chose this option:

    Brand name sockets are also an option, but I gave up on these, as they are more expensive than generics.

  • HV driver considerations

    mladen10/15/2017 at 15:57 5 comments

      ESP8266 is low on available GPIO, and since the project needs 11 x 4 = 44 signals, really the only way was to use some sort of a port expander or SPI driver.

      Microchip's HV5812 is a nice IC, SPI input, 20 parallel outputs:

      When LOW, HVOUT goes to GND, Nixie sees more than 130 V and turns on. When HIGH, HVOUT goes to ~VPP (in our case 80V). Nixie now has 130 V - 70 V = 60 V on it, which is not sufficient to turn it on.

      Now we just connect HV5812 to ESP8266 SPI and all is fine and dandy! But…oh…not so fast:

      Fortunately, there is a component which operates on 3.3V SPI and can output 5V SPI: the jellybean 74HC595!

      So, we buy two HV5812 (40 digits) and one HC595 (4 dots), and we get level shifting for free! 

      Only thing is, HC595 needs external high voltage transistors, such as MMBTA42. 

      An obvious question pops up: why didn't I use 6 x 74HC595? Why do I need HV5812 ICs when HC595s are available everywhere? 

      Let's look how much these parts cost:

      Price @1 qty

      Price @ 100 qty

      Price @ 1000 qty

      HV5812

      2.32

      1.75

      1.75

      74HC595D,118

      0.43

      0.2

      0.10526

      MMBTA42

      0.17

      0.085

      0.0357

      [units: $, source: Digi-Key]

       HV5812 is 5 times more expensive than HC595, and the situation only gets worse at higher quantities. Also, for some reason, Microchip price breaks end at 100 pcs. Maybe they don't like selling high quantities through Digi-Key?

      Another funky thing about economies of scale: 1000 pcs of HC595 cost the same as 526 pcs! Go figure.

       Let's now compare total cost for two driver solutions (pick and place costs excluded):

      1. 2 x HV5812 + 1 x HC595 + 4 x MMBTA42
      2. 6 x HC595 + 44 x MMBTA42 

      Price @1 qty

      Price @ 100 qty

      Price @ 1000 qty

      Solution 1

      5.75

      4.04

      3.75

      Solution 2

      10.1

      4.94

      2.2

      [units: $, source: Digi-Key]

      Bulk of the cost for Solution 2 is in the transistors, which make up around 75% of the cost for all price breaks. 

      Solution 1 is the overall winner for lower volume categories. So, HV5812 it is!

  • Enclosure design

    mladen10/04/2017 at 18:57 2 comments

    Device design will be as simple as possible, so that it can fit any environment: work desk, coffee shop, or library. This means no backlight LEDs, no huge logo, only streamlined material shapes.

    So, we need:

    - "raw" materials  

    - streamlined design

    - manufacturable design 

    This log is work in progress.

    Prototype 1

    The starting idea was to use aluminium and wood, and after short brainstorming this came out:

    Natural materials are present, but enclosure is not smooth, and manufacturing is complicated, due to two materials. At the same time, top aluminium plate looks like it's missing something, a CNC marking, which further complicates the manufacturing. 

    Prototype 1.1

    Frustrated by the previous combination of materials, I moved on to a single wood (or Aluminium) block:

    Now everything is smooth, manufacturing is simpler. Enclosure can be painted glossy black, or manufactured in a nice wood, such as mahagony, which would give it that nice "Rolls-Royce dashboard" look.

    Before plunging in to CNC wood milling, I decided to manufacture this prototype on a 3d printer in a local service in Serbia. After a short wait, it arrived: This prototype illustrated why you should always prototype before production.

    It appears that Nixie cutouts are too big, which means that the whole device can be scaled down a little. Also what became apparent after playing around is that the device itself looks way nicer when tubes are recessed:

    On the rear side, I planned to have a cover plate, made from FR4 or Aluminium. This cover plate is attached to the enclosure via two screws, one for left and one for right side:

    Time to move to Prototype 1.2 version.

  • PCB v1.1 assembled

    mladen10/02/2017 at 21:47 0 comments

    PCBs arrived from Seeedstudio, I promptly soldered them and fired up the device, and it worked (after a few modifications :)

    Now on to design and manufacture the enclosure.

  • NodeMCU challenges

    mladen09/21/2017 at 21:27 0 comments

    NodeMCU is an impressive development platform. However, I encountered some limitations while using it for this project. This is a short writeup about these limitations (to be updated).

    Encountered issueSolution
    Pin numbers on NodeMCU PCB don't match ESP8266 pinsIgnore PCB pin numbers. Always refer to ESP8266 pin numbers. Make a schematic symbol which labels the pins as ESP GPIO.
    GPIO0, GPIO2 and GPIO15 require extra care Use these pins as outputs. They also have pulldowns/pullups, so extra care is required. See here
    MOSI, MISO, SCLK signals not workingUse HMOSI, HMISO, HSCLK
    PWM only goes to 1 kHzno real solution, use ESP32 if this is too low
    USB protection diode gets hot at higher currentsPossibly a fake diode. To be investigated. Replace with a well-known brand

  • PCB and Schematic draft for the 1.1 version

    mladen09/21/2017 at 20:48 0 comments

    Currently, this is how the schematic looks like:

    and the PCB:

    This was done in Altium. However, I want to migrate to Kicad, so, after I confirm that this version is working, this will be redrawn in Kicad. 

    Currently, this version is in production. Hopefully I will receive the boards during the next week.

View all 8 project logs

Enjoy this project?

Share

Discussions

V.G.C. wrote 10/15/2017 at 14:08 point

Interesting project. I did something like that.

  Are you sure? yes | no

agmlego wrote 10/13/2017 at 20:41 point

I was wondering that myself. That driver looks nice, but it does not have a terribly high voltage rating since it is designed for VFDs. 

  Are you sure? yes | no

mladen wrote 10/14/2017 at 21:29 point

Yeah, the driver is cool! Really easy to use, simple SPI, can be daisy chained with other SPI devices...

  Are you sure? yes | no

jcwren wrote 10/13/2017 at 18:42 point

The HV5812 is rated to 80V, yet your HV_MID is going to be 85V if the HV is 170V. Although the absolute maximum rating is 90V, maximum is 80V, you're risking premature failure. Are you considering limiting the output of the HV module to 160V?

  Are you sure? yes | no

mladen wrote 10/14/2017 at 21:26 point

Good catch, thanks :) 

Thing is, for the next version I'll be using an adjustable HV module. I might either set the HV module output, or adjust the HV_MID voltage divider to give under 80V.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates