DSCF5081.JPG Anyone following my electronics projects from the beginning has probably already picked up on my love of vintage displays. I’ve done several projects with old vacuum fluorescent displays and nixie tubes, but Christmas came early for me today in the post. I just got a package from Russia today with half a dozen IV-9 numitron tubes in it, which are a different display tube from the same era. How numitron tubes work is that it has eight tiny incandescent filaments arranged in the typical seven-segment plus decimal point configuration, and you simply pass current through the filaments you want lit up, and they literally light up exactly like a light bulb. They are still pretty easy to get online; you can get the IV-9 tubes I’m using for less than $3 a piece on eBay. Video:

This filament display has a huge advantage over VFDs or nixie tubes. VFDs take 40-60V and has the complexity of a heated cathode; nixie tubes require a heart stopping >120V, and both types require rather specialized driver ICs because of these high voltages. Numitron tubes, on the other hand, only need 2-3V, so I was able to use jellybean constant-current linear LED drivers out of my junk box. DSCF5084.JPG As a proof of concept, I plugged a numitron tube into a breadboard over an Allegro A6278 LED driver, but any constant-current driver will work, or even just some resistors and transistors. I hooked this up to an ATTiny2313 AVR and wrote a simple piece of code that cycled through all the digits 0-9. Finding information on the IV-9 tubes is a little challenging if you don’t happen to be able to read Russian, but about the only critical piece of information you need out of the datasheet is the filament current and the pinout, which are relatively easy to find; the filament current is still labeled mA, and the pinout diagram is relatively straight-forward once you realize the pins are numbered clockwise looking from the bottom of the tube. These filaments are specified for 17-22 mA. DSCF5088.JPG

numitron.c

// Kenneth Finnegan, 2011 - kennethfinnegan.blogspot.com
// Numitron Proof of Concept

#include <avr/io.h>      // this contains all the IO port definitions
#include <util/delay.h>

// This function basically wastes time
void delay_ms(long int ms) {
	for( ; ms > 0; ms--) {
		_delay_ms( 1);
	}
}

// SPI-like shifting out on PD[3..5]
void shiftout( int bitfield ) {
	int i;
	PORTD &= ~(1<<5); // Unlatch
	for (i = 7; i>= 0; i--) {
		PORTD &= ~(1<<4);
		PORTD = (PORTD & ~(1<<3)) | (!!(bitfield & (1<<i)) << 3);
		PORTD |= (1<<4);
	}
	PORTD |= (1<<5); // Latch
}

// These are the bitfields for the digits 0-9
// Based on how I plugged the IV-9 tube into the LED driver
unsigned char digits[] = { 0xed, 0x60, 0xae, 0xe6, 0x63, 0xc7, 0xcf, 0xe0, 0xef, 0xe3};

int main(void) {

	// Configure ports for output
	DDRB = 0xFF;
	DDRD = 0x38;
	int i, j;

	PORTB = 0; // Enable output

	while(1) {
		for (i=0; i<=9; i++) {
			shiftout(digits[i]);
			delay_ms(1000);
		}
	}
}

Like always, now that I have the proof of concept running, I’m working on a larger project, so look forward to that in the future.