1、I南京邮电大学实验开放项目项目名称: 基于单片机的数控电流源设计 学 院: 光电工程学院 导 师: 张 胜 姓 名:石晓娜、梅阳阳、丁嘉毅、赵敏、朱振东二零一四年二月II基于单片机的数控电流源的设计摘 要恒流源,是一种能够向负载提供恒定电流的电源。恒流源的应用范围非常广泛,并且在许多情况下是必不可少的。它既可以为各种放大电路提供偏流以稳定其静态工作点,又可以作为其有源负载,以提高放大倍数。并且在差动放大电路、脉冲产生电路中得到了广泛应用。本文设计了一种基于单片机控制的数控直流恒流源。该恒流源以 STC-89C52 为控制核心,采用了高共模抑制比低温漂的运算放大器 LM324 和自制达林顿管构成
2、恒流源的主体,完成了单片机对输出电流的实时检测和实时控制。人机接口采用 44 键盘及 LCD 数码管显示器,控制界面直观、简洁,具有良好的人机交互性能。在软件设计上采用增量式 PWM 控制算法,即数字控制器的输出只是控制量的增量。该系统已基本达到预期的设计目标,具有功能强、性能可靠、体积小、电路简单的特点,可以应用于需要高稳定度的小功率恒流源的领域。关键词:恒流源、PWM 控制算法、数字控制、单片机控制3引 言随着电子技术的发展,数字电路应用领域的扩展,现今社会,产品智能化、数字化已成为人们追求的一种趋势,设备的性能,价格,发展空间等备受人们的关注,尤其对电子设备的精密度和稳定度最为关注。性能
3、好的电子设备,首先离不开稳定的电源,电源稳定度越高,设备和外围条件越优越,那么设备的寿命更长。基于此,人们对数控恒定电流器件的需求越来越迫切。众所周知,许多科学实验都离不开电源,并且在这些实验中经常会对通电时间、电压高低、电流大小以及动态指标有着特殊的要求,然而目前实验所用的直流电源大多输出精度和稳定性不高;在测量上,传统的电源一般采用指针式或数码管来显示电压或电流,搭配电位器来调整所要的电压及电流输出值。使用上若要调整精确的电压或者电流输出,须搭配精确的显示仪表监测,又因电位器的阻值特性非线性,在调整时,需要花费一定的时间,况且还要当心漂移,使用起来非常不方便。因此,如果直流电源不仅具有良好
4、的输出质量而且还具有多功能以及一定的智能化,以精确的微机控制取代不精确的人为操作,在实验开始之前就对一些参数进行预设,这将会给各个领域中的实验研究带来不同程度的便捷与高效 。当今社会,数控恒压技术已经很成熟,但是恒流方面特别是数控恒流的技术才刚刚起步有待发展,高性能的数控恒流器件的开发和应用存在巨大的发展空间。本数控直流恒流源系统输出电流稳定,不随负载和环境温度变化,并具有很高的精度,输出电流误差范围很小,输出电流可在一定范围内任意设定,因而可实际应用于需要高稳定度小功率恒流源的领域。41 设计方案的选择1.1 电路综合设计流程图 1.1.1 数控电流源电路设计流程图1.2 总体设计方案经初步
5、分析设计要求,得出总体电路由以下几部分组成:电源模块,控制模块(包括A/D、D/A 转换)恒流源模块,键盘模块,显示模块。以下就各电路模块给出设计方案。1.2.1 控制部分方案方案一:采用 FPGA 作为系统的控制模块。FPGA 可以实现复杂的逻辑功能,规模大,稳定性强,易于调试和进行功能扩展。FPGA 采用并行输入输出方式,处理速度高,适合作为大规模实时系统的核心。但由于 FPGA 集成度高,成本偏高,且由于其引脚较多,加大了硬件设计和实物制作的难度。方案二:采用单片机作为控制模块核心。单片机最小系统简单,容易制作 PCB,算术功能强,软件编程灵活、可以通过 ISP 方式将程序快速下载到芯片
6、,方便的实现程序的更新,自由度大,较好的发挥 C 语言的灵活性,可用编程实现各种算法和逻辑控制,同时其具有功耗低、体积小、技术成熟和成本低等优点。5基于以上分析,选择方案二,利用STC89C52单片机将电流步进值或设定值通过换算由D/A转换(此处我们利用PWM脉宽调制实现D/A转换功能),驱动恒流源电路实现电流输出。输出电流经处理电路作A/D转换反馈到单片机系统,通过补偿算法调整电流的输出,以此提高输出的精度和稳定性。1.2.2 恒流源模块设计方案方案一:由三端可调式集成稳压器构成的恒流源。其典型恒流源电路图如图 1.2.1 所示。一旦稳压器选定,则 U0 是定值。若 R 固定不变,则 I0不
7、变,因此可获得恒流输出。若改变 R 值,可使输出 I0改变。因此将 R 设为数控电位器,则输出电流可以以某个步长进行改变。此电路结构简单,调试方便,价格便宜,但是精密的大功率数控电位器难购买。图 1.2.1 三端集成稳压器构成的恒流源框图方案二:由数控稳压器构成的恒流源方案一是在 U0不变的情况下,通过改变 R 的数值获得输出电流的变化。如果固定 R 不变,若能改变 U0的数值,同样也可以构成恒流源,也就是说将上图中的三端可调式集成稳压源改为数控电压源,其工作原理和上图类似。此方案原理清楚,若赛前培训过数控电压源的设计的话,知识、器件有储备,方案容易实现。但是,由 1.2.2 图可知,数控稳压
8、源的地是浮地,与系统不共地线,对于系统而言,地线不便处理。图 1.2.2 数控电压源构成的恒流源框图方案三:采用集成运放的线性恒流源该恒流源输出的电流与负载无关, 通过使用两块构成比较放大环节,功率管构成调整环节,利用晶体管平坦的输出特性和深度的负反馈电路可以得到稳定的恒流输出和高输出阻抗,实现了电压电流转换。其原理框图如图 1.2.3 所示。6图 1.2.3 集成运放构成的恒流源框图综合考虑,采用方案三,使用低噪音、通用运放 LM324 和 2 个 8550 等构成一个恒流源电路。1.2.3 显示模块设计方案方案一:使用 LED 数码管显示。数码管采用 BCD 编码显示数字,对外界环境要求低
9、,易于维护。但根据题目要求,如果需要同时显示给定值和测量值,需显示的内容较多,要使用多个数码管动态显示,使电路变得复杂,加大了编程工作量。方案二:使用 LCD 显示。LCD 具有轻薄短小,可视面积大,方便的显示汉字数字,分辨率高,抗干扰能力强,功耗小,且设计简单等特点。综上所述,选择方案二。采用 12864 汉字图形点阵液晶显示模块同时显示电流给定值和实测值。1.2.4 键盘模块设计方案方案一 :采用独立式按键电路,每个按键单独占有一根 I/O 接口线,每个 I/O 口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点为当按键较多时占用单片机的I/O 口数目较多。方案二 :采用标准 4X4
10、 键盘,此类键盘采用矩阵式行列扫描方式,优点是当按键较多时可降低占用单片机的 I/O 口数目,而且可以做到直接输入电流值而不必步进。题目要求可进行电流给定值的设置和步进调整,需要的按键比较多。综合考虑两种方案及题目要求,采用方案二,方便进行扩展。1.2.5 电压源模块设计方案系统需要多个电源,单片机、A/D、使用+5V 稳压电源,运放需要12V 稳压电源,同时题目要求最高输出电流为 260mA,电源需为系统提供足够大的稳定电流。综上所述,采用三端稳压集成 7805、7812 分别得+5V 和12V 的稳定电压,78H 系列稳压器输出电流可以达到 5A,能为系统提供足够大的稳定电流。利用该方法实
11、现的电源电路简单,工作稳定可靠。1.3 系统组成经过方案比较与论证,最终确定系统的组成框图如图所示7图 1.3.1 系统组成框图2 单元电路的设计2.1 控制模块电路设计2.1.1 最小系统电路设计通过键盘模块输入给定的电流值或是步进调整信号传送给单片机,单片机在接受到信号后进行处理运算,并显示其给定的电流值,然后经 D/A 转换以输出电压,驱动恒流源电路实现电流输出,并将采样电阻上的电压经过 A/D 转换输入单片机系统,通过补偿算法进行数值补偿处理,调整电流输出,并驱动显示器显示当前的电流值。最小系统的核心为 STC89C52,为了方便单片机引脚的使用,我们将单片机的引脚用接口引出,电路如图
12、 2.1.1 所示:P0 口和 P3.0P3.3 是 LCD 接口;P1 口作为 A/D 与 D/A 转换接口;P2 口为键盘接口。图 2.1.1 最小系统原理图2.1.2 A/D 转换电路设计A/D 转换采用 BB 公司的 ADS7816 构成的转换电路,如图 2.1.3 ADS7816 是 12 位串行模/数转换器,采样频率高达 200kHz,转换所需时间短,转换精度高。ADS7816 转换器将采样电阻上的电压转换成数字信号反馈给单片机,单片机将此反馈信号与预置值比较,根据两者间的差值调整输出信号大小。这样就形成了反馈调节,提高输出电流的精度。同时,A/D 采样回来的电流经过单片机处理传送
13、到 LCD,可以显示当前的实际电流值。8图 2.1.3 A/D 转换电路2.2 恒流源电路设计恒流源电路的设计是本系统设计的核心,它采用电压来控制电流的变化。为了能产生恒定的电流,我们采用电压闭环反馈控制。恒流源电路原理图如图 2.2.1 所示,该电路主要由运算放大器、大功率达林顿管、采样电阻 RS、负载 RL等组成。取样电阻 RS 从输出端进行取样,再与基准电压比较,并将误差电压放大后反馈到调整管,使输出电压在电网电压变动的情况下仍能保持稳定。电路中调整管采用大功率达林顿管(由两个 8550 构成),既能满足输出电流最大达到 260mA 的要求,也能较好地实现电压近似线性地控制电流。RS 选
14、用热稳定性好的水泥电阻,并选取较大值(2) ,使得在电流较低时也能获得较大的电压值。运算放大器采用高精度的 lm324 作为电压跟随器。DAOUT 即为输入电压 Ui,当 Ui 一定时,运算放大器的 Ui=US,I0=IL=IS=Ui/RS,即 I0不随 RL的变化而变化,从而实现压控恒流。由此得到恒流源输出电流的大小为:I 0= Ui/RS图 2.2.1 恒流源电路原理图2.3 键盘电路设计在设计中,使用标准的 4x4 键盘,可以实现 09 数字输入, “+”、 “-”步进设置。其电路图如图 2.3.1 所示。图 2.3.1 键盘电路原理图92.4 显示电路设计本设计采用 12864 型汉字
15、图形点阵液晶显示模块,可显示汉字及图形,内置 8192 个中文汉字(16X16 点阵) 、128 个字符(12X16 点阵)及 64X256 点阵显示 RAM(GDRAM) 。可显示内容为 192 列 64 行,还带多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等。12864 采用 8 位并行接法,与单片机 P3 和 P4 口相连,用于显示设定值与当前测量值。其接口如图 2.4.1 所示。图 2.4.1 LCD 显示电路原理图2.5 稳压电源设计在本设计中,运放需12V 供电,单片机需、A/D 需+5V 供电,采用三端稳压器7805、7812、7815 构成一稳压电源,输出电流范围是
16、50mA260mA,而 78H 系列稳压器输出电流最大可以达到 5A,能为系统提供足够大的稳定电流。稳压电路如图 2.5.1 所示:考虑系统对功率要求较高,所以在设计中选取了输出功率 50W 的变压器,输入电压由变压器和全波整流滤波电路产生。图 2.5.1 电源电路原理图3 软件设计软件设计采用 C 语言,对 STC89C52 进行编程实现各种功能。软件设计的关键是对 A/D转换器的控制。软件实现的功能是:a) 控制键盘工作,确定电流步进调整;b) 控制 A/D 工作,设置给定电流,测量输出电流;c) 对反馈回单片机的电流值进行补偿处理;d) 驱动液晶显示器显示电流设置值与测量值。10图 3
17、软件流程框图4 实物图11图 4.1 恒流源控制电路实物图图 4.2 液晶显示实物图图 4.3 矩阵键盘实物图图 4.4 线性电源实物图12图 4.5 单片机控制系统(包括 A/D)实物图图 4.6 整体实物图4.7 PWM 波调制波形134.8 加上负载后电流实际示数4.9 系统反馈后液晶示数4.10 封装后实物图145 数据记录脉宽恒定情况下(初始电流设定 150mA)负载变化的恒流测试(仿真图略)R() 10 11 12 13 14 15I(mA)(U=12V)150 150 150 150 150 1506 结论与展望本文结合各种新技术设计出一种基于单片机芯片 STC-89C52 的数
18、控直流恒流源。对该恒流源的测量结果表明,该恒流源具有较高的精度和稳定度,基本满足设计要求。具体的研究成果和结论如下:1.完成了硬件电路的设计,具体包括 A/D 转换电路的设计,键盘输入及输出显示等。该恒流源实现了键盘输入预置值,LCD 显示输出预置值和实际输出值的功能,精度和稳定度都比较高。2.本系统在软件设计上采用了增量式 PWM 控制算法,增量式控制虽然只是算法上作了一点改进,却带来了不少优点:(1)算式中不需要累加。控制增量 u(k)的确定仅与最近 3 次的采样值有关,容易通过加权处理获得比较好的控制效果;(2)计算机每次只输出控制增量,即对应执行机构位置的变化量,故机器发生故障时影响范
19、围小、不会严重影响生产过程。本系统在软硬件设计上仍然有很多需要完善之处。进入 21 世纪,随着信息技术一日千里的发展,恒流源也必将经历由模拟恒流源向数字恒流源过渡的这一历程。特别是计算机技术的发展必将出现智能化技术。因此,如何把数字技术和智能化技术用于制作高稳定度的恒流源就将成为 21 世纪的新课题。15作品程序:#include#define uchar unsigned char#define uint unsigned int#define V_TH0 255#define V_TL0 255#define V_TMOD 0x01uchar code table=“I LOVE SAST
20、!“;uchar code table1=“I LOVE NJUPT!“;uchar code table2=“Constant Current“;uchar table3=“150 mA“;uchar code table4=“error!“;uchar code table5=“Please set again“;sbit lcden=P14; /液晶使能端sbit lcdrs=P10; /液晶数据命令选择端sbit P3_7=P37;sbit P1_2=P12;unsigned char ZKB1,ZKB2;uchar num,flag=0;void delay(uint z)uint
21、x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()16lcden=0;write_com(0x38);/设置16X2显示,5X7点阵,8位数据接口write_com(0x0c);/设置开显示,不显示光标write_com(0x06);/写一个字符后地址指针加1write_com(0x01);/显示清零,数据指针清零write_com(0x80);for(num=0;num=0) ZKB1=198;if(current230) ZKB1=5;if(current=50if (n=ZKB1) /当小于占空比值时输出低电平,高于时是高电平,从而/实现占空比的调整P3_7=0;elseP3_7=1;if (n=ZKB2)P1_2=0;elseP1_2=1;