TaylorEdge SmartNixies and Arduino / AVR

193 views
Skip to first unread message

TheJBW

unread,
Aug 22, 2015, 8:42:10 PM8/22/15
to neonixie-l
Has anyone used the Taylor Electronics Smart Nixie modules with an Arduino or bare AVR? I've been trying to get a simple single tube test to work and have been banging my head against the wall... I just want a test routine, for now that lets me write a digit over I2C.

Basically, I've connected the smart socket to SCL, SDA (with 2.2k pullups to +5V), GND and +5V on the Arduino board, am using a TES1364 wired to +170V. Occassionally, I'll get a '0' or '1' display, but with zero consistency. Yes, I've set all the DIP switches to 'OFF' which should correspond with and address of 0x10.

My code:
#include <Wire.h>

void setup()
{
 
Wire.begin(); // join i2c bus (address optional for master)
 
Serial.begin(9600);
}

void loop()
{
 
for(byte i = 0; i < 10; i++)
 
{
   
Wire.beginTransmission(0x10); // transmit to tube address
   
Wire.write(0x00);
   
Wire.write(i);              //number
   
Wire.endTransmission();    // stop transmitting
   
Serial.println(i);
    delay
(500);
 
}
}



taylorjpt

unread,
Aug 24, 2015, 2:08:33 PM8/24/15
to neonixie-l
Per the data sheet (http://www.tayloredge.com/storefront/SmartNixie/DataSheets/Datasheet_SmartNixie.pdf), all of the switches need to be set to the "ON" position = "0000" for the device to boot as slave zero = 0x10.  All switches set to the off position boots the unit as the master in a 4 or 6 digit clock using the RTC as a time reference.  See figure 19 and table 25 for programming example and register map respectively.

Note that the DIP switches are only read at the modules power up boot, so you can't set the inputs to zero after power up and expect the module to recognize the state.

jt

TheJBW

unread,
Aug 25, 2015, 1:47:57 PM8/25/15
to neonixie-l
John,

Thanks for the advice. I definitely had the polarity of the switches wrong in my head. Unfortunately, I am still getting no joy out of the tubes. After a long power off, they will flash briefly when brought up, so I am fairly confident that the micro is alive. Voltages look good, and I am seeing clean pulses on the i2c lines... I tried poking the brightness register as in the datasheet, just in case, as well.

taylorjpt

unread,
Aug 25, 2015, 6:16:59 PM8/25/15
to neonixie-l
The flash is the charge coupled from the fast rising transistor drains coupled into the gates that turns on all segments just before the processor boots and sets all segments to off.  This is the result of avoiding putting pull down resistors on every gate for space considerations.

The first thing to check is whether you are getting an ACK from the first address write to the device, 0x10 for write and 0x11 for read:  Note that 0x10/0x11 is the full 8 bit address of the device with the Read/nWrite bit included and
not a 7 bit address that needs to be shifted left to be 0x20 and 0x21 for write and read respectively.  This can be clearly seen in figures 16a and 16b of the datasheet (http://www.tayloredge.com/storefront/SmartNixie/DataSheets/Datasheet_SmartNixie.pdf).  If you are getting the ACK then the addressing is correct and then you can move on to register access problems.

jt

taylorjpt

unread,
Aug 25, 2015, 6:26:46 PM8/25/15
to neonixie-l
Note that every device is tested for 100% functionality including all addressing modes and all drivers.  This testing is all done with an automated tool through the same I2C interface that you are using.  Be sure that SDA and SCL are properly connected with 2.2K pull ups and the interface is running at 100kbps (I2C-Slow).

You can test the processor and drivers stand alone by setting the DIP switches to 1000 (A3 A2 A1 A0) = Off On On On and then powering up the module:  When the module boots up with this setting it counts from 0 to 9 in nixie 1-of-10 mode continuously.

jt

TheJBW

unread,
Nov 3, 2015, 3:50:29 PM11/3/15
to neonixie-l
John,

Thanks for your detailed reply. I hadn't had a chance to touch the Nixies for two months, so it's sat idle until today. I messed around with the code and it turns out that the addressing was the problem (I never doubted that the smart nixie modules were working correctly :-) ). What I found is that the Arduino I2C insists on using 7 bit addressing with a left shift, so I had to *right shift* my effective address. The code that works (I've tested it with an individual address instead of iterating and fun the individual test for the first five addresses in the space to confirm that something else isn't happening).
Here is my working code that simply counts 0-9 and loops:

#include <Wire.h>

void setup()
{
 
Wire.begin(); // join i2c bus (address optional for master)
 
Serial.begin(9600);



 
for(byte j = 0; j < 6; j++)
 
{
     
Wire.beginTransmission(0x08 + j); // transmit to tube address
     
Wire.write(0x0B);
     
Wire.write(50);
     
Wire.endTransmission();    // stop transmitting

 
}    
}


void loop()
{
 
for(byte i = 0; i < 10; i++)
 
{

   
for(byte j = 0; j < 6; j++)
   
{
       
Wire.beginTransmission(0x08 + j); // transmit to tube address
       
Wire.write(0);
       
Wire.write(i);

       
Wire.endTransmission();    // stop transmitting
   
}    
   
Serial.println(i);

    delay
(50);
 
}
}

Thanks again for your help and responsiveness. 
Reply all
Reply to author
Forward
0 new messages