济南市高新区联合财商广场1号楼15层
联系人:高经理
电 话:0531-68684888
手 机:18766446695
传 真:0531-58702200
网址:www.leilatu.com.cn
济南市高新区联合财商广场1号楼15层
联系人:高经理
电 话:0531-68684888
手 机:18766446695
传 真:0531-58702200
网址:www.leilatu.com.cn
本文设计了一个数字可调直流稳压电源,其具有精度 0.01V 的步进调制、范围为 1.25V-10.00V(可扩展)的直流电压输出、输出误差较小且具有带负载和数码显示功能等特点。
本设计主要采用单片机AT89C52作为处理计算核心,完成外部调节与控制。本系统主要由六个单元模块组成,即电源模块、按键模块、单片机最小系统模块、显示模块、线性电阻模块和电压输出模块。其连接原理框图如图1所示。其中电源模块采用7815与7805芯片分别产生15V和5V的电压给其它模块供电。输出模块采用LM317芯片构成,为了满足LM317的工作特性,故该系统必须为LM317增设一个输入比较的线性电阻模块。
线性电阻模块是由若干个阻值以2的指数倍增长的电阻串联而成,它利用继电器和单片机巧妙地将数字信号与模拟信号融合到一起,即线性电阻模块的输出电阻取决于单片机获取的数字信号,从而可以使系统实现一定范围内任意连续可调的电压输出。由于要对输出电压进行数字调节和显示,因此还要增设按键模块和显示模块。
显示模块使用4个数码管对所输出的电压进行显示,而按键模块使用4个按键组成,对单片机产生中断信号,使单片机控制LED数码管显示,并且同时计算,控制线性电阻模块的总电阻输出,由于此阻值决定了电源系统最后的输出电压,从而实现输出电压与显示电压的一致。
图1系统总原理框图
单片机最小系统在本设计中起到接收按键中断信号,控制数码管显示并处理计算,改变线性电阻的输出阻值等作用。
该模块电路是由复位电路、时钟晶振电路、电平上拉电路和单片机芯片AT89C52组成。其中时钟晶振电路使用12MHz的晶振,给单片机提供时钟信号,而复位电路采用的是上电复位电路。AT89C52的P2.0到P2.7和P0.0到P0.3引脚连接在线性电阻模块的12个继电器开关上,P3.0到P3.2加上P1.7引脚连接在按键开关上,P3.3为外部中断1下降沿触发,绑在按键开关公共端,P3.4到P3.7引脚端连接在数码管位码上。
按键模块是用4个按键对单片机产生中断信号来控制显示模块显示和线性电阻模块的阻值,以便实现输出电压的数字调节。此模块设置的4个按键,其功能分别为:
KEY1:每按键一次加一,输出电压增加1V;
KEY2:每按键一次加一,输出电压减少0.1V;
KEY3:每按键一次加一,输出电压增加0.01V;
KEY_OUT:按键按一次,确认输出电压,使电阻模块去匹配,使输出与显示值一致。
该按键电路是将一个外部中断拓展成多个。按键开关一端接地,另一端通过二极管与电阻接到 Vcc 上,二极管 1N4007 的管压降为 0.7V,端口 8 接到单片机外部中断 1 上。按键没有按下时端口 4、5、6、7 均为高电平,8 也为高电平;每当按键按下,会将端口 4、5、6、7对应接地,电平被拉低,8 端口也会被拉低从而产生下降沿进入中断从而改变显示模块和线性电阻模块的值的变化。
电压输出模块主要采用 LM317 芯片完成转换输出。由于LM317 芯片的输入电压一般要比输出电压高 3V(即有 3V 的压降),所以要求其输入 Vin 接 15V 的电压。LM317 芯片输出电压取决于ADJ 端口(1 引脚)与 V0 端(2 引脚)之间的电阻 R12 和 1 引脚所接的电阻 R1,计算公式如(1)所示。
上式中,由于 R12 为定值电阻,所以输出电压仅仅决定于 R1 的大小。由于本设计产生的电压在 1.25V 到 10V 之间,当 Vo=10V 时,根据式(1)计算出 R1=(10/1.25-1)*512=3968Ω,由于 R1 来自线性电阻模块的阻值,所以本系统的线性电阻模块采用 12 位阻值以 2 的指数递增的电阻串联,可实现从 1Ω 到 4095Ω 之间的任何一阻值的选取,即可使系统得到范围为 1.25V 到 10V 之间的任意电压输出。由式(1)还可以得到最小精度为 1/512*1.25=0.0024V 的调节,这样就可满足最小 0.01V 的步进调制了。
此模块,前人大多使用变阻器调节或者数字模拟开关 CD4066进行调节,考虑到数字模拟开关存在着较大内阻(大约为 50Ω 左右)会对线阻总阻值产生较大影响,因此在本设计中,使用继电器来代替数字模拟开关。又考虑到担心单片机的输出电流不够无法驱动继电器导通,于是给继电器添加了一个三极管和一个放电二极管,利用三极管的导通截止特性来加大继电器的驱动电流,以便使单片机可控。也就实现了用数字信号来精确控制模拟电阻总阻值的效果。
每当继电器部分电路接收到单片机传输过来一个高电平时,对应三极管导通,从而使继电器导通,继电器就将其并联的电阻短接,使对应电阻可选择性的接入串行电阻中,从而达到通过数字信号改变电阻总值的目的。例如,获取的数字信号为 000101101010B,则对应电阻为 28+26+25+23+21=362Ω。
由于继电器导通可认为导线直接连接几乎没有内阻,所以排出了由其内阻影响线阻总阻值的情况。由于此模块中线性电阻采用阻值为 1、2、4……2048Ω(阻值以 2 的指数倍增长)的 12 个电阻串联而成,根据等比数列的求和公式可得到此模块理论电阻取值范围为1Ω 到 4095Ω,精度为 1Ω。
在软件编程上,采用了中断、延时和数组调用等功能。设定了一个按键为标志位,首先给 4 个数码管赋予初值,当按键中断信号来了,就可通过循环使 LED 数码管在不停地扫描显示,只有当按键标志位的中断信号来到时,确认下数码管显示的数值,此时才使单片机内部进入计算阶段,匹配出与之相应的线性电阻的 12 位二进制代码,并行输出,由于一位二进制数控制一个继电器开关,那么就可得到线阻模块最后与数码管显示匹配的串行输出总阻值。
再根据式(1)计算出 LM317 的输出电压 V0,由于 IADJ 一般在 0uA 到 100uA 之内较小,故通常情况下是可以忽略的。但此设计中为了提高精度,不能忽略,因此在程序编写上取个中间值 50uA,如此在软件上完成通关按键对显示和电压的控制与调配。