切换到宽版
爱科技/爱创意/爱折腾/爱极致;技术知识分享平台,点击进入新版数码之家网站
  • 16183阅读
  • 48回复

[外设]【Nixie DIY】QS30-1 Nixie Module | 辉光管显示模块 [复制链接]

上一主题 下一主题
离线yanzeyuan
 

发帖
411
M币
1853
专家
22
粉丝
327
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2012-07-20
辉光数码管|Nixie tube,上世纪60-80年代的产物,电子技术发展历史的见证之一,相信有很多朋友对其了解甚少甚至从未亲眼所见。
但就是这现如今已濒临绝迹的古老器件,却让见过她的人都无法忘记那特有的显示效果,甚至开始感叹40年前的创造竟赋有如此的艺术气息…
单单是看到管身上那淡淡的白色印戳,刹那间便让人肃然起敬——这些辉光管的出生竟然比我还早许多年…
或许这样几十年,她等待的只是一份热情,一次点燃她内心火红热情的电击……


为了让这古老的并极富艺术气息的器件发辉余热,近些年来我一直在努力寻找现代技术与古典相结合的应用。虽然也创作出不少经典作品,但随着一次次的思维枯竭,便萌发了一种把辉光管作为显示模块的想法,这样便可以把更多的精力和时间投入到创意制作当中,而不必去反复思考如何产生170V高压、如何整理逻辑驱动器、如何去焊接制作……


而且对于很多爱好者来说,无需硬件基础,只需要懂一点单片机知识,有一个最简单的单片机系统板,或Arduino系统板,4条IO口线,即可完成对几十个辉光管的显 示控制(每个模块还带有1个RGB全彩LED,两个氖灯作为冒号或小数点应用)。


首先感谢aGuegu在第一时间协助测试该辉光管显示模块,并开发了Arduino类库。


先简单的介绍一下辉光数码管,她是真空电子时代的产物,是利用辉光放电效应产生光亮来显示数字及符号的一种电子元件,诞生于上世纪60年代,到了80年代末慢慢的被其他技术所创造的新型器件所取代。
该辉光管模块采用的是中国产QS30-1型辉光数码管,它是一款较为常见的型号,直径30mm,顶部显示方式,插拔式13脚封装。先介绍一下辉光数码管的特点:


辉光数码管有四个特点:
1、较高的工作电压。辉光管的工作电压在直流170V以上,所以对于现代低电压设备时代来讲,要让他工作起来的难点在于如何产生DC170V以上的工作电压。
2、工作电流较小。工作电流较小是辉光放电效应的特征,辉光管的工作电流只有1mA-3mA左右,几乎没有什么功耗,并且不发热。
3、字形独特,显示具有层次感。辉光管中的数字或者符号都是一片片专门的金属制作并堆叠而成,独特完整的字形令现代的7段数码管、点阵显示模式都无法抗衡。
4、温暖的橘红色光芒。辉光管内部气体是氖气,辉光放电效应所产生的光芒为橘红色,尤其是在夜晚,朦胧之下给人温馨之感。

下面先看一下实物图片,然后再做详细介绍:




在DIY设计之初规划这个辉光管显示模块功能的时候,只有一个目的:让每一个喜欢辉光管的朋友,都能按照自己的想法和创意组合出满意的作品和应用,而无需关心辉光管本身复杂的电源系统和驱动模块。
所以每一个模块应该都能独立工作,并且采用最简单的方式进行级联和组合。模块要小巧,组合起来之后要能感觉为一个整体。最重要的是要提供一个简单的驱动接口,而不是每增加一个模块都要增加应用的负担。


QS30-1辉光管显示模块有以下特点:
1、采用中国产QS30-1辉光数码管作为显示器件(管身直径30mm,高25mm,显示内容为数字0-9,显示颜色橘红色),其他PINtoPIN代换型号:SZ-8,SZ3-1。
2、采用顶级13针陶瓷管座,非胶木管座可比,美观大方,插拔方便可靠。
3、插拔式无限级联设计,无需复杂的接线方式。
4、板载RGB全彩LED,每个模块可独立控制LED发光颜色。
5、板载两个Neon Lamps,可独立控制每个氖灯,实现冒号或者小数点的应用。
6、提供非常简单的通讯接口,仅需要4个IO,可连接任意一款单片机最小系统版或Arduino主板。
7、12V直流供电,每个模块的工作电流小于100mA。
8、提供DC5V输出,可为单片机主板或Arduino主板直接供电,无需另配电源。
9、双层双面镀金电路板,尽显艺术气息。
10、采用激光切割进口亚克力材料制作上下面板,搭配不锈钢内六角螺丝,保护人体不会接触到170V高压。
11、内置测试按钮,在没有任何主控驱动的情况下,可单独测试模块和辉光管是否工作正常。
为了达到以上功能和特点,从原理图设计到PCB电路板设计、以及3D模型建立,都进行了一次次调整,最终出炉的QS30-1辉光管显示模块即是完美之作。





从电路设计上来讲,该模块由以下部分组成:
一、高效率DC-DC升压模块
辉光管工作电压需要直流170V,而供电电压为安全的直流12V,所以必不可少的要具备12V-170V的DC-DC升压电路模块。
该模块由MC34063A及外围元器件组成,能够提供高效率的升压转换,并且整个模块几乎没有发热现象。
二、LDO DC5V电源模块
该模块的其他逻辑芯片和LED需要5V的工作电压,并且该模块还能够直接输出DC5V给单片机系统板或Arduino系统版供电,所以必不可少要具备LDO降压电源模块,输出为直流5V。
该模块有78M05及外围器件组成。
三、辉光管级联驱动模块
由于该模块采用了级联设计模式,所以必须具备可级联扩展的驱动电路做辉光管、LED、NeonLamps的控制。
在这里该模块采用了经典的74HC595作为数据层驱动器件,并在模块左右两端引出了串入串出接口,可级联并无限扩展。
四、RGB LED显示器件
在辉光管底部,该模块安装了一个5050的RGB全彩LED,可通过通讯控制,使其显示各种色彩。
五、Neon Lamps氖灯
为了满足各种应用的需要,在每个辉光管的右侧,安装了两个氖灯,可独立控制每一个氖灯的开和关,实现冒号或者小数点的显示应用。
系统图如下:

先看电路板,如同我其他作品的一贯风格:深蓝色PCB板、沉金工艺……
所有器件选型均是为了保证模块尽量的紧凑,但却不失功能上的完备。


整个模块分为上下两层电路板,每块电路板上的元器件位于同一侧,两块电路板通过一个4Pin的插针相连接,见下图:




白色陶瓷管座位于顶层电路板的上方,陶瓷管座是电子管的完美搭配,通体纯白色,绝缘,一致性好,并且可靠耐用。
在陶瓷管座的右侧有两个3mm直径的氖灯,氖灯的位置也经过精心设计,当两块模块组合在一起的时候,氖灯恰好位于两只辉光管的正中间位置。
请看下图:

底部电路板的背面无任何元器件,但用镀金文字标注了安全提示。
并且所有焊点也都经过了特殊处理,焊点圆滑光亮,见下图:

底部电路板上主要排列的是DC-DC升压电路(输出直流170V高压)以及LDO降压电路(输出直流5V)。
顶部电路板上主要排列的是RGB LED的驱动电路以及QS30-1辉光管的驱动电路。
所有芯片及元器件紧凑的排列在两块电路板上,当两块电路板扣在一起后,所有器件均位于两电路板内侧,既保证了美观,又保证了安全。

最值得一提的是这两块激光切割的亚克力面板。在此前发给aGuegu测试的时候,还没有这两块面板,就是靠PCB本身来用作外壳,后来发现这样我们在接触模块的时候很容易触碰到电路板上的焊点。因为有170V高压,并不十分安全。所以后来使用进口透明亚克力板材料,经过激光切割加工,为该模块配备了完美的上下面板。
进口的3mm透明亚克力材料加上激光切割工艺,无论从效果上还是精度上,都与模块完美搭配。

固定电路板与亚克力面板的螺丝也经过精心挑选和设计,采用的是M3不锈钢内六角螺丝。
并且在亚克力面板和PCB电路板之间采用了1mm厚的尼龙垫片支撑。
下面是组装完成的模块:


在模块的左侧,可以看到上下两个2×3的母座,右侧是两个2×3的插针,模块级联的时候,只需要将两个模块的插针插入母座即可,无需有其他任何电器连接。
即通过这几个插针完成级联了电源供给、通讯数据传输的功能。


主控设备只需要将通讯线和12V电源线连接至最右边的第一个模块的插针上即可完成对整个级联模块的控制。
而且在最右边的一个模块上,还可以通过插针直接输出5V直流电压,供给单片机主板或Arduino主板5V电源。
看一下左右两侧的连接器以及级联以后的效果:





由于该模块需要有控制设备(单片机控制板或者Arduino主板)进行通讯控制才能按照我们的要求显示各种效果,单独通电的时候并不能显示数字,所以为了方便测试,我在设计的时候在电路板上精心设计了一个测试按钮。
在没有控制设备的情况下,给显示模块通电后,按下此按钮,辉光管会显示数字6,用来测试模块是否工作正常,并且能够测试辉光管是否漏气或损坏:

将模块与控制板连接起来以后,就可以通过简单的程序控制每一个模块的显示内容、LED颜色和氖灯了。
接下来对本木块进行通电测试:
在这里,我通过一个C8051F340的单片机最小系统板控制之后,打开背光,显示数字,单个模组和单片机控制板的总耗电电流是130mA。
级联10个模组以后,总电流恰好是1000mA。
假设每个模组耗电电流为x,单片机控制板耗电电流为y,则通过两个等式:
x + y = 130
10x + y = 1000
——————-
得出每个QS30-1辉光管显示模组的耗电电流约等于97mA。
见下图:


级联之后,我们可以通过控制程序来对每一个模块的显示数字、背景LED颜色、冒号显示方式进行分别控制:
【数字显示】:支持关闭或者显示数字0、1、2、3、4、5、6、7、8、9;
【背景灯】:支持关闭或者显示白色、紫色、青色、黄色、蓝色、绿色、红色;
【冒号】:支持关闭或者上点、下点、冒号;
多彩的背景色变换、不同的数字显示方式将能够实现我们几乎所有的关于数字显示的应用,例如:时钟、计时器、计数器、计算器等等……


接下来,欣赏一下各角度美图吧~~~
下图是用于控制的一块单片机最小系统板和级联模块的合影。
可以看到,除了通讯用得4个IO之外,从模块引出的还有一对红黑线给单片机控制板供电:

从侧面看去,不同的颜色从底部投射过来,整个QS30-1管身通体透亮~~~

最喜欢的是这张,夜晚朦胧的感觉……
如果再利用程序将背景色进行随机或有序的变换,或者利用OE控制端对整个辉光管显示的亮度以及LED的亮度进行PWM控制,将得到的是更为绚丽的效果。

再来一组近照,仔细观察哦,氖灯冒号组和辉光管的颜色完全一致:


再看这张,通透的管身上静静的铭记着它的身份:型号QS30-1,品牌-风光,出生日期1978年8月……
除了惊叹之外,多了一份敬畏,因为她比我出生的还要早好几年……

再来一组组合照:









伴着色彩斑斓的幽幽光芒,仿佛穿越在两个不同的时代……

40年前的她们,刻有历史,承载着一代人的智慧;
40年后的应用,赋予她们新的生命,塑造着古典与现代的完美结合。


而最让人欣慰的是,有了这些显示模块,我们可以自由的放飞自己的创意,并且实现它,不用再为如何点亮和驱动辉光管望而却步。


该模块支持任何类型的单片机控制板,只需要4个IO通讯端口,并且提供51参考代码





QS30-1 Nixie Module | 辉光管显示模块 介绍【软件篇】


或许我们对她独特的显示效果始终难以忘怀,但要让她焕发夺目色彩,重点还在于应用。该模块在其硬件方面已经具备了完备的功能,应用软件方面则需要结合实际应用要求来设计。先来回忆一下那种火红的朦胧:

无论何种应用方案,基于硬件设计原理,该模块的底层控制实为对74HC595的通讯控制,在这里,我以51单片机控制板为核心来介绍一下底层驱动软件的设计方法。
每个显示模块的辉光管数字0-9和RGB LED以及两颗Neon Lamps均由两片74HC595来控制,共需要16bit(2Byte)数据。根据原理图,两片74HC595共有16个输出端对应16bit数据,对应关系表如下:

根据对应关系表,可以得出辉光管各种显示状态、RGB LED和Neon Lamps的对应数据表:

(1:高电平,0:低电平,x:无关)
为了方便对RGB LED、Neon Lamps和辉光管进行控制,在这里我采用了结构体来对整个模块的各种显示模式进行了配置。
代码如下:
123456struct t_Module{uint    LED;        //LED颜色uint     CLO;        //冒号状态uint     NUM;        //显示数字};

同时,根据各种显示状态,按照对应关系表进行了预定义,每个状态被定义成一个16位的uint类型常量。
代码如下:
12345678910111213141516171819202122232425#define    LED_OFF            0x7000         //LED关#define    LED_WHITE        0x0000        //LED白色#define    LED_PURPLE        0x4000        //LED紫色#define    LED_CYAN        0x2000        //LED青色#define    LED_YELLOW        0x1000        //LED黄色#define    LED_BLUE        0x6000        //LED蓝色#define    LED_GREEN        0x3000        //LED绿色#define    LED_RED            0x5000        //LED红色 #define    CLO_OFF            0x0000         //氖灯关#define    CLO_UP            0x0400        //氖灯上点亮#define    CLO_DOWN        0x0800        //氖灯下点亮#define    CLO_BOTH        0x0C00        //氖灯全亮 #define    NUM_OFF            0x0000        //无数字显示#define    NUM_0            0x0200        //显示数字0#define    NUM_1            0x0001        //显示数字1#define    NUM_2            0x0002        //显示数字2#define    NUM_3            0x0004        //显示数字3#define    NUM_4            0x0008        //显示数字4#define    NUM_5            0x0010        //显示数字5#define    NUM_6            0x0020        //显示数字6#define    NUM_7            0x0040        //显示数字7#define    NUM_8            0x0080        //显示数字8#define    NUM_9            0x0100        //显示数字9

接下来,只需要将各个模块的显示模式配置好就OK了,例如:
1、将模块1的LED配置为白色,两个氖灯只亮起上面的那颗,辉光管显示数字0;
2、将模块2的LED配置为紫色,两个氖灯只亮起下面的那颗,辉光管显示数字1;
代码如下:
123456MOD[0].LED    =     LED_WHITE;    //初始化模组1的LED状态MOD[0].CLO    =     CLO_UP;    //初始化模组1的冒号状态MOD[0].NUM    =     NUM_0;        //初始化模组1的数字状态MOD[1].LED    =     LED_PURPLE;    //初始化模组2的LED状态MOD[1].CLO    =     CLO_DOWN;    //初始化模组2的冒号状态MOD[1].NUM    =     NUM_1;        //初始化模组2的数字状态

配置完显示模块的显示模式,接下来就需要将显示模式配置为N个模块需要的2byte数据,通过74HC595通讯函数发送给显示模块。
在这里设计了两个函数,一个是Send595()函数,用于发送两个字节数据到串行总线上,一个是Update()函数,用于根据显示模块的显示模式计算要发送的两个字节数据。
代码如下:
1234567891011121314/***********************************************************************     函数名称:            void     Send595(uchar count,uchar dat)**    功能描述:            向74HC595发送数据**    入口参数:            count:    发送数据的位数**                    dat:        发送的数据(MAX 16Bit)*********************************************************************/void     Send595(uint count,uint dat){for(;count>0;count--){DATA = dat&0x8000;SHCP  = 1;SHCP  = 0;dat<

有了以上函数,只需要在主函数里配置好相应的结构体,然后调用Update()函数即可更新所有显示内容。
照片中,我采用的是C8051F340的最小系统版,在此贴出主函数,以供大家参考:
123456789101112131415161718192021222324252627282930/********************************************************************** 函 数 名: main()* 功能描述: 主程序* 设 计 者:严泽远 日期:2012-06-29 17:11* 修 改 者:严泽远 日期:2012-06-30 15:22* 版    本:v1.0.0*********************************************************************/main(){uint    i=0x0001;uchar    j=0;Port_IO_Init();                //IO资源配置Oscillator_Init();            //晶体振荡器初始化     OE    =    0;            //输出使能 或采用PWM控制来调节整体亮度 MOD[0].LED    =     LED_WHITE;    //初始化模组1的LED状态MOD[0].CLO    =     CLO_UP;    //初始化模组1的冒号状态MOD[0].NUM    =     NUM_0;        //初始化模组1的数字状态MOD[1].LED    =     LED_PURPLE;    //初始化模组2的LED状态MOD[1].CLO    =     CLO_DOWN;    //初始化模组2的冒号状态MOD[1].NUM    =     NUM_1;        //初始化模组2的数字状态 Update();                //刷新显示 while(1){;}}

需要下载完整代码的朋友请移步:
https://github.com/aguegu/nixie-tube/downloads
该模块的Datasheet下载地址请移步:
QS30-1NixieModuleUserManual_CH
Qs30-1NixieModuleUserManual_EN
同时,该模块已经完美应用于Arduino系统,由aGuegu制作了完美的Nixie Module驱动类库,并且完全开源。
特别感谢:aGuegu
详情及下载请见阿古作坊: QS30-1 辉光管通用模块 Arduino 类库开发记
QS30-1 Nixie Module list on eBay

【Nixie DIY】QS30-1 Nixie Module | 辉光管显示模块
DIY是一种享受,享受的是过程,更是结果……


该模块的Datasheet下载地址请移步:
QS30-1NixieModuleUserManual_CH
Qs30-1NixieModuleUserManual_EN


同时,该模块已经完美应用于Arduino系统,由aGuegu制作了完美的Nixie Module驱动类库,并且完全开源。


特别感谢:aGuegu


详情及下载请见阿古作坊: QS30-1 辉光管通用模块 Arduino 类库开发记


DIY是一种享受,享受的是过程,更是结果……
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
软硬件设计:严泽远
QQ:6626209
Mobile:18602007878
WebSite:http://www.nixieclock.org
E-mail:yanzeyuan@163.com
Weibo:@NixieClock



本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共19条打赏M币+125专家+1
12
离线a5s5d6f6

发帖
75
M币
8203
专家
1
粉丝
12
只看该作者 1楼 发表于: 2012-07-20
请登录后查看
离线venous_wang

发帖
28
M币
2185
专家
1
粉丝
4
只看该作者 2楼 发表于: 2012-07-20
请登录后查看
离线cdxwg

发帖
89557
M币
87151
专家
8
粉丝
128
只看该作者 3楼 发表于: 2012-07-20
请登录后查看
离线kilaht0421

发帖
202
M币
802
专家
1
粉丝
11
只看该作者 4楼 发表于: 2012-07-20
请登录后查看
离线ninayan

发帖
538
M币
25
专家
1
粉丝
20
只看该作者 5楼 发表于: 2012-07-20
请登录后查看
离线cjfsfe

发帖
18296
M币
18012
专家
2
粉丝
79
只看该作者 6楼 发表于: 2012-07-20
请登录后查看
离线王成2560
发帖
55
M币
97
专家
0
粉丝
2
只看该作者 7楼 发表于: 2012-07-20
请登录后查看
本帖最近打赏记录:共1条打赏M币+3
离线zp8395

发帖
1970
M币
133
专家
2
粉丝
51
只看该作者 8楼 发表于: 2012-07-20
请登录后查看
离线aqxgm

发帖
6039
M币
17555
专家
161
粉丝
532
只看该作者 9楼 发表于: 2012-07-20
请登录后查看
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
 
上一个 下一个