1、. . 基于单片机的恒流源设计摘 要恒流源在日常生活中扮演着重要的角色,很多电子设备需要工作时候的电流处于稳定状态。我们把可以保证给工作中负载供应恒定电流的电源叫做恒流源。恒流源的用途很丰富,它能够在脉冲或者差动放大电路中产生作用,同样也能够作为它的有源负载,又可以提供应放大电路偏流用来使它的静态功能工作点处于稳定。本文介绍了一种基于AT89C51单片机的数控恒流源的研制,该系统主要是由单片机系统电路、DAC转换电路恒流电路。设计的恒流系统具有精度高、稳定性高的特点。在数字输入信号局部主要是利用单片机输出的数字量同时配有按键数字键控功能。DAC转换模块将单片机输出的数字量转换为模拟量,以作为恒
2、流电路的基准电压。恒流电路局部以集成运放和达林管组成的电流负反应电路来实现电流的恒定输出。本设计为了增加人机交互采用数码管显示,可以使得数控恒流的效果更加直观。本文阐述了准确实现恒流源的原理设计、完整的硬件原理图和软件流程图,并对局部软件模块的设计思想进展分析。与此同时,也对生活中的可实现性进展仔细测试和仿真。关键词:AT89C51;单片机;DA转换;恒流源。A study of the constant current source based on MCUAbstractConstant current sourcein everyday lifeplays an importantrol
3、e inmany electronicdevicesneed to workin a stable statewhenthecurrent. Wecan guarantee thatthe workloadtoa constant currentpowersupplyis called theconstant current source.Constant current sourceuses a veryrich,it can inthe differential amplifier circuitinthe pulseoran effect, italsocan be used asan
4、activeload, and canbe usedto providebias currentto the amplificationcircuit ofthe staticfunction ofthe operating pointso that itis stable.This paperintroduces anumericalconstant current sourceAT89C51 microcontrollerdevelopment, the system is dominated bysingle-chipsystem circuit, DAC converter circu
5、itconstant current circuit. Designedconstant currentsystemwith high precision,high stabilitycharacteristics.In themainpart ofthe digital input signalisdigital outputusing thesamechipwithdigitalkeying functionkeys. DAC conversionmodulemicrocontrollerdigital outputis converted toanalog,asthe reference
6、 voltageconstant current circuit. Part ofan integratedconstant current circuitop amptubesandDarlingcurrentnegative feedbackcircuit to achievea constantcurrentoutput.The design ofhuman-puter interactionin order to increasethe use of digitaltube display, you can make the effectmore intuitivenumericalc
7、onstant. This paper describes theprecisedesign principlesto achievea constant current source, a plete hardware schematics andsoftware flow chart, and part of the softwaremodule designideasfor analysis.At the same time, but also the life of therealizationcarefultestingand simulation.Key words:AT89C51
8、;SCM; DA conversion; constant current source第一章 课题背景所谓恒流源必是输出电流与端电压无关、无温漂,同时其输出电流应该与所连接的外部构造无关。换句话就是输出电流保持稳定。具体描述如下:(1) 输出电流恒定且与负载变化无关; 2 根本无温漂; 3 内阻趋向于无穷大。恒流源在电子线路和模拟集成电路中是应用最多的电路单元之一,主要用于:(1) 提供偏置。晶体管电路通常需要专门的偏置电路提供偏置电压以到达稳定静态工作点的作用;(2) 集电极有源负载。从上述表达式可知,提高增益的一个方法就是增大负载的电阻,但是这样不仅会造成负载上的压降上升,使输出电压的动
9、态X围减小,而且从本钱和工艺上考虑也是很不合算。各方考虑主要利用三极管恒流源来代替集电极负载电阻,便组成了有源负载集电极放大器。 (3) 提高差分放大电路性能。用恒流源三级管充当差分放大电路一个阻值很大的长尾电阻Re,它的优点很多,因此,这种方法在集成运放中被广泛采用。(4) 用恒流源的基准电压电路是集成稳压器的重要组成局部。本设计是一个具有可数控、高精度、高稳定度的单片机数控恒流源。可以控制输出电流X围为03A,可以满足各类要求。第二章 恒流源设计的原理恒流源是一个应用最多的设计单元之一,电路局部通常分为:以集成运放作为核心元件的集成运放恒流源、以场效应管为核心部件的MOS管恒流源、以晶体管
10、为核心部件的晶体管恒流源。图1 晶体管恒流源 图2 场效应管恒流源 图3 集成运放恒流源 由于使用晶体管恒流源主要考虑到晶体管的节电压Ube根本恒定,因为它主要是三极管构成。上述晶体管电流输出:I=Is = Ube/Rs,具体恒流输出过程如下。 -1 -2 -3(1) 晶体管恒流电路优点:无特殊的元件使得设计简单而且可行性较高,电流输出可以通过Rs控制。2晶体管恒流电路优点:元器件本身差异造成不同管子的晶体管节电压Ube差距较大,个体差异使得晶体管的节电压Ube即使是同一批次的产品仍会有一定的波动。因此无法满足高精度的要求。场效应晶体管作为主要组成部件的恒流电路,如图2所示。Rg1、Rg2分压
11、,稳定G点电位。由于MOSFET的G电压被钳位.当流过MOSFET的电流有增大的趋势时,负反应电阻上的压降增大,使MOSFET截止趋势增加,电流下降。同样的当流过MOSFET的电流有减小的趋势时,负反应电阻上的压降降低,使MOSFET导通趋势增加,电流升高,从而到达恒定输出的作用。具体恒流输出Id如下: -1 -2 -3集成运放恒流源的主要组成部件是运算放大器和晶体管。主要运用 “虚短和“虚断,使用运放作为反应的集成运放恒流源的主要特性是高精度。典型的运放恒流源如图(3)所示,具体恒流输出如下: 集成运放的虚断特性: 集成运放的虚短特性: 集成运放恒流源恒定输出:集成运放和晶体管作为主要部件的
12、恒流源电路可以扩大输出电流的取值X围,同时温漂更小,恒流性能更高,尤其在负载一端需接地,要求大电流的场合,获得了广泛应用。本设计最后采用的是精细的运算放大器和大功率的达林顿管组合,运用电流深度负反应,到达恒流的目的。第三章 恒流源系统的硬件构造本文介绍的设计硬件图如图4所示,硬件电路局部主要是由单片机最小系统、DAC模块、恒流电路、数码管显示电路、按键控制电路和电源模块电路组成。系统框图如下所示:图4 恒流源设计系统框图3.1单片机最小系统电路单片机的应用正在不断深入,它往往作为一个核心部件,不可以孤单的行使职责。要与其他除它之外的电路相搭配,只有这样才能够让单片机正常工作。这种能使单片机工作
13、的最简电路,我们叫做单片机最小系统。就51而言,它的最小系统主要包括三个局部。下面给出一个51系列单片机的最小系统电路。 图5 单片机最小系统3.1.1复位电路复位电路就是把电路恢复到起始状态的电路。能够在系统上电时给予复位信号,并且会一直等到系统的电源不再改变为止才会撤离所给的复位信号,这就是复位电路的功能所在。复位后的CPU的主要特征是各IO口呈现高电平。对于单片机而言根本的复位操作是将单片机的复位引脚RST上给定一个高电平信号并让该信号维持在2个机器周期以上,便可触发系统复位中断从而将系统复位。单片机系统的复位方式有:按键复位和上电复位。(1)按键复位复位电路最简单的方式就是通过按键复位
14、直接在单片机复位引脚RST上参加高电平。单片机的复位引脚接至电阻R1一端,电阻R1另外一端接地。电路如下所示。常用的途径是在复位引脚端和正电压之间安装复位按键。当给一个力使按键被压迫向下,单片机的复位方位就会保持Vcc。假设保持按下10ms即可让系统实现复位。 图6 按键复位 图7上电复位电路图8复位电路(2)上电复位上电复位的电路图如图7所示,具体实现方式如下:系统上电瞬间单片机复位引脚RST电压时间变化曲线如下所示。从曲线上易得当系统在一刹那完成上电,根据电容工作原理特性,它两端的Uc1不可能实现迅猛的变化,故电源电压全部加到R1上,然后电容C1开场充电,时间常数T=R1*C1,此时电容电
15、压逐渐增加,R1两端电压逐渐降低,如果R1两端电压从高电平到低电平持续时间到达2个机器周期,即可实现单片机复位。图9:Urst电压时间曲线。在本设计中采用了按键复位和上电复位的两种模式如图8所示上电复位完成系统初始化,同时增加的手动按键复位可以方便调试使用。3.1.2晶振电路在单片机最小系统里晶振的作用是给单片机输入时钟信号,这个时钟信号就是单片机的工作速度。单片机工作的最小时间计量单位就是由这个晶振决定的。图10晶振电路晶振电路电容选择的原那么1C1,C21,因为每一种晶振都有各自的特性,所以最好按制造厂商所提供的数值选择外部元器件。2在误差允许的区域内,C1和C2值都是越小,实现的功能就越
16、准确,如果C1和C2值比正常数值大时,可能会使振荡器更加稳定,可是也会增加响应的时间。3.2 TLC5615 DAC简介及其与单片机的接口电路3.2.1 TLC5615芯片的构造框图与特点TLC5615是一种兼容SPI和Micro-Wire串行总线接口的CMOS型的10位DAC芯片,它带有缓冲基准输入高阻抗的电压输出数字/模拟转换器DAC,性能比早期电流型输出的DAC要好,只需要通过3跟串行总线就可以完成10为数据的串行输入,易于和工业标准的微处理器或单片机接口,适用于各种供电测量的测试仪表、移动,也适用于数字失调与增益调整以及工业控制场合。下面简要介绍TLC5615芯片各个引脚的功能。 图1
17、1 TLC561引脚图 DIN:数字信号输入端; SCLK:串行时钟输入端; CS :片选端,低电平有效; DOUT: 串行数据输出; AGND:模拟地; REFIN:基准电压输入端; OUT:DAC转换模拟信号输出端; Vcc:正电源电压端。3.2.2 TLC5615的使用方法 图12 TLC561时序图 由TLC561时序图可以看出,当片选CS信号有效时,数字信号输入DIN由时钟SCLK同步输入或输出,数据传送时MSB在前LSB在后。在时钟信号SCLK的上升沿将数字信号,片选CS的上升沿把数据传送至DAC存放器。当片选信号CS无效时,DAC芯片使能制止。此时无法进展DAC转换。3.2.3
18、TLC5615与单片机的接口电路 图13 TLC5615与单片机的接口电路D/A转换器的片选端口CS连接至单片机的P1.1口。D/A转换器的SPI总线时钟端口SCLK连接至单片机的P1.2口。D/A转换器的数字输入接口DIN连接至单片机的P1.3口。本接口的硬件电路十分简单,易于理解,工作稳定,TLC5615三线接口与SPI、QSPI以及Micro-wire串行标准兼容,一般只需要执行2个周期一个写周期传送一个8位二进制数,就可以完成DAC操作,显然转换速度很快。采用接口接单的D/A转换器TLC5615,其输出电压公式:为基准电压,n为单片机控制输出端的10比特数据。3.3 恒流电路本设计采用
19、集成运放构成的深度负反应恒流源电路,见图12。电路中,恒流源的参考电压一般让它等于数字与模拟信号转换之后的输出电压,主要是两局部组成电压跟随器,根据输出的独特形式便可得到输出。因为跟随器是作为负反应来实现作用的,所以说良好的稳定性是电流源的闪光点。R3可采用大功率的水泥电阻,阻值1欧,功率5W,能承受较高温度,使其温度影响减至最小。图14 恒流电路具体恒流过程分析:假设负载电阻R2变化从而会导致IC增加所以导致流过R3的电流增加而使Ur3增加,反应到运算放大器的N端从而减少运算放大器的输出,从而减少达林顿管的导通性相当增大了输出电阻而使IC减少直到到达原来的平衡故使之恒流。R2ICUr3 UF
20、eedback UR4IBIC由于反应的作用而使此电流恒定。即IB恒定有由于IC=*IB而IB恒定所以IC恒定故恒流由深度负反应中的虚断原理知,流过电阻R3的电流IR为:IR=VIN/R3 其中,VIN为运放LM358的正向输入端电压,而取R3=1。那么通过R2的输出电流IO=IR,那么负载电流只与固定的输入电压VIN的大小有关。那么通过控制输入电压VIN的大小来控制输出负载电流的大小,这也就是本系统设计的原理所在。3.4 数码管显示电路数码管依次由a,b,c,d,e,f,g,dp8段,从位选的角度来说他们又可以分为共阴极和共阳极.位选信号时数码管选通信号,当某个数码管位选通是,该数码管就可以
21、发光,当输入不同的显示笔段时候,又可以显示不同的数字和字母这就是数码显示的控制方法。本设计在显示方面采用了数码管的动态显示的方法。数码管段选信号输入时运用了轮询的方法,在轮流显示过程中,每位段码显示时间为12ms,由于人的视觉暂留现象不会感觉到这种闪烁现象。其电路如下:图15 数码管显示电路3.5 按键控制电路本系统的单片机的按键步进控制方式是使用I/O口的状态表示。本设计用的是P2.4和P2.5口,程序循环执行键盘扫描任务,当某一端口低电平0,那么表示有按键键入。图16 按键控制电路3.6 电源电路在本设计的系统中,线性电压的控制输出,作为电源,为单片机、DA转换器、运放和达林顿功率管提供工
22、作电压或参考电压等。典型的电源电路的系统框图如下所示:交流220变压器降压整流滤波稳压输出图17 电源模块电路框图在本设计中采用的电源设计电路如下所示:图18 电源模块电路第四章 系统的软件设计4.1 总体流程图本软件设计以AT89C51为控制核心,实现可数控、高精度的恒流源输出。程序中分几大模块:数码显示模块,DAC模块,按键判断局部。首先单片机判断初始值的大小并控制DA转换器输出并在4位LED上显示其输出给定值的大小;如果有按键“ 按下,那么单片机控制DA的输出值以步进10mV增加;如果有按键“ 按下,那么单片机控制DA的输出值以步进10mV减少,那么从DA输出到恒流源电路的负载输出控制电
23、阻R3=1,相应的电流输出也增或减10,并且LED能及时显示其输出给定值大小。程序流程图如下:初始化是否有“按下?是否有“按下?控制DA输出值,并显示输出电流大小(mA)是否有预置值?按键+10按键减10YYY 图19 软件流程图4.2子程序流程图4.2.1 数码显示子程序流程图定义共阴极字符列表求出所显示数据的千位、百位、十位、各位上的数09段选显示查字符列表,为选为高电平这该位选中并显示相应的数,延时10mS,位选为低电平,该位不显示。循环执行图20 显示子程序流程图4.2.2 D/A转换子程序流程图本系统中的DA转换器TLC5615在工作时,只有当片选 EMBED * MERGEFORM
24、AT 为低电平时,串行输入数据才能被移入16位移位存放当 EMBED * MERGEFORMAT 为高电平时,当SCLK时钟每上升一次,DIN的一位数据就会随之放进一个十六位的存放器中。 电源模拟电路输入接 口 数 / 模转换器数字量输入Vi模拟电压输出参考电压Vref图21 D/A转换子程序流程图4.2.3 按键控制子程序流程图一般情况下,一个按键按下过程中存在着机械抖动,在本设计中主要采用的是软件延时消除按键过程的抖动,具体的软件流程图如下所示:图22 按键控制子程序流程第五章 软件仿真图23 protues软件仿真图第六章 系统测试与误差分析6.1测试仪器 FLUCK数字万用表; 数字示
25、波器; PC机; 电阻箱,调整X围09999;6.2测试数据和误差分析系统测试以旋转式电阻箱为负载,测试时,把万用表与负载串联。1, 设定输出电流为20mA。小X围改变负载RL大小,输出电压在10V以内变化:给定电流:I (mA)负载大小:RL()输出电压:VO(V)输出电流IO(mA)2010.01102020.04202030.06202040.08202050.10202060.1220表1 负载变化恒流数据表2, 大X围改变负载大小,给定值为I=20mA,实测输出电流值:RL输出电压值UOV输出电流值IO(mA)110021.719.73100021.621.690020.122.38
26、0017.922.3770015.622.360013.322.250011.122.24008.8022.03006.6022.02004.3021.51002.1021902.0322.6801.8122.6701.5822.6601.3522.5501.1222.4400.8922.3300.6722.3200.4422100.2222表2 负载变化恒流数据表3,步进为10mA,负载电阻为6时给定电流值和输出值:给定电流值I(mA)负载两端电压UO(V)输出电流值IO(mA)100.0610200.1220300.1830400.2440500.3050600.3660700.4168.
27、33800.4778.33900.5388.331000.591021100.641131200.701221300.761281400.821381500.881482000.5971992100.6272092200.6572192300.6872292400.7232412500.7525010003.0091002表3 数控恒流数据表结 论本次设计主要是针对电子设备在工作中要求供应的电流保持恒定不变,主要研究单片机的数控恒流源的研制。系统的测试和误差分析,借助万用表和可变电阻箱。在本次设计中遇到了数据的测试、器件等的选择和使用等的问题,查阅资料和询问教师同学而得知。在这次设计中我不仅学
28、到了很多之前未知的知识,而且对所学的根底理论、根本技能和专业知识的认识有了进一步稳固和加深,同时对单片机系统有了深度的学习。该设计在很大程度上减少了不必要的误差,并且大大提高了工作的效率。参考文献1 欧阳文,ATMEL系列单片机的原理与开发实践,中国电力,20072 康华光,电子技术根底模拟局部 第五版,高等教育,20053 康华光,电子技术根底数字局部 第五版,高等教育,20054 全国大学生电子设计竞赛组委会,全国大学生电子设计竞赛获奖作品选编, 理工大学,20055 田良、王尧,综合电子设计与实践,东南大学,2002 6 吴戈、李玉峰,案例学单片机C语言开发,人民邮电,20087 X坤、
29、宋戈、赵红波,51单片机C语言应用开发技术大全,人民邮电,20088 侯玉宝、陈忠平、李成群,基于Proteus的51系列单片机设计与仿真,电子工业 ,20089 X坤、高征红,Protel99SE电路设计实例教程,清华大学,200810郭惠、解书钢,Protel99SE常用功能与应用实例精讲,电子工业,2008118-bit Microcontroller With 4K Bytes Flash AT89C51. ATMEL,2000128-bit Microcontroller With 8K Bytes Flash AT89LV51.ATMEL,2000致 谢完毕本论文之际,我谨对XX学
30、院电气工程系王开全教师致以崇高的敬意和由衷的感谢。本论文是在导师王开全教师的精心指导下完成的。在整个设计研究过程中,导师在各方面给予了,给我指导查阅文献和解决难题使本论文得以顺利完成。教师的知识储藏和经历都很丰富、思维敏捷,并在我研究中不断的给以鼓舞和不倦的教导。从课程的学习、论文的选题、课题的研究到论文撰写等等不仅凝聚着导师的心血和汗水,还有同学的友好帮助。教师待人诚恳,心胸宽广,精深的知识储藏令我受益匪浅。同学友好积极给予相关需求,在此对我的导师和同学表示衷心的感谢!最后,对各位教师给我的论文审阅深表感谢,并渴望得到批评指正。附录1 程序设计程序源代码:#include#define uc
31、har unsigned char#define uint unsigned int#define Vref 2.048void delay(unsigned char time); /*声明延时函数,延时n ms*/void TLC5615(unsigned int dat2); /* 声明TLC5615转换函数*/void display(unsigned int dat);sbit P20=P20;sbit P21=P21;sbit P22=P22;sbit P23=P23;sbit P24=P24;sbit P25=P25;sbit SCLK5615=P13; /*定义时钟信号sclk
32、的IO口*/sbit DATA5615=P12; /*定义数据输入din的IO口*/sbit CS5615=P11; /*定义片选信号cs的IO口*/uint dat=1234,dat2; uchar DisplayData=0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F; /*09字形码共阴极*/uint thous,hund,ten,num; /*数码管要显示的数值,即给定的电流值,以mA为单位*/void main()dat2=(float)dat/1000*1024)/2/Vref; while(1) /死循环 if(P24= =0)
33、 delay(1000); if(P24= =0) delay(1000); dat=dat+10; dat2=(float)dat/1000*1024)/2/Vref; /有按键加10 ; if(P25= =0) delay(1000);if(P25= =0)delay(1000); dat=dat-10; dat2=(float)dat/1000*1024)/2/Vref; /有按键减掉10; if(dat3000) dat=0;display(dat); TLC5615(dat2); /* 转换输出电压=2*Vref*code/1024,输出电压最大为电源电压*/ void displa
34、y(unsigned int dat) thous=dat/1000; /提取千位数 hund=dat%1000/100; /提取百位数 ten=dat%100/10; /提取十位数 num=dat%10; /提取个位数if(dat=1000)P0=DisplayDatathous; /千位数码管选中并且决定是否显示 P20=0; delay(1); P20=1;if(dat=100)P0=DisplayDatahund; /百位数码管选中并且决定是否显示P21 = 0;delay(1);P21 = 1;if(dat=10)P0=DisplayDataten; /十位数码管选中并且决定是否显示
35、P22=0;delay(1);P22=1;P0=DisplayDatanum; /个位数码管选中并且决定是否显示P23=0; delay(1);P23=1; void TLC5615(unsigned int dat2) /*TLC5615转换函数*/ unsigned char i; CS5615=1; DATA5615=0; SCLK5615=0; /* CS高电平期间,SCLK为低电平*/ dat2=6; /* 数字量dat2左移6位,保存原dat2低10位。新dat2的高10位有效,低6位全0*/ CS5615=0; /* CS片选有效,开场接收数据*/ SCLK5615=0; for
36、(i=0;i12;i+) /* 发送10位数据和2位0,从最高位开场发送。 */ DATA5615=(bit)(dat2&0x8000); /* 非级联方式,只需要输入12位数据。*/ /*当dat2与0x8000相与然后强制转换后有一位,这时只就只可以直接送给DATA5615端进展发送*/ SCLK5615=1; /* SCLK上升沿,数据输入*/ dat2=1; SCLK5615=0; /*SCLK恢复低电平*/ CS5615=1; /* CS上升沿,数据送到DAC存放器*/ SCLK5615=0; /* CS的上升沿和下降沿只有在SCLK为低的时候有效*/ DATA5615=0; /* 拉高片选端,拉低时钟端与数据端,回到初始状态*/延时函数void delay(unsigned char time) /延时 10 ms unsigned char x,y,z; for (x=0;xtime;x+) for (y=0;y1;y+) for (z=0;z=120;z+); . .word.zl.