摘 要:针对嵌入式系统中存在多种不同供电电压的特点,利用AVR Butterfly提供的丰富的硬件接口资源,控制一个有反馈的稳压电源,用C语言调用GCC设计软件程序,设计了一种能够适用于多种不同嵌入式系统的智能电源,能够提供多种不同的输出电压,并且能够模拟多种不同电源供电情况,方便测试目标系统的稳定性和可靠性。在实际测试中,该电源能够模拟电源掉电等嵌入式系统常遇到的电源故障,并能对不同的系统预置不同的输出电压。 关 键 词:AVR 稳压电源 智能电源 校准 GCC 随着嵌入式系统设计技术的发展,在设计和仿真中,系统工程师对电源的要求也越来越高。在嵌入式系统设计是使用8031单片机和74系列集成电路时,所有使用74系列集成电路的电路板都使用单一的5 V电源供电就可以了。当时的供电电源部分不是一个需要太多注意的单元,基本上5 V的电源能满足所有的数字集成电路设计的需要。而近几年来,随着技术的发展,集成电路里的三极管变得越来越小并且工作的电压越来越低,使得嵌入式系统开发的重点从系统的速度,转到低功耗设计上。因此在同一个嵌入式系统中,存在多种不同电压的电源供电,从低于1 V到高于5 V都存在。而且在系统的稳定性和可靠性测试时,还要模拟不同的电源故障情况下,比如掉电等,嵌入式系统的稳定性和可靠性,这也需要用不同的电源来模拟。
1 电源系统结构
在本文中,提出了一种基于AVR ButteRFly的电源设计,能够很好地完成嵌入式系统的供电和系统的测试要求。电源系统的结构如图1所示。
2 硬件设计
系统由两种电源电压供电,主电源电压12 V,给目标系统和Butterfly(通过一个3.3 V线性稳压器)提供足够的电流,另一个电源电压-5 V是用来给功率放大器提供负电压的。主模块是线性稳压电源,一个10 b的DAC控制该电压,该模块的输出接入电流检测模块,然后从输出端输出。
如图2所示,电源的主要部分是LM723稳压电源,它的参考电压受外部干扰小,而且短路保护时,它的输出电压为0。LM723输出电压的范围是2~37 V之间。若要LM723输出电压大于2 V,V-引脚可以直接接地,但是为了能够使输出电压达到0 V,V-引脚应该接至少应为-0.4 V的负电压,有多种方法能够达到这种要求,一个是使用倒相器把正电压转换为负电压,但是这样会引入噪声干扰,由LM273的技术手册和它内部的结构可知,LM237的参考电压与V-引脚的电压直接相关,这个引脚的电压必须稳定,而且不能有干扰,因此在这里采用另一种方法来得到合适的电压,如图2所示,在电路中,VREF=1.28 V是由U2A,R19,R5和R6从LM723的参考电压得到,它被功放U2B,R1,R2倒相,在节点VM256=-2.56 V,这就是完成了一个到VREF的负反馈,部分地补偿了由于温度对电压的影响,使得参考电压稳定,这里的R19是可调电阻,可以控制VM256点的电压到一个合适的值,使得LM723的输出的基准电压可以微调。
TC1321DAC连接到LM732的IN引脚上,用来设置输出电压,TCl321有10位的分辨率,2.7~5.5 V输出电压,积分微分线性度并且输出电压的偏移量小于8 mV,该DAC是由Butterfly内部的CPU通过I2C总线控制的。它的参考电压VREF=1.28 V。DAC的输出电压通过一个简单的低通滤波器(由R7和Cs构成),目的是使得输出电压平滑,去除毛刺。
由于许多电子设备不能在反相电压下工作,于是在该电源设计中有电压偏置纠正电路,如图3所示,由R20,R9,R10,R18和U2D构成电压反馈电路,在电源刚刚启动时(这时的DAC的输出是0),这部分电路能够消除负电压输出。这里是用电路来完成,没有使用在软件中加一个常数给DAC的方法,这是因为偏移量可能是正值,在软件中DAC的常数就应该是一个负值来纠正,而这种方法不起作用,因为DAC只在无符号数下工作。
二极管D1给供电电路提供了保护使得输出电压不会低于-0.7 V。在电源的输出端,有一个1μF的电容,是用来防止电路的自激振荡,这个电容值不能太大,如果太大电源的输出响应会变慢,CPU控制电源的速度降低了。三极管Q1用来放大LM723的电流输出,Q1耗散的多余功率P=(VIN-VOUT)×IOUT。
电阻R14设置了LM723的电流门限,当R14上的电压达到0.65 V时,输出电压由微分放大器U2C钳制,此时R14上的电压被微分放大器放大,电压与输出电流的比是1 V/1 A。电压放大到5.6 V/A以适应Butter-fly的VIN测量电路的测量要求。电源的控制部分是Butterfly,结构如图3所示,它有良好的用户界面,有五通道的控制杆和六字符的LCD许多外围设备连接着微控制器,比如扬声器、数据闪存、一个NTC电热调节器、一个光敏传感器和一个RS 232通信端。所有的外围接口都能用来扩展系统的功能。现在,在这个电源设计中使用到LCD、控制杆、JTAG、ADC、USI(用I2C驱动DAC)和一电流保护指示LED。
DAC(U3)和Butterfly模块使用HT7533-1线性降压稳压电源供电,该电源不会有高电压输出。为了避免噪声对电源精度的影响,电路中所有的“地”都连接到电路板上的一点上,并且信号“地”也连接到同一点上。
3 软件设计
软件的结构图如图4所示,基于Martin Thomas的ButteRFly演示版代码的GCC接口设计。CPU的工作频率设定为8 MHz,因为在程序中要用到浮点运算,但在电源设计中不需要,所以省电模式都未使用。AT-mega169的ADC在每一次转换时都会发出中断请求,电流保护的优先级高于其他进程,ADC的取样来自8次输入的平均值,以消除毛刺,不至于触发错误的过流保护。ADC的一些匹配的常量值在测量电路的参数后再在软件中设置。
4 校 准
因为要作为测试用的信号源使用,所以电源在使用之前必须校准。校准包括两部分,硬件校准和软件设置,在这个过程中,需要对Butterfly的程序进行改写和重新编译。
断开Butterfly与电源电路的连接,正确连接电源电路后,给电路上电,测量电压VPLUS(12 V),VMINUS(-5 V),VCC(3.3 V),VREF(1.28 V)和VM256(-2.56 V),这些值应该接近括号中的值,不必与之完全一致。然后,调节微调电阻R19调整电压VREF到1.28 V。调整后,断电连接Butterfly和电路中的其他部分,然后上电。
因为要与硬件一起进行设置,所以在软件中的相关文件中设置一个初始值,以便于后面的校准,在文件DAC.h中:
编译代码并写入Butteterfly后,输出的电压通过菜单设置为零,通过调节微调电阻R20输出电压调节为零。校零完成。
为了计算V2CODECONST(VOUT=1 V)时的值,在Butterfly的菜单上输入一个VSET电压,如4 V,然后测量VOUT并且计算出实际的常量:
输出电路置为开路(此时的电流输出应为0),此时电源的显示值记为I0DISP,使用如下公式:
计算CURCODEOFFSET。
下一步,按照新的常量值给Butterfly重新编程,为了计算CODE2CURCONST的值,设置一个预设电压值VSET,比如5 V,并且连接一个已知的准确电阻RLOAD大约在47 Ω左右(电流在100 mA左右),记下此时LCD上电流的显示值IDISP,用下面的公式计算:
然后在ADC.H中修改此常量值并且重新编译程序,校准完成。
该电源同其他高级电源一样,具有短路保护和过载保护功能,而且在显示器显示电压电流、功耗,能够精确地模拟主电源,用来测试目标系统在各种不同电源故障下的性能,比如电压下降、电压周期下降、电源线上的干扰等。
5 结 语
由于AVR Butterfly提供了丰富的外部接口,使得设计控制电路的过程非常简单,而且在这个设计中,只使用了有限的几个接口,还有一些接口可以用来扩展该电源的功能,例如,使用RS 232串行接口,把智能电源与PC机连接,在PC机上就能够实时反映电源的工作状态。 |