《基于单片机的数控恒流源设计(共43页).docx》由会员分享,可在线阅读,更多相关《基于单片机的数控恒流源设计(共43页).docx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 本 科 毕 业 论 文(设 计)题目(中文) 基于单片机的数控恒流源设计 a(英文)Design of constant current voltage source based on SCM 完 成 日 期 2016 年 4 月摘要恒流源是一种高精度的电源,具有响应速度快,恒流精度高,能长期稳定工作,适合各种性质负载等优点,而具有了越来越广泛的应用。本文主要论述了一种基于51单片机为控制核心的数控直流源的设计与实现。本电源具有可预设电流,电流步进,显示电流的功能。主要由单片机控制模块、键盘输入模块、A/D转换模块、恒流源模块、D/A转换模块和显示模块六部分组成。系
2、统由单片机设定预置电流信号,经过D/A转换器TLC5615输出模拟电压信号,该信号控制达林顿管的基极,使其集电极输出相应的电流。再通过A/D转换芯片,实时把采样电路上的模拟信号转换成数字信号,形成反馈,显示出实际的输出电流。关键词:压控恒流源;单片机;数控电源AbstractConstant current source is a kind of common power source with high precision with fast response, high precision of constant current. It can also work stably for a
3、 long time and has various properties of the load. So now it is used more and more widely. This paper mainly discusses the design and implementation of a digital constant current source based on 51 MCU as the control core of the system. The power supply has a preset current, current step, current di
4、splay function. It has 6 parts: Control module, keyboard input module, A/D transform module, D /A transform module , display module and constant current source module. The current signal set by the SCM. Then it through D / A converter TLC5615 , which output to the voltage analog signal and control t
5、he Darlington tube base, and output the corresponding current. Finally through the A/D conversion chip, real-time sampling circuit analog signal is converted into digital quantity, feedback form, show the actual output current.Keywords: voltage controlled constant current source; single chip microco
6、mputer; digital power supply目 录上海师范大学本科毕业论文(设计)诚信声明 I上海师范大学本科毕业论文(设计)选题登记表II上海师范大学本科毕业论文(设计)指导记录表中文摘要及关键词 英文摘要及关键词 1 前言11.1 研究背景及意义11.2 国内外研究现状12 基本原理与方案对比22.1 总体框图22.2 恒流源方案对比32.2.1 晶体管恒流源32.2.2 场效应管恒流源42.2.3 集成电路恒流源52.2.4 总结5 2.3 单片机简介62.4 液晶显示屏简介82.5 数模转换芯片92.6 模数转换芯片93 各模块实现 103.1 键盘模块 103.2 液晶显
7、示模块 113.3 D/A转换模块123.4 A/D转换模块123.5 恒流源模块 133.6 电路整体工作原理 144 系统软件实现 154.1 综述 154.2 键盘输入流程图 164.3 A/D转换流程图174.4 D/A转换流程图184.5 液晶显示流程图 195 整体测试与分析 206 总结与展望 22参考文献 23附录A 仿真原理图 24附录B 程序部分 25专心-专注-专业1 前言 1.1 研究背景及意义随着电子技术的发展,我们身边出现了越来越多的智能化数字化的精密电子设备,消费者在关注设备的性能、价格、功能、设计的同时,设备的质量和稳定性越来越成为人们关注的重点。而设备的稳定性
8、的最关键部分之一便是电源的稳定性。劣质电源的危害时有发生,如大到特斯拉电动车电池爆炸门,小到身边的劣质手机电源导致的火灾、爆炸,均可造成巨大财产损失甚至危害人们的安全。所以一个优质安全的电源是智能化数字化电子设备不可或缺的重要部分。 1.2 国内外研究现状目前而言,生活中乃至部分实验室使用的电源多采用电位器来调整输出的电压及电流值搭配指针式显示。存在着非线性,调整误差较大,显示读数误差,可靠性低等较大缺陷。数字化智能电源应运而生,它针对传统电源的不足,有效减少了各种器件等不确定因素和人为因素而引起的误差,从而极大提高了电源模块的稳定性,缩小了电源的误差。从20世纪90年代以来,人们对于系统的效
9、率越来越高,功耗要求越来越低,随着电子技术和数据通信设备的技术发展更新,电源行业开始由以前的分立元件和集成电路控制转变为由微机的控制趋势,开始了电源行业的智能化。20多年的发展之后,数控恒压技术已经较为成熟,但是恒流源的发展特别是数控恒流源还较为落后,高性能的数控恒流源的发展和应用都还存在着较为巨大的发展空间。本次毕设设计的数控直流源可以输出稳定电流的直流恒流源,不随外界负载等因素影响。输出稳定度好,误差小,可以直接数字设定电流大小,具有较好的应用价值。2 基本原理与方案对比2.1 总体框图图1 总体框图本设计共分6个模块(见图1):1.键盘输入模块:通过4*4矩阵键盘设置输入电流,步进为1m
10、A,输入电流范围为20-2000mA。并可通过“+”“-”进行微调。2.液晶显示模块显示预置电流与实际的输出电流。3.D/A转换模块:将单片机输出的数字量转换成模拟量,送入恒流源模块。4.A/D转换模块将实际输出的电流转化为数字量,送入单片机5.恒流源模块实现电流的输出。6.单片机主控模块整个设计的控制部分。连接电源,键盘模块,D/A转换模块,A/D转换模块及液晶显示模块。2.2恒流源方案对比基本的恒流源电路按照组成器件的不同,主要可以分为晶体管恒流源,场效应管恒流源和集成电路恒流源三类。 2.2.1 晶体管恒流源以晶体管为主要组成,因为晶体三极管集电极电压变化对电流的影响很小,所以可以基本达
11、到输出电流恒流的要求,但是通常还需要一定的温度补偿和稳压措施,否则会存在较大的误差,其基本电路如下:图2 晶体管恒流源的基本形式如图2, 电阻R1、R2分压,b点的电位为VB,RE形成电流负反馈,可以计算输出电流Io=(Vb-Vbe)ReVbRe (VbVbe)图2中的电路的不足在于晶体管的集电级和射极间电阻一般在几十千欧以上,当只需几伏的工作电压,这种恒流源电路的等效内阻很大,功耗很大,并且精度不高。2.2.2场效应管恒流源由场效应晶体管作为主要组成器件构成的恒流源电路如图2所示:b图3 场效应管恒流源图3中 ,R1,R2分压,使b点的电位稳定 , Vb=R2Vcc(R1+R2),而 Vgs
12、=Vb-IdRs; Id=2Idss(1-VgsVp)式中Vp表示为夹断电压 ,Idss为饱和漏极电流。这种恒流源电路使用的场效应管为JEFT,具有超低噪声的有点,输出的电流由JEFT决定,检测的电压与JEFT有关。2.2.3集成电路恒流源为了能够精确的控制输出电流,通常会使用个运放作为反馈,再使用场效应管减小三极管的BE电流导致的误差。常用的运放恒流源如图4所示,在工作时,输入电压Vref与输出电流成比例的检测电压,VsVs=RsIout相等, Is=Ib+Iout=Iout(1+1Hfe)其中1Hfe为误差。图4 集成电路恒流源图4这个电路通常可以作为恒流源的标准电路,不但具有足够的精度,
13、易于调节的优势,而且使用到的期间也很普遍,便于应用。缺点是运放部分需要额外的供电电源。2.2.4 总结从上面的电路中我们可以发现,恒流源就是利用个参考电压,然后在电阻上形成固定电流。恒流源的搭建就可以扩展到所有可以提供这个电压基准的器件上。所以三端稳压芯片也通常会应用于恒流源,这些三端稳压芯片本身就具有很高的精度,需要维持的电流也很小所以具有很好的性价比,如图5:图5 稳压芯片组成的恒流源电路该电路的电流计算公式为:I=VR5,其中V是三端稳压的稳压数值。但是这种结构的恒流源,不适合太小的电流,因为这个时候,三端稳压自身的维持电流会导致较大的误差。恒流源的实质是利用器件对电流进行反馈,动态调节
14、设备的供电状态,从而使得电流趋于恒定。只要能够得到电流,就可以有效形成反馈,从而建立恒流源。从上面四种常见电路分析后,本次毕设我选择了方案3。 2.3 单片机简介作为控制核心的单片机,本设计选择了ATMEL的AT89C51,这是一款高效微控制器,具有高度的灵活性,同时价格低廉。这是一种带4K字节闪烁可编程可擦除的低电压、高性能CMOS8位:它包括一个8位的微型处理器cpu;1个256K的RAM存储器;1个片内存储器rom;4个8位双向输入输出的并行IO接口,5个中断;2个定时/计数器;片内振荡器和时钟产生电路,最高振荡频率12MHZ。一个单片机可以看做是一个完整的微型计算机。当我们配上适当的外
15、围器件和相应的软件时,就能成为一个独立的应用系统。本设计中,我们也以其为核心,进行了相应的配置。89c51的管脚说明如图6:图6 AT89C51管脚示意图P0口(32-39):8位漏级开路双向io口,输出高电平大电流时需要被外部拉高。P1口(1-8):一个内部可以提供上拉电阻的8位双向IO口P2口(21-28):一个内部可以提供上拉电阻的8位双向IO口,当在给出地址“1”时,它利用内部上拉的优势,对外部八位地址数据存储器进行读写时,输出特殊功能寄存器的内容。P3口(10-17):一个内部可以提供上拉电阻的双向IO口,也可以作为一些特殊的功能口如下所示:P3.0 RXD 串行输入口P3.1 TX
16、D 串行输出口P3.2 /INT0 0P3.3 /INT1 外部中断1P3.4 T0 记时器0外部输入P3.5 T1 记时器1外部输入P3.6 /WR 存储器写选通P3.7 /RD 外部数据存储器读选通RST(9):复位输入。XTAL1(19):反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2(18):来自反向振荡器的输出。2.4 液晶显示屏简介液晶显示模块选用了LCD1602,它是一种工业字符型液晶,能够同时显示16*02个字符。是一种专门用来显示字母、数字、符号等的点阵型。市面上的字符液晶通常基于HD44780液晶芯片,控制原理相同,移植性较好方便应用。LCD1602通常需要5V电
17、压供电,可以调节对比度。内部自带复位电路。提供了各种如清屏、字符闪烁、显示移位等功能。具有80字节的显示数据存储器的DDRAM,具有微功耗,显示内容丰富,方便灵活的特点而常被应用在袖珍式仪表和低功耗应用系统中。(如图7)图7 LCD16022.5 数模转换芯片本设计数模转换芯片选用的是美国德州仪器公司生产的TLC5615,它是一个具有串行接口的数模转换器,输出为电压型,输出的最大电压是基准电压值的两倍,带有上电复位功能。具有易和工业标准的微控制器相连接的优点,常用语电池供电的测试仪表,也适用于数字失调与增益调整以及工业控制场合。(如图8)图8 TLC56152.6 模数转换芯片 本次毕设选用了
18、德州仪器公司的数模转换器TLC2543,它是使用开关电容逐次逼近的方法完成A/D的转换,分辨率较高,且价格较为便宜,因此在仪表仪器中使用较为常见。该芯片的分辨率为12位,具有11个模拟输入通道,转换时间是10us。(如图9)图9 TLC25433 各模块实现3.1输入电路图10 键盘模块输入采用4*4键盘,键盘横向连接分别接入单片机AT89c51的P1.0-P1.3口,纵向连接接入单片机P1.4口-P1.7口。依图10所示,各键作用如下:3.2液晶显示电路图11 LCD显示模块LCD1602可以在LCD显示屏上完整,清晰显示32个英文字符,这方便我们在其上显示出电流单位“mA”。在设计过程中通
19、过单片机编程控制第4脚RS(数据/命令选择端),第5脚R/W(读写选择端),第6脚E(使能端),从而实现显示效果。其显示运行原理如下:写指令: RS=L,RW=L,D0D7=指令码,E=HL写数据: RS=H,RW=L,D0D7=数据,E=HL读忙状态: RS=L,RW=H, E=HL读数据: RL=H,RW=H, E=HL3.3 D/A转换电路选择D/A芯片为TLC5615,它的转换精度为10位,为了计算方便,我们选择参考电压为2.048v。又因为最大输出电压为参考电压的两倍,所以最小输出电压的分辨率为:4.096/210=0.004V图12 D/A转换模块3.4 A/D转换电路我们由前面的
20、分析得tlc2543是串行输入的12位模数转换器,有节约Io资源,分辨率较高且价格较低的优点而选用。具体电路如图13分辨率为:4.096/212=0.001V图13 A/D转换模块3.5恒流源模块图14 恒流源模块稳定的恒流源电路是本次设计的关键部分,经过前面的分析,我们这次选择了集成运放组成的恒流源作为整个系统的恒流源部分。其中运算放大器选择TL084,它的电源电压范围在8v到36伏之间,属于JFET运放,输入偏移电压最大5.5mv,额定电源电压36v。另外选择了达林顿管TIP142以输出需要的恒流。TIP142存在的关键指标有最大集电极-发射集电压为100v。最大集电极-基极电压100v。
21、最大发射极-基极电压为5v,最大承受功率125w。完全符合设计的要求。3.6 电路整体工作原理如附录1所示。电路接通电源后。通过输入电路(4*4矩阵键盘)将预置电流输入单片机控制电路(单片机AT89C51)。单片机将预置的电流信号,经过D/A转换电路(芯片TLC5615)输出模拟电压信号,进入恒流源模块。该信号控制达林顿管的基极,输出相应的电流。同时,通过A/D转换电路(芯片TLC2543),实时把采样电路上的模拟信号转换成数字信号,反馈给单片机控制电路。单片机主控电路将预置电流及反馈回的实际电流信号,输入液晶显示电路(芯片LCD1602),显示输入与输出的电流值,单位为mA,显示精度为1mA
22、。4 系统软件实现4.1 综述本次毕设的软件部分主要配合硬件来完成以下功能1. 设定恒流源数值2. 控制tlc5615的工作3. 控制tlc2543的工作4. 控制液晶显示设定与实际输出电流值为了完成以上功能,我们选择了c语言来对89c51芯片进行编程,使用keil 4软件。整个软件分为键盘扫描模块,液晶显示模块,数模转换模块,模数转换模块。 单片机微机控制 D/A转换处理液晶显示模块A/D转换处理键盘输入图15 软件部分框图4.2 键盘输入流程图是否开始逐行扫描有键按下保存行号逐列扫描保存列号根据行号和列号计算键值根据键值查表得到对应段码输出段码显示图16 键盘输入流程图图16 键盘输入流程
23、图否是读取完毕返回A/D转换开始初始化A/D转换读取电压4.3 A/D转换流程图图17 A/D转换流程图4.4 D/A转换流程图读取完毕返回读取数据D/A转换开始初始化D/A转换转换否是图18 D/A转换流程图4.5 液晶显示流程图否开始初始化LCD有键按下LCD1602写命令显示延迟结束是图19 D/A转换流程图5 整体测试与分析设计完成后,用对电路进行了仿真,其结果如下部分仿真截图(第一行为键盘输入值,第二行为实际值):20mA时:50mA时:100mA时:500mA时:1000mA时:2000mA时:表1 输入/输出误差表经检验,总体误差较小,尤其是当输出电流较大时,符合设计要求。误差分
24、析:恒流源电路中达林顿管需要一定的导通电压,若在实际应用中还要考虑器件由于工艺以及温度而产生的误差A/D转换器和D/A转换器因为分辨率原因而存在固有的误差。6 总结与展望 本次毕设基本完成了一个较为简易,相对精确的数控恒流源的目标,但是还存在着较多需要改善的地方。因为时间和个人能力因素,在硬件部分,恒流源模块的设计还有较大的改善空间,可以从功耗,以及输出电流电压范围可以进一步的优化。软件方面,我考虑了可以充分利用A/D模块采集的电压从而引入PID控制算法,与预设的电流相比较,若存在差距,可以通过微处理器进一步进行调整,从而可以进一步控制输出恒流的精度以及稳定程度。 在这次毕设的过程中,我的收获
25、要远大于遗憾。通过这次的实际应用,我充分感受到了电子专业的魅力所在。完成这份毕设同时,我综合了运用了所学的数电,模电,微机原理,C语言编程等多种课程,在巩固大学所学专业知识的同时,更进一步梳理了知识网络,提高了我对于电子信息这个专业的认识。最后我要向我的导师与四年学习中教导我的各位老师致以最崇高的敬意。也谢谢陪伴我四年成长和生活、学习各位同学。感谢上海师范大学提供了我这样一个美好学习成长的平台。参考文献1 康光华 电子技术基础 数字部分(第五版):高等教育出版社,2006年1月.2 康光华 电子技术基础 模拟部分(第五版):高等教育出版社,2008年1月3 林占江,林放 电子测量技术(第3版)
26、:电子工业出版社,2012年5月4 邱关源,罗先觉 电路(第五版):高等教育出版社,2011年5月5 胡汉才 单片机原理与接口技术 :清华大学出版社,2008年2月6 张齐,朱宁西,毕盛 : 电子工业出版社 2011年9月;7 周明德 微型计算机系统原理及应用(第五版):清华大学出版社 2007莫按摩1月8 Ayala, Kenneth J ,The 8051 Microcontroller and Embedded Systems Using Assembly :Thomson Learning ,2005 年7月9 Newnes Designing Embedded Systems wit
27、h PIC Microcontrollers 2003.1110Maxim integrated Products Inc Specifying Quartz Crystal 2000.2附录A 仿真原理图附录B 程序部分#include #include #include #include #define uchar unsigned char #define uint unsigned int #define Vref 2.048 /tlc5615 sbit cs=P24; /片选 sbit clk=P23; /时钟 sbit din=P25; /SPI口 /tlc2543 sbit cl
28、ock = P31; /输入、输出时钟端 sbit input = P27; /数据输入端 sbit output = P26; /数据输出端 sbit CS1 = P30; /片选端,负电平有效 /lcd sbit RS=P20; sbit RW=P21; sbit En=P22; /uchar code table16=0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f;/数字 static uchar dis_buf4=0,0,0,0; /显示缓存 uchar n,temp1; int out_temp = 0;uchar key;/键顺序码 uchar key_cli=0;
29、/数字键被按下的次 /* 函数声明 */ keyscan(); void TLC56 (unsigned long dav); void delay56(); void Write(uchar address,uchar dat); void delayms(unsigned int x); void jianz(uchar key) ; void ADCchu(unsigned long aa); void DispCharacter(uint x, uint y, uint data1); void LCDReset(); void ShortDelay(uchar i); void Lo
30、ngDelay(uint i); void SetRS(bit i); void SetRW(bit i); void SetE(bit i); void InitP0(bit i) ; void WriteInstruc(uint Instruc); uint Read_BF_AC(); void WriteData(uint data1); uint ReadData(void); bit StatusCheck(); void InitLCD(); void jianchu(uchar jianz,uint r); /* 键盘程序 */ keyscan() P1=0xef; if(P1&
31、0x0f)!=0x0f) ShortDelay(100);/ 函数调用消抖动 if(P1&0x0f)!=0x0f) temp1=P1; switch(temp1) case 0xee: key=0; break; case 0xed: key=4; break; case 0xeb: key=8; break; case 0xe7: key=12; break; while(P1&0x0f)!=0x0f); jianz(key); /函数调用 P1=0xdf; if(P1&0x0f)!=0x0f) ShortDelay(100);/ 函数调用消抖动 if(P1&0x0f)!=0x0f) tem
32、p1=P1; switch(temp1) case 0xde: key=1; break; case 0xdd: key=5; break; case 0xdb: key=9; break; case 0xd7: key=13; break; while(P1&0x0f)!=0x0f); jianz(key); /函数调用 P1=0xbf; if(P1&0x0f)!=0x0f) ShortDelay(100);/ 函数调用消抖动 if(P1&0x0f)!=0x0f) temp1=P1; switch(temp1) case 0xbe: key=2; break; case 0xbd: key=
33、6; break; case 0xbb: key=10; break; case 0xb7: key=14; break; while(P1&0x0f)!=0x0f); jianz(key);/ 函数调用 P1=0x7f; if(P1&0x0f)!=0x0f) ShortDelay(100);/ 函数调用消抖动 if(P1&0x0f)!=0x0f) temp1=P1; switch(temp1) case 0x7e: break; case 0x7d: key=7; break; case 0x7b: key=11; break; case 0x77: key=15; break; while
34、(P1&0x0f)!=0x0f); jianz(key); /* 键盘按键功能函数 */ void jianz(uchar key) /键盘值处理中调用lcd显示 if(key=9) dis_bufkey_cli=key; /得键值存储在其中 key_cli+; if(key=12)/确定键送数 unsigned long out_set=0; /十六位 uint j,i; uchar dis_buf14=0,0,0,0; for(j=0;j4;j+) dis_buf1j=dis_bufj; jianchu(dis_buf10,0); jianchu(dis_buf11,1); jianchu
35、(dis_buf12,2); jianchu(dis_buf13,3); for(i=0;ikey_cli;i+) out_set=out_set*10+(dis_bufi); /给out-temp赋值为整数 TLC56(out_temp+5)/2); / /(重点地方)数字信号从单片机来,这里可以传键盘值和键盘联系 TLC5615DAC的键盘值 ShortDelay(1); if(key=13) /取消键 uint j; uchar dis_buf24=0,0,0,0; for(j=0;j4;j+) dis_bufj=dis_buf2j ; jianchu(dis_buf20,0); jianchu(dis_buf21,1); jianchu(dis_buf22,2); jianchu(dis_buf23,3); TLC56(0x0000); /(重点地方)数字信号从单片机来,这里可以传键盘值和键盘联系 TLC5615DAC的键盘值 ShortDelay(1); key_cli=0; if(key=10) /步进+键 uint j; uchar dis_buf34; for(j=0;j4;j+) dis_buf3j=dis_bufj;/是保护dis_buf中的
限制150内