1、目 录摘要I关键词IAbstractIKeywordsI1 设计任务与要求51.1 基本要求52.2 发挥部分52 系统方案的设计与论证62.1 各种方案的比较与选择73.2 方案论证83 系统总体框图153.1 电源供电部分153.2 电流测量与显示部分163.3 键盘输入与单片机的最小系统163.4 总的电路原理图174 系统软件设计184.1 程序总体流程图185系统的组装185.1 PCB板图185.2 整机结构图及工艺原理216 系统调试236.1测试方案236.2测试仪器236.1测试结果23参考文献23致 谢22附录23 摘要本系统以直流电流源为核心,AT89s52单片机为主控制
2、器,通过键盘来设置直流电源的输出电流,设置步进等级可达1mA,并可由液晶显示电流设定值和实际输出电流值。本系统由单片机程控设定数字信号,经过D/A转换器(tlv5618)输出模拟量,再经过运算放大器隔离放大,控制输出功率管的基极,随着功率管基极电压的变化而输出不同的电流。单片机系统还兼顾对恒流源进行实时监控,输出电流经过电流/电压转换后,通过A/D转换芯片,实时把模拟量转化为数据量,再经单片机分析处理,通过数字量形式的反馈环节,使电流更加稳定,这样构成稳定的压控电流源。实际测试结果表明,本系统能有效应用于需要高稳定度的小功率恒流源的领域 关键字压控恒流源 智能化电源 闭环控制AbstractI
3、n this system the DC source is center and 89s52 version single chip microcomputer (SCM) is main controller, output current of DC power can be set by a keyboard which step level reaches 1mA, while the set value and the real output current can be displayed by LED. In the system, the digitally programm
4、able signal from SCM is converted to analog value by DAC (tlv5618), then the analog value which is isolated and amplified by operational amplifiers, is sent to the base electrode of power transistor, so an adjustable output current can be available with the base electrode voltage of power transistor
5、. On the other hand, The constant current source can be monitored by the SCM system real-timely, its work process is that output current is converted voltage, then its analog value is converted to digital value by ADC, finally the digital value as a feedback loop is processed by SCM so that output c
6、urrent is more stable, so a stable voltage-controlled constant current power is designed. The test results have showed that it can be applied in need areas of constant current source with high stability and low power. Keywordsvoltage-controlled constant current source, intelligent power,closed loop
7、control设计任务与要求1.1 设计任务设计并制作一个数控直流电流源。输入的交流电压220240V,50Hz;输出的直流电压10V。其原理示意图1如下所示。图1 设计任务示意图 1.2 技术指标基本要求:(1) 要求电压输出范围:2002000mA;(2) 可设置并输出电流给定值,要求输出电流和给定电流的偏差的绝对值给定值的1%+10mA;(3) 具有“+”、“-” 步进调整功能,步进10mA;(4) 改变负载电阻,输出电压在10V以内变化时,要求输出电流的变化的绝对值 (5) 输出电流的1%+10mA;(6) 纹波电流 2mA;(7) 自制电源。发挥部分:(1) 输出电流范围为20200
8、0mA,步进为1mA;(2) 设计、制作测量并显示输出电流的装置(可同时或交替显示电流的给定值或实测值),测量误差的绝对值测量值的0.1%+3个字;(3) 改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的绝对值 (4) 输出电流的0.1%+1mA;(5) 纹波电流0.2mA;(6) 其他。2方案比较与论证 2.1.1各种方案比较与选择 方案一:采用中小规模集成电路构成的控制电路。由三段可调式集成稳压器构成的恒流源。以W350为例,其最大的输出电流为3A,输出电压Uo为1.233V。其典型的恒流源电路如图2所示。图2 W350 当可调稳压器W350调解在输出电压Uo=1.2V的时候,
9、若R固定不变,则输出电流保持不变。因此可获得恒流输出。此方案的优点:结构简单、外围元件少、调试方便、价格便宜。缺点:精密的大功率的数控电位器难购买。 方案二:采用以单片机为核心的单片机最小系统。由数控稳压器构成的恒流源(如图3)。 图3 数控稳压器 方案一是在Uo不变的情况下,通过改变R数值而获得输出电流的变化。如果固定R不变,如令R=1,若能改变Uo的数值,同样可以构成恒流源。此方案的优点:原理清晰,只需要数控恒压源的设计知识和器材的话,方案比较容易实现。缺点:数控恒流源的地是浮地,与系统不共地线。 方案三:采用以单片机为核心的单片机最小系统。采用电流串联负反馈机理构成恒流源。采用电流负反馈
10、机理构成的原理图如下图4所示,它由LM399型精密基准电压源、DAC、低噪声误差放大器A、调整管、负载电阻RL,取样电阻RF及精密多圈电位器RP等组成。来自CPU电流控制字数据加至D/A转换器,转换成电压信号通过多圈电位器RP加在运放A的同相段。由A、VT、RL、RF构成典型的电流串联负反馈。图4 电流串联负反馈 方案三的优点:原理清晰,只要需要数控电压源的知识,元件资料。实现此方案很简单。2.2 方案证论整个系统根据其外围设备的复杂程度、花费成本,从系统可靠性、稳定性出发,以及根据现有的条件,采取合理的选择。电源供电部分,选用常见的三端稳压,因其电路简单,输出电压稳定,成本低,被广泛应用。该
11、电源部分的重点在于恒流源的电源提供,要求其恒定电流需达到2A,故一般的三端稳压芯片难以达到要求,故根据现有的条件,该部分不经过稳压,直接通过整流、多次滤波之后接入恒流源电路(效果显著)。尽管整个系统带负载能力不强,但是通过电流较大,热量消耗的功率非常大,并且对其稳定度要求非常高,所以为避免电路的供电部分对恒流源产生干扰影响,整个系统必须要两个变压器,一个给电路供电,一个专为恒流源部分电流。恒流源部分,选用电流串联负反馈电路构成的恒流源,该电路简单,原理易懂。该部分为整个系统的核心电路部分,通过由MCU控制输出数据,经过D/A转换得到的电压值接入误差放大器的同向端,其反相端则是由流经采样电阻上的
12、电流,采样得到的电压。通过误差比较,若不相等则通过误差放大,放大后的误差电压,通过转为电流信号接入调整管的基极。通过采样反馈回的电流信号的变化,调整管通过调整使得采样反馈回的电压Uf等于MCU控制输出,经由D/A转换输出的电压值,以达到数控的目的。D/A转换器(TLV5618)具有4096种状态,完全能满足要求。设计时两个电流控制字,代表1mA,当电流控制字从0,2,4,4000时的,电源输出电流分别为0mA,1mA,2mA,2000 mA。TLV5618是串行输入,串行输出的12位D/A转换器。它需要一个基准电压源,选取精度高,电压温度系数小、性能好的精密基准电压源LM399。其基准电压为6
13、.95V。由D/A转换器TLV5618产生的模拟量Uf1加在误差放大器的同相端,若将Ui作为运放TL082的输入量,则由采样电阻Rf引入的反馈是典型的电流串联负反馈。其输出的电流Io只取决Ui 和Rf的大小。即Io=U_ / RfU+ / Rf=Ui / Rf。若Rf取定,Ui不变,则Io恒定。这即是恒流源的工作原理。若Rf一定,Ui随电流控制字的变化而变化。故Io也随电流控制字的变化而变化。根据题目要求,输出电流Io的变化范围为202000mA,则Imax=2000mA。取Rf=0.5,则Ufmax=Uimax=Vnmax=IomaxRf=1V。这就意味着当电流控制字为4000时,对应D/A
14、转换器输出的电压值Ui为1V。于是可求得D/A转换器满幅值为4095/4000=1.02375 (V).(1)此值就是TLV5618的参考电压值。通过精密多圈电位器RP1调节很容易得到这数值。于是,不难推出输出电流与电流控制字的表达式 (8.3.6)由8.3.2节的分析可知,这一部分性能好坏,直接影响系统的技术指标是否可以满足,下面就电路中关键的几个元器件进行讨论。1) 采样电阻的选择采样电阻的选择十分重要,要求噪声小,温度特性好,所以最好选择低温度系数的高精度采样电阻。例如,锰铜线制成的电阻,温度系数约5ppm/。另外,由于采样电阻与负载串联时流过采样电阻的电流通常比较大,因而温度也会随之上
15、升,可以通过减小载流量和增加散热面积来避免因温度过高导致采样电阻值发生变化。在条件允许的情况下,还可以采用风冷的办法解决。另外采样电阻阻值取大一点,对稳定度有好处,但会使系统效率下降,折中考虑取R=0.5。2) 调整管的选择由于稳流电源的输出电流全部流经调整管,因此调整管上的功耗将会很大,必须选择大功率的晶体管来做调整管。为了与误差放大器更好地匹配,我们采用由一只三极管8050和功率管MJE8055组成的复合管结构,MJE8055的最大输出电流可以达到8A。通常调整管承受的电压和流过的电流时变化的,在极限情况下,即最小输出电压和最大输出电流时,为了防止调整管上的功率损耗不致过大,又要防止它进入
16、饱和状态,最好采用稳流电源的输入电压随其输出电压的改变而进行调节,使调整管的集射电压保持不变,但由于时间和条件的限制,本设计中没有采用。3)误差电压放大器电流稳定度与放大器有直接关系,在大功率电源里基本上是倒数关系。例如,若要求电流源的稳定度小于,则放大器的放大倍数要大于10000。现有的集成运算放大器基本上都能够满足这一要求。本设计选用TL082作为误差放大器,其具有:1.2V/V(),0.5V/V()的高增益;300V的低输入失调电压;1.5nA的低失调电流;2.5V/低温漂;0.55V的低噪声电压。由于采样电阻选取0.5,其最大采样电压为1V,而负载端最高电压为10V,复合调整管。于是要
17、求误差放大器的最大输出电压为12.4V,为了防止放大器进入饱和区,设计将放大器的工作电压取为。3) D/A转换器的选择由8.3.2节分析可知,D/A转换器的性能好坏直接影响系统的技术指标,设计选择了具有掉电模式的12位电压输出D/A转换器TLV5618。 特点。.电源:2.75.5V.可编程置位时间:3S(高速模式);9S(低速模式).差分非线性:100dB(G=10).低噪声:峰峰值0.28V(0.110Hz).置位时间:15S(0.01%) 电平放大级的选择。电平放大级选择TL082。 A/D转换器选择。因为恒流源主电路采用的是12D/A转换器,测流电路A/D转换器应该至少保证在12位,因
18、为一时购不到12位以上的A/D转换集成片。采购10位A/D转换器TLV1549代替。它具有如下特点:. 3.3V电源. 10位分辨率. 内置采样与保持电路. 片内系统时钟. 总不可调误差. 与TLC1549兼容. CMOS工艺 基准电流的选择。基准电流选择精密电压源LM399。经过精密多圈电位器(10k)调节,使输出电压为3.3V,加至A/D转换器TLV1549的1脚和3脚之间作参考基准电压。2) 参数计算 总电压放大倍数的计算及分配。因为A/D转换电路工作电压问为+15V,为使A/D转换器工作在线性区,其A/D转换器输入电压最大值应取12V。这个值应对输出电流最大值,即。此时取样电压也应最大
19、,其值为1.0V。故总的放大倍数为,设缓冲级放大倍数,第二级电压放大倍数,就可以满足的要求。在图6中,令,则 在AD620内部因 则 求得 可以考虑一个固定电阻82k与阻值为30 k电位器相串联。使得有少量的调节范围。 A/D输出数据量与取样电压的关系。因为A/D转换器TLV1549属双积分A/D转换器,于是 设,则 试中:为A/D转换器的参考电压,在本系统中=6V;为总的电压放大倍数,在本系统中,=6V;为取样电阻上的取样电压值;N为期间的脉冲数;为A/D转换器在输入电压为时转换成时间的值;D为对应输入电压为时转换成的数字量。 D与的关系。因,于是 当D被测量得到后,输出电流就可以计算得到。
20、最后在单片机的控制下将的值显示出来。 4.供电部分供电部分的原理图如图3所示。1)供电部的主要技术指标(自定)+18V,额定电流3A,纹波电压10mA;+15V,额定电流1.5A,纹波电压10mA;+5V,额定电流1.5A,纹波电压10mA。注:输出额定电流均有富裕量,目的在于提高整个系统可靠性。2)电路组成供电部分有四组电压输出,18V输出无稳压器,其余电路结构一样。3)参数计算以18V,3A为例。计算各点的电压值。设市电范围:195240V,正常供电为220V。在满载和输入电压为195V的情况,要保证稳压器工作在线性区。即W350两端有3V以上的压降,计算变压比。根据关系式 解此方程得 =
21、11.4在市电为220V正常情况下: 同理可得3系统硬件设计 3.1 系统的总体设计(设计思想、设计步骤),系统的计算。(如图9) 图9 总体的系统框图设计一个数控恒流源,通过键盘输入一个给定的电流值,在LCD1602液晶上显示出来,再通过MCU控制D/A转换,采样电阻上产生一个采样电压,将这个电压通过隔离、放大,再通过D/A转换,送给MCU,在液晶上显示输出的测量电流。其输出电流端还有负载。3.2 单元电路的设计,单元的参数计算。3.2.1 电源供电部分因三端稳压器具有结构简单、外围器件少、性能优良、调试方便等显著优点,供电部分采用三端稳压电路,如图10所示图10 电源供电部分电路 3.2.
22、2 电流测量与显示部分要测量输出电流Io,一般用数字电流表串联在输出回路中ing,直接读出Io的值。但是,如果要自制一个测量输出电流装置则不能效仿,可以将输出电流Io通过采样电阻,取样电压信号,然后经过直流电压隔离、放大,A/D转换,然后交由核心处理器(89S52)处理,最后将测量的数值由液晶显示。其原理框图如图11所示直流电压隔离放大 图11 电流测量与显示原理框图 3.2.3 键盘输入与单片机最小系统键盘输入部分采用4*4的矩阵键盘(如图12),单片机的最小系统(如图13)由复位电路,晶振部分构成。还有液晶显示部分,液晶采用LCD1602。图12 4*4矩阵键盘 图13 单片机的最小系统3
23、.4 电原理图 恒流输出部分 单片机最小系统原理图 4系统软件设计4.1 程序总体流程图 5系统的组装5.1 PCB板图单片机最小系统及液晶显示 PCB图恒流输出及隔离运放 D/A A/D PCB电源部分PCB5.2 整机结构图及工艺说明电源部分的实物图 单片机最小系统实物图横流输出 A/D D/A 实物图 6系统调试 6.1 电路的测试方案为了确定系统与题目要求的符合度,对系统的关键部分进行了实际测量。测试方法将数字万用表调到电流档 将其串在电路中,用另一个数字万用表调到电压档测采样电阻两端电压。用示波器观察纹波电压,并记录数据。6.2 测试仪器 GDS-1042示波器 DT9205A数字万
24、用表 6.3 测试结果见数据记录纸参考文献1 高吉祥.全国大学生电子设计竞赛培训系列教程(模拟电子线路设计)M.北京:电子工业出版社,2007.5:190198;228242.2 高吉祥.全国大学生电子设计竞赛培训系列教程(2007年全国电子设计大赛试题剖析)M.北京:电子工业出版社,2009.5:2145.3 邹天汉.数字功放和音箱设计与制作M.北京:4 童诗白.模拟电子技术基础M.北京:清华大学出版社,2004.6:3447,116124, 171202,477481.5 刘树棠,朱茂林,荣玫译.基于运算放大器和模拟集成电路的电路设计M.西安:西安交通大学出版社,2009.2:235,93
25、129. 附录 附录3 程序清单 #ifndef LCD_CHAR_1602_2005_4_9#define LCD_CHAR_1602_2005_4_9#include /Port Definitions*sbit LcdRs= P20;sbit LcdRw= P21;sbit LcdEn = P22;sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口/内部等待函数*unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();while(DBPort&0x8
26、0);/在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环, /可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80=0x80 /实际硬件时打开此语句LcdEn=0;return DBPort;/向LCD写入命令或数据*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 / 清屏#define LCD_HOMING 0x02 / 光标返回原点void LCD_Write(bit style, unsigned char input
27、)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意顺序LcdEn=1;_nop_();/注意顺序LcdEn=0;_nop_();LCD_Wait();/设置显示模式*#define LCD_SHOW0x04 /显示开#define LCD_HIDE0x00 /显示关 #define LCD_CURSOR0x02 /显示光标#define LCD_NO_CURSOR0x00 /无光标 #define LCD_FLASH0x01 /光标闪动#define LCD_NO_FLASH0x00 /光标不闪动void LCD_SetD
28、isplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/设置输入模式*#define LCD_AC_UP0x02#define LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 / 画面可平移#define LCD_NO_MOVE0x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/移动光标或屏幕*/*#define LCD_
29、CURSOR0x02 #define LCD_SCREEN0x08#define LCD_LEFT0x00#define LCD_RIGHT0x04void LCD_Move(unsigned char object, unsigned char direction)if(object=LCD_CURSOR)LCD_Write(LCD_COMMAND,0x10|direction);if(object=LCD_SCREEN)LCD_Write(LCD_COMMAND,0x18|direction);*/初始化LCD*void LCD_Initial()LcdEn=0;LCD_Write(LCD
30、_COMMAND,0x38); /8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动/*void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_W
31、rite(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;void LCD_Print(unsigned char x, unsigned char y, unsigned char *str) GotoXY(x,y); Print(str);/*void LCD_LoadChar(unsigned char user8, unsigned char place)unsigned char i;LCD_Write(LCD_COMMAND,0x4
32、0|(place*8);for(i=0; i8; i+)LCD_Write(LCD_DATA,useri);*/*#endif#include#include#include#define uchar unsigned char #define uint unsigned int sbit cs1=P25; /max541 4脚sbit cs2=P26; /tlv1549 5脚sbit clk1=P24; /max541 5脚sbit clk2=P30; /tlv1549 7脚sbit din1=P23; /max541 6脚sbit din2=P27; /tlv1549 6脚sbit fmq
33、=P36; /蜂鸣器bit flag,model;uint num;uchar a4=0,*m=a,wei=1,i=0;unsigned char TempBuffer10;unsigned char code key_code= 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 ;void delay(uint z) /延时程序uchar x;for(x=57;x0;x-)for(z;z0;z-);/*uint ad_conver() /tlv1549 ad转换模块uchar x,
34、j,jieshou10=0;uint adata=0;cs2=0;_nop_();_nop_(); _nop_();for(x=0;x10;x+)clk2=1;_nop_();_nop_();jieshoux=din2;_nop_();_nop_();clk2=0;_nop_();_nop_();for(j=0;j23;j+);cs2=1;adata=jieshou9+jieshou8*2+jieshou7*4+jieshou6*8+jieshou5*16+jieshou4*32+jieshou3*64+jieshou2*128+jieshou1*256+jieshou0*512; retur
35、n adata; */ uint ad_conver() /ads8320 16位ad转换模块unsigned char m;unsigned int temp=0;cs2=1;cs2=0;temp=0;for(m=0;m4;m+)clk2=0;_nop_();_nop_();clk2=1;_nop_();_nop_();clk2=0;_nop_();for(m=0;m16;m+)clk2=1;temp=(temp1)|din2;_nop_();clk2=0; _nop_(); _nop_();for(m=0;m3;temp=temp-4112;if(temp4000)temp=0;retur
36、n temp; /*uint ad_conver()unsigned char m;unsigned int temp;cs2=1;/delay1us(2);/AD_CS=0;/AD_SCLK=1;cs2=0;/DOUT=1;_nop_();_nop_();_nop_();temp=0;for(m=0;m10;m+)temp=(temp1)|din2;clk2=1;_nop_();clk2=0;_nop_();/AD_SCLK=0;cs2=0;for(m=0;m22;m+);return temp; */*void DA_conver(uint Dignum)/tlv5618da转换模块uin
37、t Dig=0;uchar i=0;clk1=1;cs1=0; /片选有效for(i=0;i16;i+) /写入16Bit的控制位和数据 Dig=Dignum&0x8000; if(Dig) din1=1; else din1=0; clk1=0; _nop_(); _nop_(); Dignum=1; clk1=1; _nop_(); _nop_();clk1=1;cs1=1; /片选无效 */void DA_conver(uint Dignum)/max541转换模块uint Dig=0;uchar i=0;clk1=1;cs1=0; /片选有效for(i=0;i16;i+) /写入16为Bit的控制位和数据 Dig=Dignum&0x8000; if(Dig) din1=1; else din1=0; clk1=0; _nop_(); Dignum=1;