1、基于单片机的恒流源设计摘 要恒流源在日常生活中扮演着重要的角色,很多电子设备需要工作时候的电流处于稳定状态。我们把可以保证给工作中负载供给恒定电流的电源叫做恒流源。恒流源的用途很丰富,它能够在脉冲或者差动放大电路中产生作用,同样也能够作为它的有源负载,又可以提供给放大电路偏流用来使它的静态功能工作点处于稳定。本文介绍了一种基于 AT89C51 单片机的数控恒流源的研制,该系统主要是由单片机系统电路、DAC 转换电路恒流电路。设计的恒流系统具有精度高、稳定性高的特点。在数字输入信号部分主要是利用单片机输出的数字量同时配有按键数字键控功能。DAC 转换模块将单片机输出的数字量转换为模拟量,以作为恒
2、流电路的基准电压。恒流电路部分以集成运放和达林管组成的电流负反馈电路来实现电流的恒定输出。本设计为了增加人机交互采用数码管显示,可以使得数控恒流的效果更加直观。本文阐述了精确实现恒流源的原理设计、完整的硬件原理图和软件流程图,并对部分软件模块的设计思想进行分析。与此同时,也对生活中的可实现性进行仔细测试和仿真。关键词:AT89C51;单片机;DA 转换;恒流源。A study of the constant current source based on MCUAbstractConstant current source in everyday life plays an important
3、 role in many electronic devices need to work in a stable state when the current. We can guarantee that the work load to a constant current power supply is called the constant current source. Constant current source uses a very rich, it can in the differential amplifier circuit in the pulse or an ef
4、fect, it also can be used as an active load, and can be used to provide bias current to the amplification circuit of the static function of the operating point so that it is stable.This paper introduces a numerical constant current source AT89C51 microcontroller development, the system is dominated
5、by single-chip system circuit, DAC converter circuit constant current circuit. Designed constant current system with high precision, high stability characteristics. In the main part of the digital input signal is digital output using the same chip with digital keying function keys. DAC conversion mo
6、dule microcontroller digital output is converted to analog, as the reference voltage constant current circuit. Part of an integrated constant current circuit op amp tubes and Darling current negative feedback circuit to achieve a constant current output.The design of human-computer interaction in or
7、der to increase the use of digital tube display, you can make the effect more intuitive numerical constant. This paper describes the precise design principles to achieve a constant current source, a complete hardware schematics and software flow chart, and part of the software module design ideas fo
8、r analysis. At the same time, but also the life of the realization careful testing and simulation.Key words:AT89C51;SCM; DA conversion; constant current source第一章 课题背景所谓恒流源必是输出电流与端电压无关、无温漂,同时其输出电流应该与所连接的外部结构无关。换句话就是输出电流保持稳定。具体描述如下:(1) 输出电流恒定且与负载变化无关;(2) 基本无温漂;(3) 内阻趋向于无穷大。恒流源在电子线路和模拟集成电路中是应用最多的电路单元之
9、一,主要用于:(1) 提供偏置。晶体管电路通常需要专门的偏置电路提供偏置电压以达到稳定静态工作点的作用;(2) 集电极有源负载。从上述表达式可知,提高增益的一个方法就是增大负载的电阻,但是这样不仅会造成负载上的压降上升,使输出电压的动态范围减小,而且从成本和工艺上考虑也是很不合算。各方考虑主要利用三极管恒流源来代替集电极负载电阻,便组成了有源负载集电极放大器。 (3) 提高差分放大电路性能。用恒流源三级管充当差分放大电路一个阻值很大的长尾电阻 Re,它的优点很多,因此,这种方法在集成运放中被广泛采用。(4) 用恒流源的基准电压电路是集成稳压器的重要组成部分。本设计是一个具有可数控、高精度、高稳
10、定度的单片机数控恒流源。可以控制输出电流范围为 03A,可以满足各类要求。第二章 恒流源设计的原理恒流源是一个应用最多的设计单元之一,电路部分通常分为:以集成运放作为核心元件的集成运放恒流源、以场效应管为核心部件的 MOS 管恒流源、以晶体管为核心部件的晶体管恒流源。图 1 晶体管恒流源 图 2 场效应管恒流源 图 3 集成运放恒流源 由于使用晶体管恒流源主要考虑到晶体管的节电压 Ube 基本恒定,因为它主要是三极管构成。上述晶体管电流输出:I=Is = Ube/Rs,具体恒流输出过程如下。-(1)( 21*RgVcUb-(2)e-(3)sI/(1) 晶体管恒流电路优点:无特殊的元件使得设计简
11、单而且可行性较高,电流输出可以通过 Rs 控制。(2)晶体管恒流电路优点:元器件本身差异造成不同管子的晶体管节电压 Ube 差距较大,个体差异使得晶体管的节电压 Ube 即使是同一批次的产品仍会有一定的波动。因此无法满足高精度的要求。场效应晶体管作为主要组成部件的恒流电路,如图 2 所示。Rg1、Rg2 分压,稳定G 点电位。由于 MOSFET 的 G 电压被钳位.当流过 MOSFET 的电流有增大的趋势时,负反馈电阻上的压降增大,使 MOSFET 截止趋势增加,电流下降。同样的当流过MOSFET 的电流有减小的趋势时,负反馈电阻上的压降降低,使 MOSFET 导通趋势增加,电流升高,从而达到
12、恒定输出的作用。具体恒流输出 Id 如下:-(1)21*RgVcUg-(2)Idss-(3))(pId集成运放恒流源的主要组成部件是运算放大器和晶体管。主要运用 “虚短”和“虚断” ,使用运放作为反馈的集成运放恒流源的主要特性是高精度。典型的运放恒流源如图(3)所示,具体恒流输出如下:集成运放的虚断特性: 0PNI集成运放的虚短特性: refpU集成运放恒流源恒定输出: 1RI集成运放和晶体管作为主要部件的恒流源电路可以扩大输出电流的取值范围,同时温漂更小,恒流性能更高,尤其在负载一端需接地,要求大电流的场合,获得了广泛应用。本设计最后采用的是精密的运算放大器和大功率的达林顿管组合,运用电流深
13、度负反馈,达到恒流的目的。第三章 恒流源系统的硬件结构本文介绍的设计硬件图如图 4 所示,硬件电路部分主要是由单片机最小系统、DAC 模块、恒流电路、数码管显示电路、按键控制电路和电源模块电路组成。系统框图如下所示:图 4 恒流源设计系统框图3.1单片机最小系统电路单片机的应用正在不断深入,它往往作为一个核心部件,不可以孤单的行使职责。要与其他除它之外的电路相搭配,只有这样才能够让单片机正常工作。这种能使单片机工作的最简电路,我们叫做单片机最小系统。就 51 而言,它的最小系统主要包括三个部分。下面给出一个 51 系列单片机的最小系统电路。图 5 单片机最小系统3.1.1 复位电路复位电路就是
14、把电路恢复到起始状态的电路。能够在系统上电时给予复位信号,并且会一直等到系统的电源不再改变为止才会撤离所给的复位信号,这就是复位电路的功能所在。复位后的 CPU 的主要特征是各 IO 口呈现高电平。对于单片机而言基本的复位操作是将单片机的复位引脚 RST 上给定一个高电平信号并让该信号维持在 2 个机器周期以上,便可触发系统复位中断从而将系统复位。单片机系统的复位方式有:按键复位和上电复位。(1)按键复位复位电路最简单的方式就是通过按键复位直接在单片机复位引脚 RST 上加入高电平。单片机的复位引脚接至电阻 R1 一端,电阻 R1 另外一端接地。电路如下所示。常用的途径是在复位引脚端和正电压之
15、间安装复位按键。当给一个力使按键被压迫向下,单片机的复位方位就会保持 Vcc。假如保持按下 10ms 即可让系统实现复位。图 6 按键复位 图 7 上电复位电路 图 8 复位电路(2)上电复位上电复位的电路图如图 7 所示,具体实现方式如下:系统上电瞬间单片机复位引脚 RST 电压时间变化曲线如下所示。从曲线上易得当系统在一刹那完成上电,根据电容工作原理特性,它两端的 Uc1 不可能实现迅猛的变化,故电源电压全部加到 R1 上,然后电容 C1 开始充电,时间常数 T=R1*C1,此时电容电压逐渐增加,R1 两端电压逐渐降低,如果 R1 两端电压从高电平到低电平持续时间达到 2 个机器周期,即可
16、实现单片机复位。uRt0V c c复位电位复位图 9:Urst 电压时间曲线。在本设计中采用了按键复位和上电复位的两种模式(如图 8 所示)上电复位完成系统初始化,同时增加的手动按键复位可以方便调试使用。3.1.2 晶振电路在单片机最小系统里晶振的作用是给单片机输入时钟信号,这个时钟信号就是单片机的工作速度。单片机工作的最小时间计量单位就是由这个晶振决定的。图 10 晶振电路晶振电路电容选择的原则(1)C1 ,C21,因为每一种晶振都有各自的特性,所以最好按制造厂商所提供的数值选择外部元器件。(2)在误差允许的区域内,C1 和 C2 值都是越小,实现的功能就越精确,如果 C1 和 C2值比正常
17、数值大时,可能会使振荡器更加稳定,可是也会增加响应的时间。3.2 TLC5615 DAC简介及其与单片机的接口电路3.2.1 TLC5615 芯片的结构框图与特点TLC5615 是一种兼容 SPI 和 Micro-Wire 串行总线接口的 CMOS 型的 10 位 DAC 芯片,它带有缓冲基准输入(高阻抗)的电压输出数字/模拟转换器(DAC) ,性能比早期电流型输出的 DAC 要好,只需要通过 3 跟串行总线就可以完成 10 为数据的串行输入,易于和工业标准的微处理器或单片机接口,适用于各种供电测量的测试仪表、移动电话,也适用于数字失调与增益调整以及工业控制场合。下面简要介绍 TLC5615
18、芯片各个引脚的功能。图 11 TLC561 引脚图 1 DIN:数字信号输入端;2 SCLK:串行时钟输入端;3 CS :片选端,低电平有效;4 DOUT: 串行数据输出;5 AGND:模拟地;6 REFIN:基准电压输入端;7 OUT :DAC 转换模拟信号输出端;8 Vcc:正电源电压端。3.2.2 TLC5615 的使用方法图 12 TLC561 时序图 由 TLC561 时序图可以看出,当片选 CS 信号有效时 ,数字信号输入 DIN 由时钟 SCLK同步输入或输出,数据传送时 MSB 在前 LSB 在后。在时钟信号 SCLK 的上升沿将数字信号,片选 CS 的上升沿把数据传送至 DA
19、C 寄存器。当片选信号 CS 无效时, DAC 芯片使能禁止。此时无法进行 DAC 转换。3.2.3 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 位二进制数) ,就可以完成 D
20、AC 操作,显然转换速度很快。采用接口接单的 D/A 转换器 TLC5615,其输出电压公式:OrefV=21024n( 为基准电压,n 为单片机控制输出端的 10 比特数据。 )refV3.3 恒流电路 本设计采用集成运放构成的深度负反馈恒流源电路,见图 12。电路中,恒流源的参考电压一般让它等于数字与模拟信号转换之后的输出电压,主要是两部分组成电压跟随器,根据输出的独特形式便可得到输出。因为跟随器是作为负反馈来实现作用的,所以说良好的稳定性是电流源的闪光点。R3 可采用大功率的水泥电阻,阻值 1 欧,功率 5W,能承受较高温度,使其温度影响减至最小。图 14 恒流电路具体恒流过程分析:假设
21、负载电阻 R2 变化从而会导致 IC 增加所以导致流过 R3 的电流增加而使 Ur3 增加,反馈到运算放大器的 N 端从而减少运算放大器的输出,从而减少达林顿管的导通性相当增大了输出电阻而使 IC 减少直到达到原来的平衡故使之恒流。R2 ICUr3 UFeedback UR4IBIC由于反馈的作用而使此电流恒定。即 IB 恒定有由于 IC=*IB 而 IB 恒定所以 IC 恒定故恒流由深度负反馈中的虚断原理知,流过电阻 R3 的电流 IR 为:IR=VIN/R3 其中,VIN 为运放 LM358 的正向输入端电压,而取 R3=1。那么通过 R2 的输出电流 IO=IR,则负载电流只与固定的输入
22、电压 VIN 的大小有关。则通过控制输入电压 VIN 的大小来控制输出负载电流的大小,这也就是本系统设计的原理所在。3.4 数码管显示电路 数码管依次由“a,b,c,d,e,f,g,dp8 段,从位选的角度来说他们又可以分为共阴极和共阳极.位选信号时数码管选通信号,当某个数码管位选通是,该数码管就可以发光,当输入不同的显示笔段时候,又可以显示不同的数字和字母这就是数码显示的控制方法。本设计在显示方面采用了数码管的动态显示的方法。数码管段选信号输入时运用了轮询的方法,在轮流显示过程中,每位段码显示时间为 12ms,由于人的视觉暂留现象不会感觉到这种闪烁现象。其电路如下:图 15 数码管显示电路3
23、.5 按键控制电路本系统的单片机的按键步进控制方式是使用 I/O 口的状态表示。本设计用的是 P2.4和 P2.5 口,程序循环执行键盘扫描任务,当某一端口低电平 0,则表示有按键键入。图 16 按键控制电路3.6 电源电路在本设计的系统中,线性电压的控制输出,作为电源,为单片机、DA 转换器、运放和达林顿功率管提供工作电压或参考电压等。典型的电源电路的系统框图如下所示:交流 220 变压器降压 整流 滤波 稳压输出图 17 电源模块电路框图在本设计中采用的电源设计电路如下所示:图 18 电源模块电路第四章 系统的软件设计4.1 总体流程图本软件设计以 AT89C51 为控制核心,实现可数控、
24、高精度的恒流源输出。程序中分几大模块:数码显示模块,DAC 模块,按键判断部分。首先单片机判断初始值的大小并控制 DA 转换器输出并在 4 位 LED 上显示其输出给定值的大小;如果有按键“” 按下,则单片机控制 DA 的输出值以步进 10mV 增加;如果有按键“” 按下,则单片机控制 DA 的输出值以步进 10mV 减少,则从 DA 输出到恒流源电路的负载输出(控制电阻 R3=1) ,相应的电流输出也增或减 10,并且 LED 能及时显示其输出给定值大小。程序流程图如下:初始化是否有“”按下?是否有“”按下?控制 DA 输出值,并显示输出电流大小(mA)是否有预置值?按键+10按键减 10Y
25、YY图19 软件流程图4.2子程序流程图4.2.1 数码显示子程序流程图定义共阴极字符列表求出所显示数据的千位、百位、十位、各位上的数 09段选显示(查字符列表) ,为选为高电平这该位选中并显示相应的数,延时 10mS,位选为低电平,该位不显示。循环执行图20 显示子程序流程图4.2.2 D/A 转换子程序流程图本系统中的 DA 转换器 TLC5615 在工作时,只有当片选 EMBED * MERGEFORMAT 为低电平时,串行输入数据才能被移入 16 位移位寄存 当 EMBED * MERGEFORMAT 为高电平时,当 SCLK 时钟每上升一次, DIN 的一位数据就会随之放进一个十六位
26、的寄存器中。图21 D/A 转换子程序流程图4.2.3 按键控制子程序流程图一般情况下,一个按键按下过程中存在着机械抖动,在本设计中主要采用的是软件延时消除按键过程的抖动,具体的软件流程图如下所示:数字量输入 Vi参考电压 Vref模拟电压输出电源数 / 模转换器模拟电路输入接 口图22 按键控制子程序流程第五章 软件仿真图23 protues软件仿真图第六章 系统测试与误差分析6.1测试仪器 FLUCK 数字万用表; 数字示波器; PC 机; 电阻箱,调整范围(09999) ;6.2测试数据和误差分析系统测试以旋转式电阻箱为负载,测试时,把万用表与负载串联。1, 设定输出电流为 20mA。小
27、范围改变负载 RL 大小,输出电压在 10V 以内变化:给定电流:I (mA) 负载大小:R L() 输出电压:V O(V) 输出电流 IO(mA)20 1 0.01 1020 2 0.04 2020 3 0.06 2020 4 0.08 2020 5 0.10 2020 6 0.12 20表 1 负载变化恒流数据表2, 大范围改变负载大小,给定值为 I=20mA,实测输出电流值:RL() 输出电压值UO(V)输出电流值 IO(mA)1100 21.7 19.731000 21.6 21.6900 20.1 22.3800 17.9 22.37700 15.6 22.3600 13.3 22.
28、2500 11.1 22.2400 8.80 22.0300 6.60 22.0200 4.30 21.5100 2.10 2190 2.03 22.680 1.81 22.670 1.58 22.660 1.35 22.550 1.12 22.440 0.89 22.330 0.67 22.320 0.44 2210 0.22 22表 2 负载变化恒流数据表3,步进为 10mA,负载电阻为 6 时给定电流值和输出值:给定电流值 I(mA) 负载两端电压UO(V)输出电流值 IO(mA)10 0.06 1020 0.12 2030 0.18 3040 0.24 4050 0.30 5060 0
29、.36 6070 0.41 68.3380 0.47 78.3390 0.53 88.33100 0.59 102110 0.64 113120 0.70 122130 0.76 128140 0.82 138150 0.88 148200 0.597 199210 0.627 209220 0.657 219230 0.687 229240 0.723 241250 0.75 2501000 3.009 1002表 3 数控恒流数据表结 论本次设计主要是针对电子设备在工作中要求供给的电流保持恒定不变,主要研究单片机的数控恒流源的研制。系统的测试和误差分析,借助万用表和可变电阻箱。在本次设计中
30、遇到了数据的测试、器件等的选择和使用等的问题,查阅资料和询问老师同学而得知。在这次设计中我不仅学到了很多之前未知的知识,而且对所学的基础理论、基本技能和专业知识的认识有了进一步巩固和加深,同时对单片机系统有了深度的学习。该设计在很大程度上减少了不必要的误差,并且大大提高了工作的效率。参考文献1 欧阳文, ATMEL 系列单片机的原理与开发实践,中国电力出版社,20072 康华光,电子技术基础(模拟部分 第五版) ,高等教育出版社,20053 康华光,电子技术基础(数字部分 第五版) ,高等教育出版社,20054 全国大学生电子设计竞赛组委会,全国大学生电子设计竞赛获奖作品选编,北京理工大学出版
31、社,20055 田良、王尧,综合电子设计与实践,东南大学出版社,2002 6 吴戈、李玉峰,案例学单片机 C 语言开发,人民邮电出版社,20087 刘坤、宋戈、赵红波,51 单片机 C 语言应用开发技术大全,人民邮电出版社,20088 侯玉宝、陈忠平、李成群,基于 Proteus 的 51 系列单片机设计与仿真,电子工业出版社,20089 刘坤、高征红, Protel99SE 电路设计实例教程,清华大学出版社,200810郭惠、解书钢, Protel99SE 常用功能与应用实例精讲,电子工业出版社,2008118-bit Microcontroller With 4K Bytes Flash
32、AT89C51. ATMEL,2000128-bit Microcontroller With 8K Bytes Flash AT89LV51.ATMEL,2000致 谢结束本论文之际,我谨对铜陵学院电气工程系王开全老师致以崇高的敬意和由衷的感谢。本论文是在导师王开全老师的精心指导下完成的。在整个设计研究过程中,导师在各方面给予了,给我指导查阅文献和解决难题使本论文得以顺利完成。老师的知识储备和经验都很丰富、思维敏捷,并在我研究中不断的给以鼓舞和不倦的教诲。从课程的学习、论文的选题、课题的研究到论文撰写等等不仅凝聚着导师的心血和汗水,还有同学的友好帮助。老师待人诚恳,心胸宽广,精深的知识储备令
33、我受益匪浅。同学友好积极给予相关需求,在此对我的导师和同学表示衷心的感谢!最后,对各位老师给我的论文审阅深表感谢,并渴望得到批评指正。附录 1 程序设计程序源代码:#include#define uchar 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 P
34、20=P20;sbit P21=P21;sbit P22=P22;sbit P23=P23;sbit P24=P24;sbit P25=P25;sbit SCLK5615=P13; /*定义时钟信号 sclk 的 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 th
35、ous,hund,ten,num; /*数码管要显示的数值 ,即给定的电流值,以 mA 为单位*/void main()dat2=(float)dat/1000*1024)/2/Vref;while(1) /死循环 if(P24= =0)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;/
36、有按键减掉 10;if(dat3000)dat=0;display(dat); TLC5615(dat2); /* 转换输出电压=2*Vref*code/1024,输出电压最大为电源电压*/void display(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=Dis
37、playDatahund; /百位数码管选中并且决定是否显示P21 = 0;delay(1);P21 = 1;if(dat=10)P0=DisplayDataten; /十位数码管选中并且决定是否显示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 为低电平*/d
38、at2=6; /* 数字量 dat2 左移 6 位,保留原 dat2 低 10 位。新 dat2 的高 10位有效,低 6 位全 0*/CS5615=0; /* CS 片选有效,开始接收数据 */SCLK5615=0;for(i=0;i12;i+) /* 发送 10 位数据和 2 位 0,从最高位开始发送。 */ DATA5615=(bit)(dat2 /* 非级联方式,只需要输入 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 msunsigned char x,y,z;for (x=0;xtime;x+)for (y=0;y1;y+)for (z=0;z=120;z+);