智能数控电流源的设计
湖南工业大学 欧伟明
摘要:详细地介绍了系统设计方案的选择、系统硬件设计过程、系统软件设计过程。文章给出了主要的系统硬件电路图和软件流程框图,并给出了用C51语言编写的主程序源代码。通过对制作的实物进行测试表明,系统实现了设计任务所提出的各项技术指标。
关键词:AT89S52;数控恒流源;C51语言;锰铜电阻丝
中图分类号 TN86 文献标识码 A
0 引言
恒流电流源是科研、航空航天、半导体集成电路生产领域中一种很重要的电子设备[1],或仅有几档电流值,不便于通用。本文介绍一种智能化的数控电流源,其使用方便,通过键盘进行输出电流值的设置,输出电流值精确稳定,而且输出范围大、分辨率高。。一般的恒流电流源往往是固定的一种输出电流值
1 本数控电流源的技术指标——设计任务
⑴ 输入交流电压200~240V,50Hz;输出直流电压≤10V;
⑵ 输出电流范围:1mA~2000mA,步进1mA;
⑶ 可设置输出电流给定值,并可显示输出电流给定值和输出电流测量值(同时或交替显示电流的给定值和实测值);
⑷ 具有“+”、“-”步进调整功能,步进值在1~99 mA内可任意设置;
⑸ 改变负载电阻,输出电压在10V范围内变化时,要求输出电流变化的绝对值≤输出电流值的0.1%+1mA;
⑹ 纹波电流≤2mA。
2 系统硬件设计
系统总体设计采用自顶向下的模块化设计思想。以单片机为控制核心的系统构成原理示意图如图1所示。
图1 系统构成原理示意图
由图1可知,系统硬件电路主要由键盘、显示器、MCU控制器、D/A转换模块、恒流源模块组成,下面给出这些主要电路模块的设计过程和硬件设计电路图。
2.1 控制器、键盘、显示器电路的设计
为了以后能够在线升级更新系统用户应用程序,本系统采用带ISP接口的单片机芯片AT89S52,并以AT89S52为核心构成MCU控制器。键盘采用4×4的矩阵行列式键盘,这样的话,16个按键的键盘与单片机接口时只需要8根I/O口线,并且,键盘上各按键功能的分配可以通过软件设计做得十分合理。设置0~9共十个数字键,步进键“+”、“-”,菜单键等等。在本系统中,因为只需要显示输出电流的数值,并且为了减小MCU的软件开销,所以显示器采用8位LED数码管,并且约定LED1~LED4用来显示输出电流的给定值,LED5~LED8用来显示输出电流的测量值,LED数码管显示的电流数值单位是mA,由AT89S52的内部串行口控制LED数码管显示器的工作。
2.2 转换模块、恒流源模块的设计D/A
D/A转换模块、恒流源模块电路的设计是本系统硬件设计的核心。D/A转换模块、恒流源模块电路如图2所示。
图2 D/A转换模块、恒流源模块电路图
2.2.1 转换模块的设计D/A
设计任务要求输出电流范围是1mA~2000mA,且步进值为1mA,这样的话,就要求D/A转换器能输出不同的输出电压的个数为
由此可以确定D/A转换器的分辨率为11bits,但对D/A转换器的转换速度要求不高。
经过分析与计算,本系统采用美国Texas Instrument公司生产的串行可编程D/A转换器TLC5618[2]。TLC5618是带有参考电压输入缓冲器(高阻抗)的双路12位电压输出型的数字/模拟转换器,TLC5618的数字输入端带有史密特(Schmitt)触发器,具有很高的噪声抑制能力,其满度输出电压为参考电压的两倍,且其输出电压是单调变化的,线性度好。TLC5618采用5V单电源工作,TLC5618与单片机的接口电路十分简单,单片机通过3线串行总线对TLC5618实现数字控制,TLC5618接收MCU提供的16位数字量(前4位是可编程位,后12位是数据位)从而产生模拟电压输出。TLC5618的输出电压与参考电压及输入数字量的关系为:
上式中为12位数字控制量,由单片机AT89S52的P2.1、P2.2、P2.3引脚串行输入,0≤≤4095;为TLC5618的输入参考电压,参考电压设计为典型值2.048V。由于本系统要求输出稳定的输出电流,则必须在系统中实现精密的数模转换,所以对数模转换器的参考电源质量要求较高。本系统采用精密基准电压源MC1403为TLC5618提供参考电压。MC1403的输出电压为2.5V,当输入电压在4.5V~15V范围内变化时,输出电压的变化不超过3mV,一般只有0.6mV左右,通过其输出端外接的可调电阻RP1可以得到2.048V的输出电压,正好满足数模转换器TLC5618的参考电压的要求。所以,TLC5618的输出电压为,并且电压步进值为1mV。D/A转换器的设计好坏是保证本系统能输出稳定的输出电流的重要依据之一。
2.2.2 恒流源模块的设计
图2所示电路实际上是一个电压控制恒流源电路。数/模转换器TLC5618的输出电压作为恒流源的控制电压,运算放大器U6 与三极管Q1 、Q2 、Q3 组成电压跟随器。利用三极管平坦的输出特性从而得到恒流输出。三极管Q1是普通小功率管子,三极管Q2 、Q3是两个相同型号的达林顿管子,Q2 、Q3并联使用,电阻R21、R22是平衡电阻。由于电压跟随器是一种深度的电压负反馈电路,因此恒流源具有较好的稳定性,这是保证本系统能输出稳定的输出电流的重要依据之二。
电阻R23是取样电阻,为了提高恒流源电路输出电流的稳定性,R23 采用大线径锰铜电阻丝制作, 锰铜电阻丝温度系数很小(一般小于5ppm/ ℃) ,大线径(如φ2mm)可以使其温度影响减至最小。为了方便实现电压到电流的转换,取样电阻R23的阻值设计为准确的1Ω,这样的话,电阻R23上的电压降与其上流过的电流在数值上是相等的,而电阻R23上流过的电流与负载电阻RL上流过的电流几乎相等,因此,只要保证取样电阻R23上的电压降恒定不变,就可以保证负载电阻RL上流过的电流恒定不变。选择R23为1Ω的锰铜电阻丝是保证本系统能输出稳定的输出电流的重要依据之三。
恒流源电路输出电流的标定由电位器RP4 的动触点电压值决定。电位器RP4用来对恒流源电路的输出电流进行标定,但是,由于电位器RP4在电路中的分压作用(分压比约为0.5),所以当数/模转换器TLC5618的输入数字量每变化1个字时,TLC5618的输出电压变化2 mV,电位器RP4 的动触点电压变化1 mV,取样电阻R23上的电压降变化1 mV,R23上流过的电流变化1mA,负载上流过的电流变化1mA。
3 系统软件设计
3.1 程序流程框图
本系统的软件设计采用C51语言和汇编语言混合编程[3]。主体程序采用C51编写,对时序要求比较严格的程序用汇编语言编写。使用C51和汇编语言混合编程的方式,从而大大提高了本系统软件设计的效率和质量。
本系统的主程序流程框图如图3所示,其中的扫描键盘程序起到了很重要的作用,扫描键盘函数的返回值作为C51主程序中Switch语句的开关变量,根据不同的返回值进行相应的按键处理,因而主程序流程框图相当简单,并且系统软件整体程序的可读性高。
图3 主程序流程框图
3.2 主程序源代码
用C51语言编写的主程序源代码如下。
main()
{
uchar idata n;
uint idata m;
SP=0x40; /*修改堆栈指针*/
for(m=0;m<1000;m++)
{
}
EA=1; /*CPU开中断*/
ET0=1; /*允许定时器0定时中断*/
EX0=1; /*允许外部0中断*/
PX0=1;
IT0=1; /*外部中断0采用下降沿触发方式*/
TMOD=0x01; /*定时器0采用16位定时工作方式*/
TH0=0xb8;
TL0=0x00;
TR0=1; /*启动定时器0*/
while(1)
{
do
{
keycode=readkey();
}while(keycode==0xff);
switch(keycode)
{
case 0x0a:menufun(); /*菜单键按下,进入菜单选择功能*/
break;
case 0x0e:m=givecur+stepval; /*步进“+”键按下*/
if(m<=2000)
{
givecur=m;
/*如果原有值加一次步进值小于或等于2000mA,则将累加值赋给电流给定值变量*/
m=((givecur&0x0fff)*2)|0xc000;
/*合成TLC5618数据写入格式*/
EX0=0;
/*对TLC5618串口器件进行操作需要首先关闭一切中断源*/
ET0=0;
write5618(m); /*将合成的数据写入TLC5618*/
EX0=1;
ET0=1; /*串口操作结束之后再恢复中断操作*/
}
break;
case 0x0f:if(givecur!=0) /*步进“-”键按下*/
{
for(n=0;n<stepval;n++)
{
givecur--;
if(givecur==0)
break;
}
m=((givecur&0x0fff)*2)|0xc000;
EX0=0;
ET0=0;
write5618(m);
ET0=1;
EX0=1;
}
break;
default:break;
}
}
}
4 结束语
根据上面叙述的设计方案制作了实物,并对实物进行了测试,其中,对系统恒流特性的测试情况如表1所示。测试结果表明,本系统实现了文章前面所叙述的各项技术指标。本文给出的数控电流源的设计方案,已成功地应用于2005年的第七届全国大学生电子设计竞赛,并且取得了优异的竞赛成绩(湖南工业大学代表队荣获了国家二等奖和湖南省赛区一等奖)。
表1 数控电流源恒流特性测试情况
键盘给定电流值
|
20 mA
|
100 mA
|
500 mA
|
1000 mA
|
1500 mA
|
2000 mA
|
实测电流值
(负载为4.5Ω)
|
20 mA
|
100 mA
|
501 mA
|
1000 mA
|
1498 mA
|
1997 mA
|
实测电流值
(负载为1.1Ω)
|
20mA
|
101 mA
|
500 mA
|
1000 mA
|
1499 mA
|
1998 mA
|
实测电流值
(负载为0Ω)
|
20 mA
|
100 mA
|
500 mA
|
1000 mA
|
1501 mA
|
2000 mA
|
参考文献:
[1] 罗耀华等.电子测量仪器原理及应用(II)智能仪器.哈尔滨工程大学出版社,2004, 24~28.
[2] TLC5618. 12BIT ANALOG-TO-DIGITAL CONVERTER WITH SERIAL CONTROL, PRODUCTION DATA TEXAS INSTRUMENTS INC. U. S. A. 1995.
[3] 欧伟明, 周春临, 瞿遂春.电子信息系统设计.西安:西安电子科技大学出版社, 2005, 90~103.
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。