王文岳
(工业和信息化部电子第五研究所华东分所,江苏 苏州 215011)
环境试验电应力通断控制系统的设计
王文岳
(工业和信息化部电子第五研究所华东分所,江苏 苏州 215011)
介绍一种电应力通断控制 (on-off机)系统的制作方法,使用单片机作为核心控制元件,利用编程控制外围电路来实现逻辑通断,从而为环境试验中的电应力控制提供新方法,该方法还可应用于某些产品的循环通断电寿命试验。
环境试验;寿命试验;电应力控制;通断控制;单片机
随着电子产品的发展,电子产品的可靠性要求越来越高。电子产品本身的通断电循环数往往作为验证电子产品、电子部件的电应力耐久性的重要考察指标[1]。
在进行可靠性试验、温湿度振动综合应力试验时,往往需要对被试验的样品施加具有一定时序的通断电,这种通断电时序往往较为复杂,通过时间继电器搭电路并不现实而且可靠性不高,在试验中断时很难找到相应的时序继续进行循环试验,往往需要重新开始试验,这样势必会增加产品试验应力,不符合试验要求。又如电源产品,往往通过反复、多次的通断电,对电源产品进行耐疲劳验证,用手工操作肯定不现实;若逻辑复杂,搭硬件电路也不方便,则环境试验应力通断控制 (on-off)系统机便起到很大的作用。
为了更好地实现电应力的通断施加,通过大量的实践,发明此on-off机系统。此系统通过外部键盘来选择相应温度段的电应力时序,例如:按1号键盘施加降温段电应力时序;2号键盘施加低温贮存段电应力时序;3号键盘施加升温段电应力时序;4号键盘施加高温贮存段电应力时序等。
进入程序后数码管倒计时显示此电应力段通电或断电的剩余时间 (通过时、分、秒显示),使得试验时更直观,完全可以知道还有多长时间样品通电,还有多长时间样品断电并且上电时会有LED灯亮起,断电时LED灯熄灭,非常直观,便于试验监控。
所有的时序信号通过继电器模块输出给外部样品做通断信号源。
接下来介绍此on-off机的硬件电路 (如图1-6所示)。
此硬件系统为单片机主控制模块、USB程序下载模块、4*4矩阵键盘模块、LED灯模块、数码管显示模块和继电器信号输出模块。
a)根据具体的要求,将继电器的输出端接到样品的供电电源端口 (连接常开端或常闭端根据程序设计)。
b)通过USB线下载相应的程序进入on-off机系统。
图1 单片机主控制模块
图2 USB程序下载模块
图3 4*4矩阵键盘模块[2]
图4 LED灯模块
c)开始试验时,打开on-off机系统电源,按下相应的矩阵键盘按键 (如需要从第1段电应力开始执行,即可按下1#键盘;如需要从第2段电应力开始执行,即可按下2#键盘等),on-off机便开始工作。
根据硬件图,可以编写出扫描矩阵键盘、数码管动态显示的程序,这对于具备如此知识背景的人来说并非难事。这儿通过一个典型的温湿度环境试验电应力通断逻辑,描述一份程序编写框图。旨在讲清楚如何在程序中合理地安排矩阵键盘和数码管显示,以及时间段精确地控制输出电应力的方法。对于有知识背景的人而言,看了程序框图便知道如何编制程序。
典型案例:某产品进行湿热循环试验,高温段驻留3 h(此间给样品加电10min断电20 min,依照此种频率循环6次),高温降至低温用25 min(此间样品断电);低温驻留3 h(此间给样品加电20min断电10min,依照此种频率循环6次),低温升至高温用25 min(此间样品通电),上述为1个试验循环。此次试验共进行200个循环[4]。
图5 数码管显示模块[3]
图6 继电器信号输出模块
分析:我们将此案例分为4段电应力逻辑——第1段为高温段即样品加电10 min断电20 min,依照此种频率循环6次,第1段对应矩阵键盘第4行第1列按键记为1号按键;第2段为降温段即样品在此段中25 min断电,第2段对应矩阵键盘第4行第2列按键记为2号按键;第3段为低温段即样品加电20 min断电10 min,依照此种频率循环6次,第3段对应矩阵键盘第4行第3列按键记为3号按键;第4段为升温段即样品在此段中25 min上电,第4段对应矩阵键盘第4行第4列按键记为4号按键。在按下这4个按键中的其中1个时将进入相应段的电应力逻辑——如按下1号键,程序将执行1、2、3和4;从其他段开始执行可依此类推。在进入相应的段后,数码管将进行通断电倒计时显示 (以1 s为单位),在数码管最后1位将显示现在执行的段 (1或2或3或4);通电段则LED灯点亮,断电段则LED灯熄灭。8位数码管显示方式:左起第1、2位显示小时数;第3、4位显示分钟数;第5、6位显示秒数;第7位不显示;第8位显示当前执行段。
图7 程序流程图[5]
对于此案例,编制如图7所示的试验程序流程图。
针对上述典型案例,程序源文件如下 (C语言编写):
#include
#define uchar unsigned char
#define uintunsigned int
#define ulong unsigned long
uchar tt;uchar t_min;uchar h_hour;uchar T_d;
uchar js;//电应力循环标志位
uchar js_2;uchar js_4;//第2段及第4段电应力中要嵌入电应力
uchar fxtime;
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit D5=P1^4;
sbit D6=P1^5;
sbit relay=P2^1;
sbit dula=P2^6;
sbitwela=P2^7;
uchar a,temp;
//uchar js_led;
uchar h_g;uchar h_d;uchar m_g;ucharm_d;
uchar s_g;uchar s_d;
uint t_s;
uint etrc_pw1, etrc_pw2_on,etrc_pw2_off,etrc_pw3,
etrc_pw4_on,etrc_pw4_off;
uint pw1_h,pw1_m,pw1_s;
uchar pw1_h_g, pw1_h_d,pw1_m_g,pw1_m_d,
pw1_s_g,pw1_s_d;
uchar pw2_on_h,pw2_on_m,pw2_on_s,
pw2_off_h,pw2_off_m,pw2_off_s;
uchar pw2_on_h_g, pw2_on_h_d,pw2_on_m_g,pw2_on_m_d,
pw2_on_s_g,pw2_on_s_d,
pw2_off_h_g, pw2_off_h_d, pw2_off_m_g,pw2_off_m_d,
pw2_off_s_g,pw2_off_s_d;
uchar pw3_h,pw3_m,pw3_s;
uchar pw3_h_g, pw3_h_d, pw3_m_g,pw3_m_d,
pw3_s_g,pw3_s_d;
uchar pw4_on_h,pw4_on_m,pw4_on_s,
pw4_off_h,pw4_off_m,pw4_off_s;
uchar pw4_on_h_g, pw4_on_h_d,pw4_on_m_g,pw4_on_m_d,
pw4_on_s_g,pw4_on_s_d,
pw4_off_h_g, pw4_off_h_d, pw4_off_m_g,pw4_off_m_d,
pw4_off_s_g,pw4_off_s_d;
uchar code table[]={0x3f, 0x06, 0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=120;j>0;j--);}
void jsscan()
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
delayms(10);temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
temp=P3;
switch(temp){
case 0xee:
js=1;
a=0;
break;
case 0xde:
js=2;
a=0;
break;
case 0xbe:
js=3;
a=0;
break;
case 0x7e:
js=4;
a=0;
break;
} } while(temp!=0xf0){
temp=P3;
temp=temp&0xf0;} }
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
delayms(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0){
temp=P3;
switch(temp)
{
case 0xed:
js=5;
a=0;
break;
case 0xdd:
js=6;
a=0;
break;
}
}
while(temp!=0xf0){
temp=P3;
temp=temp&0xf0;}
}
} void display_1(h_g,h_d){
dula=1;
P0=table[h_g];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(3);
dula=1;
P0=table[h_d];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(3);
} void display_2(m_g,m_d)
{
dula=1;
P0=table[m_g];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(3);
dula=1;
P0=table[m_d];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(3);} void display_3(s_g,s_d){
dula=1;
P0=table[s_g];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(3);
dula=1;
P0=table[s_d];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(3);}
void display_4(T_d) //显示当前的循环数{
dula=1;
P0=table[T_d];
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(3);}
voidmain(){
etrc_pw1=1500; //第1段降温段时间
etrc_pw2_on=600; //第2段低温段通电时间
etrc_pw2_off=1 200;//第2段低温段断电时间
etrc_pw3=1 500; //第3段升温段时间
etrc_pw4_on=600; //第4段高温段通电时间
etrc_pw4_off=1 200;//第4段高温段断电时间
pw1_h=etrc_pw1/3 600;
pw1_m=etrc_pw1%3 600/60;
pw1_s=etrc_pw1%3 600%60;
pw2_on_h=etrc_pw2_on/3 600;
pw2_on_m=etrc_pw2_on%3 600/60;
pw2_on_s=etrc_pw2_on%3 600%60;
pw2_off_h=etrc_pw2_off/3 600;
pw2_off_m=etrc_pw2_off%3 600/60;pw2_off_s=etrc_pw2_off%3 600%60;
pw3_h=etrc_pw3/3 600;
pw3_m=etrc_pw3%3 600/60;
pw3_s=etrc_pw3%3 600%60;
pw4_on_h=etrc_pw4_on/3 600;
pw4_on_m=etrc_pw4_on%3 600/60;
pw4_on_s=etrc_pw4_on%3 600%60;
pw4_off_h=etrc_pw4_off/3 600;
pw4_off_m=etrc_pw4_off%3 600/60;
pw4_off_s=etrc_pw4_off%3 600%60;
pw1_h_g=pw1_h/10;
pw1_h_d=pw1_h%10;
pw1_m_g=pw1_m/10;
pw1_m_d=pw1_m%10;
pw1_s_g=pw1_s/10;
pw1_s_d=pw1_s%10;
pw2_on_h_g=pw2_on_h/10;
pw2_on_h_d=pw2_on_h%10;
pw2_on_m_g=pw2_on_m/10;
pw2_on_m_d=pw2_on_m%10;
pw2_on_s_g=pw2_on_s/10;
pw2_on_s_d=pw2_on_s%10;
pw2_off_h_g=pw2_off_h/10;
pw2_off_h_d=pw2_off_h%10;
pw2_off_m_g=pw2_off_m/10;
pw2_off_m_d=pw2_off_m%10;
pw2_off_s_g=pw2_off_s/10;
pw2_off_s_d=pw2_off_s%10;
pw3_h_g=pw3_h/10;
pw3_h_d=pw3_h%10;
pw3_m_g=pw3_m/10;
pw3_m_d=pw3_m%10;
pw3_s_g=pw3_s/10;
pw3_s_d=pw3_s%10;
pw4_on_h_g=pw4_on_h/10;
pw4_on_h_d=pw4_on_h%10;
pw4_on_m_g=pw4_on_m/10;
pw4_on_m_d=pw4_on_m%10;
pw4_on_s_g=pw4_on_s/10;
pw4_on_s_d=pw4_on_s%10;
pw4_off_h_g=pw4_off_h/10;
pw4_off_h_d=pw4_off_h%10;
pw4_off_m_g=pw4_off_m/10;
pw4_off_m_d=pw4_off_m%10;
pw4_off_s_g=pw4_off_s/10;
pw4_off_s_d=pw4_off_s%10;
a=1;
while(a){
jsscan();}
switch(js) //刚按完按键后进入此段赋初始值
{
case 1:
T_d=1;
h_g=pw1_h_g;
h_d=pw1_h_d;
m_g=pw1_m_g;
m_d=pw1_m_d;
s_g=pw1_s_g;
s_d=pw1_s_d;
t_s=etrc_pw1;
D1=1; //第1段降温段熄灭relay=1; //继电器断开
js++;
break;case 2:
T_d=2;
h_g=pw2_on_h_g;
h_d=pw2_on_h_d;
m_g=pw2_on_m_g;
m_d=pw2_on_m_d;
s_g=pw2_on_s_g;
s_d=pw2_on_s_d;
t_s=etrc_pw2_on;
js_2=1;
D1=0; //第2段低温段一开始点亮
relay=0; //继电器打开
break;case 3:
T_d=3;
h_g=pw3_h_g;
h_d=pw3_h_d;
m_g=pw3_m_g;
m_d=pw3_m_d;
s_g=pw3_s_g;
s_d=pw3_s_d;
t_s=etrc_pw3;
D1=0; //第3段升温段点亮relay=0; //继电器打开
js++;
break;case 4:
T_d=4;
h_g=pw4_on_h_g;
h_d=pw4_on_h_d;
m_g=pw4_on_m_g;
m_d=pw4_on_m_d;
s_g=pw4_on_s_g;
s_d=pw4_on_s_d;
t_s=etrc_pw4_on;
js_4=1;
D1=0; //第4段高温段一开始点亮
relay=0; //继电器打开
break;
}
TMOD=0x11;
TH0=(65 536-50 000)/256;
TL0=(65 536-50 000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display_1(h_g,h_d);
display_2(m_g,m_d);
display_3(s_g,s_d);
display_4(T_d);} }
void T0_timer() interrupt 1
{
EA=0;
TR0=0;
fxtime=TL0+0x0B;
TL0=0xB0+fxtime;//TL0=(65 536-50 000)% 256;
TH0=0x3C+(char)CY;//TH0=(65 536-50 000)/256;
EA=1;
TR0=1;
tt++;
if(tt==20)/*1秒到*/
{
tt=0;
t_s--;
h_g=t_s/3 600/10;
h_d=t_s/3 600%10;
m_g=t_s%3 600/60/10;
m_d=t_s%3 600/60%10;
s_g=t_s%3 600%60/10;
s_d=t_s%3 600%60%10;
display_1(h_g,h_d);
display_2(m_g,m_d);
display_3(s_g,s_d);
display_4(T_d);
if(t_s==0)
{
if(js==5) js=1;
if(js==2) //js=2(第2段)为低温段,此段6段通断电{
T_d=2;
js_2++;
if(js_2==13)
{
js_2=0;
js++;
}
switch (js_2)
{
case 1:
D1=0;//js_2=1为第2段中第1
小段为点亮段
relay=0; //继电器打开
h_g=pw2_on_h_g;
h_d=pw2_on_h_d;
m_g=pw2_on_m_g;
m_d=pw2_on_m_d;
s_g=pw2_on_s_g;
s_d=pw2_on_s_d;
t_s=etrc_pw2_on;
break;
case 2:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw2_off_h_g;
h_d=pw2_off_h_d;
m_g=pw2_off_m_g;
m_d=pw2_off_m_d;
s_g=pw2_off_s_g;
s_d=pw2_off_s_d;
t_s=etrc_pw2_off;
break;
case 3:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw2_on_h_g;
h_d=pw2_on_h_d;
m_g=pw2_on_m_g;
m_d=pw2_on_m_d;
s_g=pw2_on_s_g;
s_d=pw2_on_s_d;
t_s=etrc_pw2_on;
break;
case 4:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw2_off_h_g;
h_d=pw2_off_h_d;
m_g=pw2_off_m_g;
m_d=pw2_off_m_d;
s_g=pw2_off_s_g;
s_d=pw2_off_s_d;
t_s=etrc_pw2_off;
break;
case 5:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw2_on_h_g;
h_d=pw2_on_h_d;
m_g=pw2_on_m_g;
m_d=pw2_on_m_d;
s_g=pw2_on_s_g;
s_d=pw2_on_s_d;
t_s=etrc_pw2_on;
break;
case 6:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw2_off_h_g;
h_d=pw2_off_h_d;
m_g=pw2_off_m_g;
m_d=pw2_off_m_d;
s_g=pw2_off_s_g;
s_d=pw2_off_s_d;
t_s=etrc_pw2_off;
break;
case 7:
D1=0;//点亮
relay=1; //继电器打开
h_g=pw2_on_h_g;
h_d=pw2_on_h_d;
m_g=pw2_on_m_g;
m_d=pw2_on_m_d;
s_g=pw2_on_s_g;
s_d=pw2_on_s_d;
t_s=etrc_pw2_on;
break;
case 8:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw2_off_h_g;
h_d=pw2_off_h_d;
m_g=pw2_off_m_g;
m_d=pw2_off_m_d;
s_g=pw2_off_s_g;
s_d=pw2_off_s_d;
t_s=etrc_pw2_off;
break;
case 9:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw2_on_h_g;
h_d=pw2_on_h_d;
m_g=pw2_on_m_g;
m_d=pw2_on_m_d;
s_g=pw2_on_s_g;
s_d=pw2_on_s_d;
t_s=etrc_pw2_on;
break;
case 10:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw2_off_h_g;
h_d=pw2_off_h_d;
m_g=pw2_off_m_g;
m_d=pw2_off_m_d;
s_g=pw2_off_s_g;
s_d=pw2_off_s_d;
t_s=etrc_pw2_off;
break;
case 11:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw2_on_h_g;
h_d=pw2_on_h_d;
m_g=pw2_on_m_g;
m_d=pw2_on_m_d;
s_g=pw2_on_s_g;
s_d=pw2_on_s_d;
t_s=etrc_pw2_on;
break;
case 12:
D1=1;//熄灭
relay=1; //继电器断开h_g=pw2_off_h_g;
h_d=pw2_off_h_d;
m_g=pw2_off_m_g;
m_d=pw2_off_m_d;
s_g=pw2_off_s_g;
s_d=pw2_off_s_d;
t_s=etrc_pw2_off;
break;
}
}
if(js==4)//js=4(第4段)为高温段,此段6段通断电{
T_d=4;
js_4++;
if(js_4==13){
js_4=0;
js=1;}
switch (js_4){
case 1:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw4_on_h_g;
h_d=pw4_on_h_d;
m_g=pw4_on_m_g;
m_d=pw4_on_m_d;
s_g=pw4_on_s_g;
s_d=pw4_on_s_d;
t_s=etrc_pw4_on;
break;
case 2:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw4_off_h_g;
h_d=pw4_off_h_d;
m_g=pw4_off_m_g;
m_d=pw4_off_m_d;
s_g=pw4_off_s_g;
s_d=pw4_off_s_d;
t_s=etrc_pw4_off;
break;
case 3:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw4_on_h_g;
h_d=pw4_on_h_d;
m_g=pw4_on_m_g;
m_d=pw4_on_m_d;
s_g=pw4_on_s_g;
s_d=pw4_on_s_d;
t_s=etrc_pw4_on;
break;
case 4:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw4_off_h_g;
h_d=pw4_off_h_d;
m_g=pw4_off_m_g;
m_d=pw4_off_m_d;
s_g=pw4_off_s_g;
s_d=pw4_off_s_d;
t_s=etrc_pw4_off;
break;
case 5:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw4_on_h_g;
h_d=pw4_on_h_d;
m_g=pw4_on_m_g;
m_d=pw4_on_m_d;
s_g=pw4_on_s_g;
s_d=pw4_on_s_d;
t_s=etrc_pw4_on;
break;
case 6:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw4_off_h_g;
h_d=pw4_off_h_d;
m_g=pw4_off_m_g;
m_d=pw4_off_m_d;
s_g=pw4_off_s_g;
s_d=pw4_off_s_d;
t_s=etrc_pw4_off;
break;
case 7:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw4_on_h_g;
h_d=pw4_on_h_d;
m_g=pw4_on_m_g;
m_d=pw4_on_m_d;
s_g=pw4_on_s_g;
s_d=pw4_on_s_d;
t_s=etrc_pw4_on;
break;
case 8:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw4_off_h_g;
h_d=pw4_off_h_d;
m_g=pw4_off_m_g;
m_d=pw4_off_m_d;
s_g=pw4_off_s_g;
s_d=pw4_off_s_d;
t_s=etrc_pw4_off;
break;
case 9:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw4_on_h_g;
h_d=pw4_on_h_d;
m_g=pw4_on_m_g;
m_d=pw4_on_m_d;
s_g=pw4_on_s_g;
s_d=pw4_on_s_d;
t_s=etrc_pw4_on;
break;
case 10:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw4_off_h_g;
h_d=pw4_off_h_d;
m_g=pw4_off_m_g;
m_d=pw4_off_m_d;
s_g=pw4_off_s_g;
s_d=pw4_off_s_d;
t_s=etrc_pw4_off;
break;
case 11:
D1=0;//点亮
relay=0; //继电器打开
h_g=pw4_on_h_g;
h_d=pw4_on_h_d;
m_g=pw4_on_m_g;
m_d=pw4_on_m_d;
s_g=pw4_on_s_g;
s_d=pw4_on_s_d;
t_s=etrc_pw4_on;
break;
case 12:
D1=1;//熄灭
relay=1; //继电器断开
h_g=pw4_off_h_g;
h_d=pw4_off_h_d;
m_g=pw4_off_m_g;
m_d=pw4_off_m_d;
s_g=pw4_off_s_g;
s_d=pw4_off_s_d;
t_s=etrc_pw4_off;
break;
}
}
switch (js)
{
case 1:
T_d=1;
D1=1; //第1段为降温段,此段断电,灯熄灭
relay=1; //继电器断开
h_g=pw1_h_g;
h_d=pw1_h_d;
m_g=pw1_m_g;
m_d=pw1_m_d;
s_g=pw1_s_g;
s_d=pw1_s_d;
t_s=etrc_pw1;
js++;
break;
case 3:
T_d=3;
D1=0;//第3段为升温段,此段通电,灯点亮
relay=0; //继电器打开
h_g=pw3_h_g;
h_d=pw3_h_d;
m_g=pw3_m_g;
m_d=pw3_m_d;
s_g=pw3_s_g;
s_d=pw3_s_d;
t_s=etrc_pw3;
js++;
break;
}
} } }
a)此电应力逻辑被大多数可靠性环境应力试验所采用,简称 “4段式电应力逻辑”,已经过大量的实践验证。若为此4段逻辑,只需改动程序入口处各段的通断电时间即可,这对于编程者是极为方便的。
b)编写程序时应注意,矩阵键盘仅在程序刚运行时扫描,即当按下某矩阵键盘后,便开始顺序执行程序,此时按其他任何矩阵键盘都无效。这样可以有效地减少因为误按某个键盘而导致电应力错误。
c)编写程序时应注意,利用单片机内部定时器进行时间控制时,需加入时间动态补偿算法程序,这样的计时时间会非常精确。对于时间动态补偿算法程序有C语言及汇编写法。具体的写法此处不做累述。
d)根据硬件电路及上述程序编写方法描述,可以较方便地写出其他各种电应力逻辑程序,最多可扩充到16段。
e)此on-off机已经运用到很多试验项目中,运行稳定,经过大量的实践验证。当然阅读此文者需要有一定的硬件及软件基础。
f)此on-off机成本低廉,使用方便,直观性、可操作性都很强。
g)如上述程序,可以实现到1 s的通断逻辑并进行显示,若要实现毫秒级的on-off机,此系统由于采用高性能STC 51单片机 (最高频率可达320 MHz)也可实现,此时可以去除掉数码管显示模块,按上述方式编写程序即可。因为对于毫秒级的通断,数显往往没有意义[6]。
h)此on-off机系统的应用会较为广泛,如电源的通断循环次数,往往影响一个电源的使用寿命;空气压缩机上的气压阀会随着气压的降低而反复启动,此气压阀的重复启动次数往往关乎整个空气压缩机的寿命。此on-off机将为反复通断电子器件提供寿命验证方法及加速寿命方法。
[1]姜同敏.可靠性试验技术 [M].北京:北京航空航天大学出版社,2012:20-21.
[2]郭天祥.51单片机C语言教程——入门、提高、开发、拓展全攻略 [M].北京:电子工业出版社,2009:86-90.
[3]梅丽凤,王艳秋,王敏铎,等.单片机原理及接口技术[M].北京:清华大学出版社,北京交通大学出版社,2006:225-230.
[4]刘丹.速度传感器型式试验大纲 [Z].株洲:南国株洲电力机车研究所有限公司,2014.
[5]薛峰,朱晓骏.单片机原理及应用 [M].北京:北京理工大学出版社,2011:146-147.
[6]王文岳.用于样品可靠性环境试验提供电应力的通用逻辑控制系统:中国,ZL 2011 101557150.0[P].2013-04-17.
Design of Electrical Stress On-O ff Control System for Environmental Test
WANGWen-yue
(CEPREI-EAST,Suzhou 215011,China)
The production of an electrical stress on-off control system is introduced.A new way for the electrical stress control in environm ental tests is p resented, using a SCM as the central control element and programming to control the peripheral circuits to implement logic onoff.Themethod can also apply to cyclic on-off life tests of some products.
environmental test;life test;electrical stress control;on-off control;SCM
TP 273+.5
:A
:1672-5468(2015)01-0029-14
10.3969/j.issn.1672-5468.2015.01.007
2014-07-11
2015-01-12
王文岳 (1985-),男,江苏南京人,工业和信息化部电子第五研究所华东分所 (中国赛宝华东实验室)工程师,主要从事可靠性与环境试验技术研究工作。