数控直流电流源初稿.docx
《数控直流电流源初稿.docx》由会员分享,可在线阅读,更多相关《数控直流电流源初稿.docx(52页珍藏版)》请在冰点文库上搜索。
数控直流电流源初稿
项目设计说明书
设计课题:
数控直流电流源
系别电气工程系
学生姓名赵志军范杨志罗章
郑军良吴万海
指导老师张文初陈新喜粟慧龙
完成日期200907
摘 要
本系统以直流电流源为核心,AT89S51单片机为主控制器,通过键盘来设置直流电源的输出电流,设置步进等级可达1mA,并可由数码管上显示电流设定值和实际输出电流值。
本系统由单片机程控设定数字信号,经过D/A转换器(LTC2622)输出模拟量,再经过运算放大器隔离放大,控制输出功率管的基极,随着功率管基极电压的变化而输出不同的电流。
单片机系统还兼顾对恒流源进行实时监控,输出电流经过电流/电压转换后,通过A/D转换芯片,实时把模拟量转化为数据量,再经单片机分析处理,把实际值通过数码管显示出来,并且通过数字量形式的反馈环节,使电流更加稳定,这样构成稳定的压控电流源。
实际测试结果表明,本系统能有效应用于需要高稳定度的小功率恒流源的领域。
关键词:
直流电流源AT89S51D/A转换器A/D转换压控电流源
目录
摘 要I
前言1
第一章方案论证、比较与选择2
1.1方案论证、比较与选择2
1.1.1恒定电流源模块方案2
1.1.2控制器模块方案3
1.1.3显示器模块方案3
1.1.4键盘模块方案3
1.2总体方案4
第二章单元模块设计5
2.1恒定电流源电路设计5
2.2控制器电路设计5
2.2.1单片机最小系统设计5
2.2.2D/A、A/D电路设计6
2.3键盘电路设计7
2.4显示器电路设计8
第三章系统调试10
3.1硬件抗干扰系统调试10
3.2软件系统调试11
第四章系统功能及指标参数12
4.1系统功能12
4.2指标参数12
4.3主要数据记录12
4.3.1改变负载电阻主要输出数据12
4.3.2步进设定电流主要输出数据13
4.3..2.110mA步进13
4.3..2.21mA步进13
第五章总结15
附录一原理图16
附录二PCB板17
附录三程序流程图18
附录四程序19
参考文献33
前言
随着电子技术的发展、数字电路应用领域的扩展,现今社会,产品智能化、数字化已成为人们追求的一种趋势,设备的性能、价格、发展空间等备受人们的关注,尤其对电子设备的精密度和稳定度最为关注。
性能好的电子设备,首先离不开稳定的电源,电源稳定度越高,设备和外围条件越优越,那么设备的寿命更长。
基于此,人们对数控恒定电流器件的需求越来越迫切.当今社会,数控恒压技术已经很成熟,但是恒流方面特别是数控恒流的技术才刚刚起步且有待发展,高性能的数控恒流器件的开发和应用存在巨大的发展空间。
本文正是应社会发展的需求,研制出一种基于单片机的高性能的数控直流恒流源。
本数控直流恒流源系统输出电流稳定,输出电流可在20mA~2000mA范围内任意设定,不随负载和环境温度变化,并具有很高的精度,输出电流误差范围±4mA,因而可实际应用于需要高稳定度小功率直流恒流源的领域。
第一章方案论证、比较与选择
1.1方案论证、比较与选择
1.1.1恒定电流源模块方案
方案一:
采用开关电源的开关恒流源。
其原理图如图1.1所示。
图中C1、C2为滤波电容;K是开关器件;D是续流二极管;L是扼流圈;PWM是脉宽调制电路;KF是电流反馈电路;R0是电流取样电阻。
在原理图电路上,通过精选元器件和采用合理的结构设计,可以使电路的分布参数得到有效控制。
采用开关电源的开关恒流源主要特点是:
振荡反馈电容小,阻抗大,反馈电流小。
但是电路难以调试,故不适合用于此处。
图1.1采用开关电源的开关恒流源组成框图
方案二:
采用集成稳压器构成的开关恒流源。
图1.2所示是是三端集成稳压器构成的开关恒流源。
当设定电阻R一定时,电路给负载Ro提供一恒定电流当RL发生变化时,由IC的输入——输出压差进行自动补偿而使负载电流保持不变。
但该电路难以实现步进功能,故不适合用在此处。
图1.2采用集成稳压器构成的开关恒流源原理框图
方案三:
采用集成运放的线性恒流源。
该恒流源输出的电流与负载无关,通过使用一块OP07构成比较放大环节,功率管构成调整环节,利用晶体管平坦的输出特性和深度的负反馈电路可以得到稳定的恒流输出和高输出阻抗,实现了电压——电流转换。
该方案性价比较高,且能够满足题目的要求。
综上所述,采用方案三,使用低噪音、高速宽带运放OP07、采用差分电路作为反馈和复合管组成的功率放大器等构成一个恒流源电路。
1.1.2控制器模块方案
方案一:
采用FPGA作为系统的控制模块。
FPGA可以实现复杂的逻辑功能,规模大,稳定性强,易于调试和进行功能扩展。
FPGA采用并行输入输出方式,处理速度高,适合作为大规模实时系统的核心。
但由于FPGA集成度高,成本偏高,且由于其引脚较多,加大了硬件设计和实物制作的难度。
方案二:
采用AT89S51作为控制模块核心。
单片机最小系统简单,容易制作PCB,算术功能强,软件编程灵活、可以通过ISP方式将程序快速下载到芯片,方便的实现程序的更新,自由度大,较好的发挥C语言的灵活性,可用编程实现各种算法和逻辑控制,同时其具有功耗低、体积小、技术成熟和成本低等优点。
基于以上分析,选择方案二,利用AT89S51单片机将电流步进值或设定值通过换算由D/A转换,驱动恒流源电路实现电流输出。
输出电流经处理电路作A/D转换反馈到单片机系统,通过补偿算法调整电流的输出,以此提高输出的精度和稳定性。
器件的选择,D/A转换器选用12位优质D/A转换芯片LTC2622,直接输出电压值,A/D转换器选用高精度12位模数转换芯片TLC2552。
1.1.3显示器模块方案
方案一:
使用LED数码管显示。
数码管采用BCD编码显示数字,对外界环境要求低,易于维护。
但根据题目要求,如果需要同时显示给定值和测量值,需显示的内容较多,要使用多个数码管动态显示,使电路变得复杂。
方案二:
使用LCD显示。
LCD具有轻薄短小,可视面积大,方便的显示汉字数字,分辨率高,抗干扰能力强,功耗小,且设计简单等特点。
综上所述,选择方案一。
采用LED数码管显示,对外界环境要求低,易于维护,成本较低。
1.1.4键盘模块方案
方案一:
采用独立式按键电路,每个按键单独占有一个I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
缺点为当按键较多时占用单片机的I/O口数目较多。
方案二:
采用标准4X4键盘,此类键盘采用矩阵式行列扫描方式,优点是当按键较多时可降低占用单片机的I/O口数目,而且可以做到直接输入电流值而不必步进。
题目要求可进行电流给定值的设置和步进调整,需要的按键比较多。
综合考虑两种方案及题目要求,采用方案二。
1.2总体方案
经过方案比较与论证,最终确定系统的组成框图如图1.4所示。
本系统由单片机AT89s51,D/A转换器LTC2622,A/D转换器LTC2622,数码管显示LED,OP07集成放大电路、由大功率构成的复合管电路组成。
图1.4系统组成框图
第二章单元模块设计
2.1恒定电流源电路设计
根据上述设计要求,实现电流调节范围为20mA~2000mA(输出直流电压≤10V),并顾及器件极限功耗的局限,电流源采用复合达林顿管的功率放大器和OP07型相结合的方案,间接控制电流大小,其主回路电路如图2.1所示。
图2.1恒流源电路图
图2.1中负载端的最高电压值(10V)决定了负载的最大电阻值(5Ω),它又决定了电流源工作电源的最低电压值及所用功率器件的极限电压参数。
后级Rs为采样电阻器,选用大功率的是水泥电阻丝,阻值为5.00Ω。
RL为负载电位器(0Ω~5Ω),选用大功率滑线变阻器。
由此可知负载电流IL≈VIN/Rs,与RL无关。
当VIN恒定不变时,改变采样电阻Rs的阻值大小,可改变IL的恒定值。
0P07输出端接复合管的基极,由于基极的电流很小,电流极限和功耗极限都满足。
同时复合管能满足5A大电流的要求,电流调整率小且稳定。
由于输出电流调整采用步进方式,其电流调整率≤l%,即lmA(输出直流电压≤10V)的指标,经计算,12位D/A转换器的转换精度达6.104mV(基准电压选2.5V),满足系统要求的精度。
采用LTC2622型12位D/A转换器作为电流输出控制的转换核心。
2.2控制器电路设计
2.2.1单片机最小系统设计
通过键盘模块输入给定的电流值或是步进调整信号传送给单片机,单片机在接受到信号后进行处理运算,并显示其给定的电流值,然后经D/A转换以输出电压,驱动恒流源电路实现电流输出,并将采样电阻上的电压经过A/D转换输入单片机系统,通过补偿算法进行数值补偿处理,调整电流输出,并驱动显示器显示当前的电流值。
最小系统的核心为AT89S51,为了方便单片机引脚的使用,我们将单片机的引脚用接口引出,电路如图2.2所示.P0口和P0.0~P0.7是LED段选接口;P1口作为A/D与D/A转换接口,其中P1.3~P1.5是D/A转换器的接口;P1.0~P1.2是A/D转换器的接口;P3口为键盘接口。
图2.2由AT89S51为核心的单片机最小系统
2.2.2D/A、A/D电路设计
(1)D/A转换器
根据设计基本要求,电流的输出范围为20mA~2000mA,将最高输出电流2000mA进行十进制~二进制转换有
要满足步进为1mA的要求,至少需选用十一位的D/A转换器,LTC2622是较好的选择。
LTC2622是带有缓冲基准输入(高阻抗)的双路12位电压输出DAC。
其输出电压VouT(IDEAL)=(k/
)VREF(k为二进制DAC输入代码的十进制等效值,N为分辨率,VREF是REF上的电压)有两个输出端口A和B,且它们可以同步刷新。
此外,该器件还包含上电复位功能。
通过3线串行总线可对LTC2622实现控制,可采用单5V电源进行供电。
在快速、慢速模式下功耗分别为8mW和3mW,输入数据的刷新率可达1.21MHz。
其原理图如图2.3所示。
图2.3D/A转换器
(2)A/D转换器
A/D转换器选用带信号调理、1mW功耗、双通道12位AD转换器TLC2552。
其串行数据接口包括5个:
片选输入口,串行施密特逻辑输入时钟SCLK,数据输入口AIN,转换数据输出口DOUT,指示数据准备就绪的状态信号输出口。
在电路中,TLC2552与单片机P1.0~P1.2口相接,通过编程模拟TLC2552的通信时序实现对TLC2552的操作,然后通过程序查询该管脚是否为低电平,从而实现对TLC2552中寄存器数据的读取。
如图2.4所示为A/D转换电路图,其中CON3接口与单片机最小系统的P1口相接。
图2.4A/D转换器
2.3键盘电路设计
键盘对单片机输入数据,键盘为4*4矩阵键盘,用AT89S51的并行口P1接4×4矩阵键盘,以P3.0-P3.3作输入线,以P3.4-P3.7作输出线 4×4矩阵键盘识别处理每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。
键盘处理程序的任务是:
确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
在设计中,使用标准的4x4键盘,可以实现0~9数字输入,“+”、“-”、“设置”。
键盘原理图见图2.5
图2..5键盘电路图
2.4显示器电路设计
本设计采用数码管BCD编码显示数字,数码管的显示有静态和动态两种方式,但是由于静态显示在显示位数较多,就需要占用更多的并行口,为简化电路,故本文采用动态显示方式。
根据设计精度要求LED采用4位一体共阳级数码,利用单片机的I/O口驱动LED数码管的亮灭,设计中由P0口驱动LED的段码显示,即显示字符,由P2口驱动LED的位码显示。
其原理图如图2.6所示。
图2.6LED数码管显示
第三章系统调试
干扰在大多数情况下都不会造成单片机硬件的损坏,但是会对软件正常运行造成不良的影响。
在此处如果产生干扰,则会使输出电流不稳定,且可调范围不大,则所测的数值误差较大。
3.1硬件抗干扰系统调试
1造成干扰的原因分析:
(1)运放零点漂移
由于运算放大器的零点漂移,温度漂移等带来的误差,可以通过温度补偿措施来解决此误差。
(2)采样电阻自热效应引起的误差
由于电阻在温度上升时阻值会发生变化,因此会引起温度飘移,给系统带来测量的误差。
(3)A/D,D/A转换误差
受AD转换器精度及基准源稳定程度的限制,不可避免地带来一定的误差,为了更精确的输出恒流电源,必须选用更多位数的AD、DA芯片。
(4)因外界突发干扰或仪表显示值等引起的随机误差或粗大误差。
(5)纹波对电流输出的影响。
2解决方案
(1)抑制干扰源
抑制干扰源就是尽可能的减小干扰源的du/dt>di/dt。
这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。
减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。
我们在此处主要是在电路板上每个IC电源端并接一个0.1μF或0.01μF高频电容,以减小电源对IC的影响。
(2)切断干扰传播路径
按干扰的传播路径可分为传导干扰和辐射干扰两类。
高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。
我们在此基础切断干扰源采用了如下措施:
1)在信号输入端增加电压跟随器增加输入阻抗的大小。
2)注意晶振布线。
晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来晶振外壳接地并固定
(3)选用为位数较高的A/D、D/A的芯片,我们在此处采用的都为十二位的芯片。
(4)采用大功率的康铜丝电阻,尽量减少电阻的热效应。
3.2软件系统调试
系统的调试不可能完全依靠硬件来解决,也需要采取软件抗干扰措施辅之,软件抗干扰成本低,见效快,有事半功倍的效果。
本系统采取了如下的软件抗干扰措施:
1、实时屏蔽中断
为了防止发生误中断,只有在量程选择完毕并导通V/A转换电路后才开定时器T0、T1。
2、主动初始化
电压表的程序一经运行,单片机系统的各种功能、端口、方式、状态等都被初始化。
主动初始化不仅要保证上电或复位后程序能够正确地实现各种初始化,而且在程序中每次测距前都要进行寄存器初始化刷新,包括内容不变的寄存器。
第四章系统功能及指标参数
4.1系统功能
1.上电之后,直接按数字键输入电流值,按其他键无效,数据格式为四位,不够的前面补零。
当输入四位的电流值之后如果没有超出20mA~2000mA的话,则左边四位数码管显示设定值,右边四位显示实测值。
2.按右下脚的“+”“-”可以实现步进,步进单位为1mA。
3.按右下脚的“设置”键可以直接设置20mA~2000mA的电流值,通过数字键设定,数据格式为四位,不够的前面补零。
4.2指标参数
(1)输出电流范围为0mA~2050mA,步进1mA,功能比发挥部分功能更优越;
(2)具有测试与显示输出电流的数字显示表,测量误差的绝对值≤测量值的0.1%+2个字,达到发挥部分要求;
(3)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值≤输出电流值的0.1%+1mA;
(4)纹波电流达到规定要求小于0.2mA;
4.3主要数据记录
4.3.1改变负载电阻主要输出数据
设定值(mA)
负载(欧姆)
实测值(mA)
纹波电压值(mV)
纹波电流值(mA)
相对误差
(mA)
绝对误差
20
1
20
0
0
3
20
0
0
5
20
2
0.4
0
0
200
1
198
0.01
3
198
0.01
5
198
2
0.4
2
0.01
400
1
395
0.0084
3
395
0.0084
5
395
2
0.4
5
0.0084
600
1
595
0.0084
3
595
0.0084
5
595
3
0.6
5
0.0084
800
1
795
0.00629
3
795
0.00629
5
795
3
0.6
5
0.00629
1000
1
995
0.005
3
995
0.005
5
995
3
0.6
5
0.005
1500
1
1500
0
3
1500
0
5
1500
3
0.6
0
0
2000
1
2000
0
3
2000
0
5
2000
2
0.4
0
0
4.3.2步进设定电流主要输出数据
4.3.2.110mA步进
设定值(mA)
测量值(mA)
相对误差(mA)
绝对误差
20
19.5
0.5
0.026
30
29
1
0.034
40
39.5
0.5
0.013
50
49.5
0.5
0.01
60
59.5
0.5
0.008
70
70
0
0
80
79.5
0.5
0.006
90
89
1
0.011
100
99.5
0.5
0.005
4.3.21mA步进
设定值(mA)
测量值(mA)
相对误差(mA)
绝对误差
20
20
0
0
21
21
0
0
22
22.4
0.4
0.018
23
23.6
0.6
0.025
24
24.8
0.8
0.032
25
26
1
0.038
26
26.5
0.5
0.019
27
27.5
0.5
0.018
28
29
1
0.034
29
30
1
0.033
30
30.5
0.5
0.016
第五章总结
在设计制作数控直流恒流源的过程中,我们深切体会到,理论与实践相结合的极端重要性。
本系统的研制主要应用到了模拟电子技术、数字电子技术、单片机控制技术、大功率电源设计、电子工艺等多方面的知识,所设计的基于单片机程序控制的压控恒流源,达到了题目要求,同时也使我们的动手能力和电子设计能力得到了极大锻炼。
系统输出实际测试结果表明,本系统输出电流稳定,不随负载和环境温度变化,并具有很高的精度,输出电流误差范围±5mA,输出电流可在20mA~2000mA范围内任意设定,因而可实际应用于需要高稳定度小功率恒流源等领域。
在系统设计过程中,力求硬件电路参数合理,线路简单,发挥软件编程灵活的特点,通过多次的调试,不断提高系统的精度和电流的稳定性,来满足系统设计的要求。
同时遇到了许多困难和意料之外的事情,设计进度比较慢,但通过仔细的分析和进行多方面的调整后解决了问题。
我们从中体会了共同协作和团队精神的重要性和提高了自身的综合能力。
附录一原理图
附录二PCB板
附录三程序流程图
附录四程序
#include
#include
typedefunsignedcharuchar;
typedefunsignedintuint;
/*********************************
段码
*********************************/
ucharcodeTable[10]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
/*********************************
位码
*********************************/
ucharcodeSelect[8]={
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe};
ucharA_Table[37]={
20,23,27,34,38,42,44,48,52,56,
60,65,70,75,77,79,82,85,88,95,
97,100,104,108,110,115,117,120,
122,125,128,131,134,136,140,138,143};
/*********************************
AD_SPI控制位
*********************************/
sbitAD_CS=P1^2;
sbitAD_SDO=P1^0;
sbitAD_SCLK=P1^1;
/*********************************
DA_SPI控制位
*********************************/
sbitDA_CS=P1^3;
sbitDA_SCK=P1^4;
sbitDA_SDI=P1^5;
/*********************************
键值
*********************************/
#defineS10xe7
#defineS20xd7
#defineS30xb7
#defineS40x77
#defineS50xeb
#defineS60xdb
#defineS70xbb
#defineS80x7b
#defineS90xed
#defineS100xdd
#defineS110xbd
#defineS120x7d
#defineS130xee
#defineS140xde
#defineS150xbe
#defineS160x7e
bitflag;
ucharkk;
doublek=0,A=1000;//设定电流大小
uintTemp2=1000,AD_Value;//输入电流量转化输入DA的值kTemp电流暂存
floatAdd,Buf[1];//Buf[2];
/*********************************
系统初始化
*********************************/
voidSysInit(void)
{
EA=1;
TMOD=0x01;
TH0=0xf8;//2ms
TL0=0xd7;
ET0=1;
TR0=1;
kk=3;
}
/*********************************
写TLC_255