数控电流源电子电工设计大赛.docx
《数控电流源电子电工设计大赛.docx》由会员分享,可在线阅读,更多相关《数控电流源电子电工设计大赛.docx(19页珍藏版)》请在冰豆网上搜索。
数控电流源电子电工设计大赛
数控直流电流源
摘 要:
本设计以AT89C52为核心,通过A/D、D/A转换相应的算法实现了高精度的,电流输出范围为20mA~2000mA的数控直流电流源。
该电流源具有电流可预置,1mA步进,同时显示给定值和实测值等功能。
关键字:
数控直流电源AT89C52
NumericalControlledConstant-CurrentSource
Abstract:
Thispaperexplainsthedesignofthenumericalcontrolledconstant-currentsource.It’smainlydesignedbyAT89C52andthecurrentoutputrangefrom20mAto2000mA.Thesourceoutputcurrentcanbeset,1mAadjustedstepbystep,thedisplayofthepresentvalueandthepracticemeasurevalue。
Keywords:
Numericalcontrolledsource,AT89C52
一、系统设计
设计并制作数控直流电流源。
输入交流200~240V,50Hz;输出直流电压≤10V。
其原理示意图如下所示。
图1数控电流源原理图
1.1基本要求
(1)输出电流范围:
200mA~2000mA;
(2)可设置并显示输出电流给定值,要求输出电流与给定值偏差的绝对值≤给定值的1%+10mA;
(3)具有“+”、“-”步进调整功能,步进≤10mA;
(4)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值≤输出电流值的1%+10mA;
(5)纹波电流≤2mA;
1.2发挥部分
(1)输出电流范围为20mA~2000mA,步进1mA;
(2)设计、制作测量并显示输出电流的装置(可同时或交替显示电流的给定值和实测值),测量误差的绝对值≤测量值的0.1%+3个字;
(3)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值≤输出电流值的0.1%+1mA;
(4)纹波电流≤0.2mA;
(5)其他。
二、总体方案论证
2.1方案论证比较
2.1.1恒流源电路模块设计方案
方案一:
可采用集成运放构成的线性恒流源作为恒流源基本电路。
此恒流源输出电流不随负载变化而变化,可通过使用两个比较器构成的放大电路,功率管构成的调整电路,通过晶体管的平坦输出特性和深度负反馈回路可是电源恒流输出,且输出为高阻抗,实现电压电流转换。
图2集成运算放大器构成恒流源
方案二:
可通过构成开关电源的恒流源来构成恒流源电路。
可通过对元器件参数的计算及设定对电路的各项指标进行有效的控制。
且开关电流源有震荡反馈电容小以及反馈电流小等特点。
图3开关电源恒流源组成原理图
方案三:
可通过由集成稳压器构成开关恒流源来构成恒流源电路。
通过三端集成稳压器可构成开关恒流源。
当把电阻设为一定值时,当回路中负载发生变化时可有集成稳压器进行自动补偿从而使输出电流保持不变。
图4集成稳压器构成的开关恒流源
综上所述,由于方案二、方案三所构成的电路但负载能力以及调节精度相比方案一存在一定困难,故最终选取方案一为最终设计方案。
方案一中采用宽带运算放大器LF356和中功率管TIP42C等元件构成恒流源。
2.1.2控制电路设计方案
方案一:
电路可采用比较简便的AT89C52作为控制芯片。
89C52单片机构成控制电路简单且易于编程,运算能力完全符合本设计要求,且编程灵活性强,能实现简洁高效的算法控制,同时兼顾成本以及功耗等优点。
方案二:
该电路可利用FPGA构成的控制电路进行控制。
FPGA可满足对高运算控制电路的需求,可完成复杂的逻辑功能,具有规模大,稳定性强易于调试与扩展等特点,但其单片价格过高造成产品利润不足。
2.1.3显示电路设计方案
方案一:
可采用LED数码管构成的显示电路显示电流值。
LED数码管对环境要求低,且易于扩充成本低廉。
但同时数码管显示编程复杂度相对较高,数码管多位显示势必会加重编程负担。
方案二:
可采用1602LCD构成的电路显示。
LCD抗干扰能力强,可显示字符种类繁多,编程设计相对简单。
但成本较高。
综上所述,选择方案二。
采用LCD液晶显示电流给定值和检测值。
2.1.4键盘设计方案
方案一:
可采用4*4键盘构成键盘整列进行设置信号的输入,使得设置简洁明了。
方案二:
可采用独立式按键电路,每个按键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,通过端口直接扫描的方式检测键盘是否按下。
但当按键较多时占用单片机的I/O口数目较多。
2.1.5电源设计方案
由于系统共需要+5V、±12V电源且方案需要输出电流源2000mA,故电源需为系统提供较大电流。
综上所述,可采用+5V集成稳压芯片7805,+12V集成稳压芯片7812以及-12V集成稳压芯片7912构成电源电路。
2.2系统设计框图
稳压电源
八段数码管
4*4矩阵键盘
V/I
转换
A/D转换
D/A转换
AT89C52
负载
图5恒流源系统组成框图
三、单元电路设计
3.1恒流源电路设计
恒流源电路采用高速宽带运算放大器LF356和中功率管TIP42C构成。
如图所示,LF356为高速宽带运算放大器,稳定工作电压为±2V—±40V,带宽约为5Mhz。
356与R1R2构成电平转换电路使得D/A转换后的电压值与R2上的电压值相等,从而避免了直流电压变化时对电路的输出电流的影响。
故恒流源的输出电流方程为:
Io=VIN/(S1+S2)
图6恒流源电路图
3.2控制电路设计
3.2.1单片机最小系统
通过单片机扫描矩阵键盘,用户将电流值即步进值调整信号输入点偏激,单片机接受相应信号后显示用户设定电流值,经由A/D转换后输出电压值并驱动恒流源工作,最后经采样电路经A/D转换将结果反馈给单片机显示在液晶上。
本系统能的最小系统由AT89C52构成电路如图所示。
P0口P2.0-P2.3为LCD液晶接口,P3.0-P3.2为,D/A转换接口,P3.3-P3.7为A/D转换接口,P1为键盘扫描接口。
图7AT89C52最小系统图
3.2.2D/A转换电路系统
本设计要求电流输出范围为200mA—2000mA,又由于2000的二进制为11111010000故在1mA为步进值的条件下需使用12位D/A转换器,故选用TLV5618,输出电压为基准点呀两倍,输出电压表达式为VOUT=2*Vref*D/4096。
通过串行总线对TLV5618进行控制,供电电源为5V。
3.2.3A/D转换电路系统
A/D转换器采用16位A/D转换器AD7705。
通过程序查询单片机相连管脚是否为低电平实现对AD7705中数据的检测以及读取。
A/D、D/A转换电路如图:
图8A/DD/A转换电路
3.2.3键盘电路设计
在本系统中,4*4键盘用来构成数字0—9的输入以及“+”“—”“设置”三个功能按键。
其电路图图所示:
图9键盘电路
3.2.4显示器电路设计
本次显示电路采用RT19264D汉字液晶显示,显示字符范围有汉字及字符图形。
可显示192*64阵列,并具有:
光标显示,画面移位等模式。
本设计中液晶显示器采用并行接口连接单片机P2口。
显示电流设定值与测试值。
电路如图所示:
图10液晶显示电路
3.2.5稳压电源系统
本次设计需要±12V以及+5V供电,采用集成稳压器7812、7912、7805构成稳压电源。
由于要求最大电流为2000mA故需额外增加功放管增加其输出电流,电路如图所示:
图11电源电路
3.3软件设计
本设计采用C语言编程。
该软件主要实现:
(1)电流值的设定
(2)电流步进值的设定
(3)控制A/D、D/A工作
(4)显示设定电流值与检测电流值
(5)需要时自动调整电流值与设定值相等
3.3.1软件设计流程图
初始化
控制DAC补偿电流值
调整输出电流
设定电流
检测实际电流
不相等
相等
需要
不需要
3.3.2源程序
7705初始化子程序:
void7705Init()//ad7705初始化
{
unsignedchari;
ADC_CLK=1;//防止接口迷失
ADC_DIN=1;
for(i=0;i<200;i++)
{
ADC_CLK=0;_nop_();
ADC_CLK=1;_nop_();
}
WRADC(0x20);
WRADC(0x00);//写0x00到时钟寄存器,指定晶振频率为1MHz.
WRADC(0x10);
WRADC(0x44);//写0x44到设置寄存器,指定增益为1,bufferoff,FSYNC=0,
}
DATLV5618DAC子程序
//TLV5618DAC子程序,三线串行方式
voidsetdac(unsignedintvcon)
{
chari;
intsvcon;
svcon=vcon|0x8000;//vcon最高位置1,选择TLV5618的A通道
DAC_CS=0;///.................................................................................................5618的CS=0,允许片选
for(i=0;i<16;i++)
{
DAC_DIN=svcon&0x8000;//串行方式送16位数据
svcon<<=1;
DAC_CLK=0;
DAC_CLK=1;
}
DAC_CS=1;//禁止片选
return;
}
4×4键盘子程序
ucharkey(){
uchari;
keytruth=0;
for(i=0;i<200;i++)
{ucharkey_return;
loop:
P1=send;
get=P1;//get是接收回来的键值
get2=get;//保留get的值,不用也应该可以
test=get2|0xf0;//屏蔽高位,如果有按键的话低四位不全为一
if(test==0xff)//没有按键的话就移位,只限高四位
{
send=send<<1;
send=send|0x0f;//因为移位后低位出现0,所以将其屏蔽,令低四位全为一
if(t<3)//控制移位次数,当零移到最高位时作一次大循环,再装入初始值
{
t++;
gotoloop;
}
else
{
t=0;
send=0xef;
//gotoloop;
}
}
else//有按键的情况
{
key_return=cheak(get);
dy();dy();keytruth=1;
returnkey_return;
}
}
}
四、系统仿真及测试
4.1输出电流测试
给定值
20
45
70
300
400
1700
1800
1980
实测值
20
45
70
300
400
1700
1800
1980
误差绝对值
0
0
0
0
0
0
0
0
4.2改变负载,输出电压在10V以内变化电流测试
接上10Ω负载电阻测量结果:
给定值
20
100
400
1700
实测值
20
100
400
1700
电流变化绝对值
0
0
0
0
经过对系统的仿真测试,本设计达到以下性能指标:
(1)输出电流范围20mA—2000mA,步进值1mA
(2)可同时显示电流设定值和实时测定值,测量误差的绝对值≤测量值的0.1%+3个字
(3)输出电流变化的绝对值≤输出电流值的0.1%+1mA;
五、参考文献
[1]赵亮,侯国锐.单片机C语言编程与实例.[M]北京:
人民邮电出版社,2003
[2]曲学基,王增福,曲敬铠.稳定电源实用电路选编.[M]北京:
电子工业出版社,2003
[3]黄智亮.全国大学生电子设计竞赛训练教程.[M]北京:
电子工业出版社,2005
[4]张毅刚,刘杰.MCS-51单片机原理及应用.[M]哈尔滨:
哈尔滨工业大学出版社,2004
[5]那文鹏,王昊.通用集成电路的选择与使用.[M]北京:
人民邮电出版社,2004
六、附录
各模块原理图