环境试验电应力通断控制系统的设计

2015-12-23 04:25:37王文岳
电子产品可靠性与环境试验 2015年1期
关键词:数码管断电键盘

王文岳

(工业和信息化部电子第五研究所华东分所,江苏 苏州 215011)

环境试验电应力通断控制系统的设计

王文岳

(工业和信息化部电子第五研究所华东分所,江苏 苏州 215011)

介绍一种电应力通断控制 (on-off机)系统的制作方法,使用单片机作为核心控制元件,利用编程控制外围电路来实现逻辑通断,从而为环境试验中的电应力控制提供新方法,该方法还可应用于某些产品的循环通断电寿命试验。

环境试验;寿命试验;电应力控制;通断控制;单片机

0 引言

随着电子产品的发展,电子产品的可靠性要求越来越高。电子产品本身的通断电循环数往往作为验证电子产品、电子部件的电应力耐久性的重要考察指标[1]。

在进行可靠性试验、温湿度振动综合应力试验时,往往需要对被试验的样品施加具有一定时序的通断电,这种通断电时序往往较为复杂,通过时间继电器搭电路并不现实而且可靠性不高,在试验中断时很难找到相应的时序继续进行循环试验,往往需要重新开始试验,这样势必会增加产品试验应力,不符合试验要求。又如电源产品,往往通过反复、多次的通断电,对电源产品进行耐疲劳验证,用手工操作肯定不现实;若逻辑复杂,搭硬件电路也不方便,则环境试验应力通断控制 (on-off)系统机便起到很大的作用。

1 系统介绍

为了更好地实现电应力的通断施加,通过大量的实践,发明此on-off机系统。此系统通过外部键盘来选择相应温度段的电应力时序,例如:按1号键盘施加降温段电应力时序;2号键盘施加低温贮存段电应力时序;3号键盘施加升温段电应力时序;4号键盘施加高温贮存段电应力时序等。

进入程序后数码管倒计时显示此电应力段通电或断电的剩余时间 (通过时、分、秒显示),使得试验时更直观,完全可以知道还有多长时间样品通电,还有多长时间样品断电并且上电时会有LED灯亮起,断电时LED灯熄灭,非常直观,便于试验监控。

所有的时序信号通过继电器模块输出给外部样品做通断信号源。

接下来介绍此on-off机的硬件电路 (如图1-6所示)。

此硬件系统为单片机主控制模块、USB程序下载模块、4*4矩阵键盘模块、LED灯模块、数码管显示模块和继电器信号输出模块。

2 具体的操作方法

a)根据具体的要求,将继电器的输出端接到样品的供电电源端口 (连接常开端或常闭端根据程序设计)。

b)通过USB线下载相应的程序进入on-off机系统。

图1 单片机主控制模块

图2 USB程序下载模块

图3 4*4矩阵键盘模块[2]

图4 LED灯模块

c)开始试验时,打开on-off机系统电源,按下相应的矩阵键盘按键 (如需要从第1段电应力开始执行,即可按下1#键盘;如需要从第2段电应力开始执行,即可按下2#键盘等),on-off机便开始工作。

3 系统程序编写方法

根据硬件图,可以编写出扫描矩阵键盘、数码管动态显示的程序,这对于具备如此知识背景的人来说并非难事。这儿通过一个典型的温湿度环境试验电应力通断逻辑,描述一份程序编写框图。旨在讲清楚如何在程序中合理地安排矩阵键盘和数码管显示,以及时间段精确地控制输出电应力的方法。对于有知识背景的人而言,看了程序框图便知道如何编制程序。

典型案例:某产品进行湿热循环试验,高温段驻留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所示的试验程序流程图。

4 程序源文件

针对上述典型案例,程序源文件如下 (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;

}

} } }

5 结束语

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-),男,江苏南京人,工业和信息化部电子第五研究所华东分所 (中国赛宝华东实验室)工程师,主要从事可靠性与环境试验技术研究工作。

猜你喜欢
数码管断电键盘
你知道手机拨号键盘上为什么要有*和#吗?
消费电子(2022年6期)2022-08-25 09:44:42
键盘猫
高压感应电动机断电重启时的瞬态仿真
防爆电机(2020年3期)2020-11-06 09:07:36
Cлово месяца
中国(俄文)(2019年6期)2019-11-22 14:41:58
Arduino编程
电脑报(2019年2期)2019-09-10 07:22:44
ikbc R300机械键盘
电脑报(2019年40期)2019-09-10 07:22:44
MC9S08FL16单片机数码管静态显示分析
科技风(2019年13期)2019-06-11 13:38:30
单片机控制的四位数码管动态显示编程
时代农机(2019年2期)2019-04-24 01:20:14
基于Qt的数码管数字编码系统的设计与实现
一种STS新的断电快速检测方法
电源技术(2015年12期)2015-08-21 08:58:52