基于STM32程控电源的设计与实现
2021-01-09杨秀芝汪晴晴
◎杨秀芝 汪晴晴
(山东建筑大学信息与电气工程学院,济南250101)
电源性能优良直接关系着产品的可靠性,因此,电源稳定性和调节精度问题显得更加重要。目前,常用到的电源基本是通过旋转电位器,达到控制电源电压改变的目的。此类电源存在诸多不便,如对于需要的电压,很难做到精确调节,而该类电源输出电压不稳定,同时也存在体积较大,电路较为复杂以及价格昂贵等缺点。实验室电压源的精度受到价格的影响,所以在给一些精密仪器供电的时候往往达不到自己想要的效果。并且也由于体积庞大不利于携带的问题,往往实验室的高精度电压还需要自己重新设计电路或者使用辅助电路获得需要的电压。
笔者旨在设计一个新型的程控电源,并以STM32为主控芯片构建程控电源控制系统,实现电压的精确控制。
1 程控电源的基本组成与原理
笔者以STM32为主控芯片,设计一款新型的程控电源。该程控电源主要包括EMI滤波电路、整流滤波电路、变换器、控制电路等。信号采集部分通过电压、电流采集电路,对输出的电压电流进行采集,并且将模拟信号通过AD7705转换成数字信号[1],通过STM32进行数据处理,并用PID调节输出,形成闭环控制,达到输出电压稳定的目的。程控电源系统的流程图如图1所示。
图1 程控电源总体设计
程控电源的工作原理:将220V交流电接到电路的输入端,通过EMI滤波电路滤除来自电网噪声(防止电网噪声对电源的干扰)和自身噪声的干扰(电源本身对外界的干扰)。其次,将得到的交流电经过全桥变换和滤波后得到脉动直流电。然后,再将得到的脉动直流电经过DC-DC电路后得到直流电。最后,再通过STM32控制调压电路输出想要的电压。在输入电压有波动时,为了确保电压输出稳定,需要进行电压反馈调节,该系统将反馈信号送入控制芯片STM32,经过取样、比较等环节,控制芯片调节DA输出电压,从而控制调压电路的输出,达到稳定电压的目的。
2 程控电源包含的关键技术
2.1 硬件设计
程控电源硬件电路主要由保护电路、转换电路、信号采集电路等组成。其中保护电路包括EMI滤波电路、整流滤波电路等;转换电路包含变换器、主功率电路、控制电路等;信号采集电路有电压采集电路、电流采集电路等。
2.1.1 EMI滤波电路
EMI滤波电路[2]是由电容和电感组成的低通滤波器,它能让低频信号顺利地通过,而对高频信号具有抑制作用[3]。电源中含有高频开关和高速PWM驱动信号,其通过电路中部分电容和电感线路的发射和传导,会将高次谐波信号带入工频电网,使共用电网产生附加电流,导致回路损耗增加,更有甚者,会影响电缆使用寿命、降低电量质量。所以采用EMI滤波电路,防止外界噪声和电源的相互干扰[4],电路原理如图2所示。
图2 EMI滤波电路
EMI滤波电容由共模扼流圈L和滤波电容C1—C4组成:L抑制共模干扰(两条电源线对大地的噪声);滤波电容C1、C2采用薄膜电容器,用来滤除串模干扰(两条电源线之间的噪声);C3、C4采用陶瓷电容,并将C3、C4串联跨接在输出端,其两者的中点接地,用来抑制共模干扰。
2.1.2 整流滤波电路
笔者采用全桥整流电路[5],减少整流后的脉动。由于经过桥式整流电路得到的直流电纹波比较大,所以加上滤波电路,减少直流电压的纹波。滤波电路的作用是利用电容元件两端电压不能跃变或电感元件两端电流不能跃变的特性,将整流后的电压电流滤掉交流成分,保留直流成分,得到平滑的输出电压。对于输入整流滤波电路,它不仅能平滑整流电压,而且还能保持电压;对于输出整流滤波,它不仅能将高频脉冲滤波成平稳直流电,还能保持电流连续。滤波电路分为电容滤波、电感滤波、复合滤波电路,为了得到比较理想的直流电压,笔者选用复合滤波电路。交流电经过整流滤波之后变成单向脉动直流电。
2.1.3 主功率电路硬件设计
电源主功率电路采用XL4015芯片[6],XL4015是一款降压芯片,能够输出5A的驱动电流,与LM2596芯片相比,XL4015具有更强的电流驱动能力,属于大功率型电源变换器。经查阅XL4015的数据手册知该芯片的工作电压为8—36V,输出电压可调,芯片具有高电压、高频率、大电流、高可靠性等特点,当输入电压20—30V,输出功率50W时效率在90%以上。在XL4015芯片外增加一个运放电路,通过运放的输出来控制XL4015的输出,并通过XL4015的FB引脚反馈控制输出电压,改变了原来使用电位器控制电压输出的方式,实现STM32控制电压输出,调压部分主电路如图3所示。
图3 XL4015降压主电路
因为主功率电路中的XL4015芯片工作电压为8-36V,而由STM32的GPIO管脚提供的电压不能让XL4015正常工作,所以笔者首先通过一个升压电路,升压电路见图5所示。其次,通过C2(电解电容)高频滤波后接入主电路输入端,使主电路输入端接入电压为30V,主电路输出后通过一个LC电路:L(电感)为了保证波纹电流低于最大值限定值;C1(电解电容)为了减小输出波纹电压。然后,在输出Vout+端接一个发光二极管,用于指示是否正常输出。最后将输出通过一个运放反馈到FB引脚控制可调输出。反馈电路见图4所示。
图4 反馈电路
输出端Vout+通过30K和10K电阻分压后与运放3口连接,输出通过续流二极管连接到FB端口,在运放2口通过DA输入0-3.3V电压来控制主电路的输出电压。其中DA信号由STM32产生,即达到STM32调节输出电压的目的。
系统中XL4015降压主电路的输入电压为32.5V,输出电压的连续可调范围为0-22V。其输入的32.5V电压是通过芯片XL6009得到的,其升压电路图如图5所示。
图5 XL6009升压电路
XL6009稳压器是一种宽输入范围、电流模式、DC/DC变换器,能够产生正负输出电压[7-8]。经查阅官方版XL6009的数据手册知该芯片工作在5-32V的直流电。XL6009的端口3输出方波信号,作为开关:当端口3为高电平时D3截止,电压存储在电感L1内,由于电容与R16和R17组成放电回路放电,使输出电压下降;当端口3为低电平时D3导通,电感L1向电容两端充电,使输出电压升高。XL6009的输出电压由R16与R17的比值决定[9],即输出电压和电阻有关,其关系如公式(2-1)所示。
取R16=25K,R17=1K根据公式2-1得到Vout=1.25×(1+25(1)=32.5V。端口2通过GPIOB.5连接STM32,通过STM32的I/O口输出高低电平来控制XL6009的开断,因为端口2是XL6009的使能端,所以当STM32的PB5口输出高电平时,后面主电路的输入将会被切断,关闭控制电源,反之打开控制电源。
2.1.4 电压采集电路硬件设计
在电压或者电流的采集中,为了确保测量的安全性和可靠性,大多采用隔离式采集[10]。本电源系统最高输出电压为36V,属于低电压测量范围,直接采用电阻分压式测量,电压采集电路原理如图6所示。
通过分压电路来测量输出电压,电路中接入0K电阻是为了以后改变调节测量范围使用,可以根据需求取下0K电阻,断开这部分电路。
图6 电压采集电路
2.1.5 电流采集电路硬件设计
笔者采用采样电阻采集电流。该方法是将采样电阻串联进输出回路,有电流通过时会在采样电阻两端形成压差,通过AD采集采样电阻之间的电压差,然后通过欧姆定律计算出电流的值,欧姆定律的公式如(2-2)所示。电流采集电路的硬件实现见图7所示。
图7 采样电阻电路
采样电阻选用阻值为1Ω的电阻,当电阻R=1Ω时,I=U,通过采集采样电阻两端的电压就能得到通过负载的电流。
2.1.6 显示电路实现
显示电路是人机交互的核心,笔者采用IIC总线控制的OLED液晶显示屏,微处理器通过I/O口模拟IIC总线的时序来驱动OLED显示屏工作,OLED的SCL端口和SDA端口分别连接微处理器的PB7和PB6。RES复位端口连接PB4,DC与CS分别连接PB5、PB2。显示电路图如图8所示。
图8 OLED显示电路
2.2 软件设计
为了方便用户使用,运用QT编写上位机软件界面,界面具有实时显示及调节输出电压的功能。上位机软件主要通过通信协议接收和发送数据,解析接收到的数据并在界面窗口上显示出来,再构造发送的协议,发送到STM32,STM32解析协议并做出相应的动作,STM32的程序在Keil5的环境下实现,STM32实现发送数据、接收数据、控制电源输出、数据采集、人机交互等功能。
2.2.1 微控制器程序设计及实现
时钟系统是微控制器的心脏,微控制器能正常工作的前提是配置好时钟系统,微控制器通过寄存器来配置系统时钟频率,即进行系统内部时钟初始化。当时钟系统初始化完成后,然后对硬件进行初始化:GPIO承担着与外部进行通信和控制的功能,将I/O口初始化为所需要的状态,例如输入、输出、中断等;然后对ADC进行初始化,因为电压电流都是通过模拟信号进行采集的,所以先对ADC进行初始化;此外还包括DAC、OLED显示屏、UART串口等的上电初始化。当初始化完成后,微控制器对信号进行采集,并且通过OLED显示当前电压和电流的信息。系统实时采集电压、电流的大小并且查询是否有控制信号,如果有控制信号就进行相应控制。本系统的微控制程序设计流程如图9所示。
2.2.2 系统时钟及GPIO初始化
微控制系统的运行需要依靠时钟系统才能有条不紊地进行,但是有时会受到外界高频的干扰造成系统时钟紊乱,数据采集和通信需要依靠精准的时钟才能进行更加可靠的数据采集和通信,所以首先要进行系统时钟的初始化来确保后续操作的正确性。STM32F103支持低功耗等多种工作模式,不同模式下,时钟频率不一样,可通过PLL以及倍频器调节出需要的时钟频率。笔者通过PLL以及倍频器将时钟频率调节到STM32F103最高频率72MHz,且STM32设置为正常工作模式。STM32F103提供两种编程方式,第一种是直接通过调用库函数来设置寄存器,第二种是直接设置寄存器。因为调用库函数简单直观容易操作,所以笔者采用第一种编程方式,即通过设置STM32F103内部的寄存器进行I/O口初始化。
图9 程序设计
2.2.3 UART的初始化
UART的初始化,是为了和上位机进行通信。通过UART发送和接收数据,将STM32采集到的数据上发至上位机,然后通过接收上位机发送的数据,控制输出电压,上位机和STM32之间通信也需要一定的通信协议,笔者设计了一个简单的通信协议来做STM32和上位机之间的传输。该通信协议以“$1”为起始位,后面用“,”隔开,第一个数据是电压,第二个数据是电流,以“*”作为停止位,例如传送一帧数据位“$1,2.3,1.1,*”,表示电压是2.3V,电流为1.1A。因为传送数据较少,数据更新快,就没有设计校验位、请求帧、应答帧等[11]。
2.2.4 PID调节
因为外接的各种干扰,使输出产生误差。所以笔者采用PID控制算法减少输出误差,使输出稳定。比例控制器让信号几乎按指数的形式快速增长,减小达到给定值所用的时间,但是会有超调现象出现,只有比例控制器时会出现稳态误差。为了消除控制系统的稳态误差,引入积分控制器,积分的作用是减小稳态误差。微分控制器能预测信号变化趋势进而及时采取措施控制,能解决控制信号的超调问题。数字PID算法分为位置式PID和增量式PID两种,因为增量式PID算法是在位置式PID算法的基础得到的,其工作量相对较小[12]。所以笔者采用增量式PID控制算法,增量式PID控制算法表达式如公式2-3:
由上式可知,Kp:比例系数;K1:积分系数;KD:微分系数;ek:调节器偏差信号。增量式Kp是以两个时刻的偏差作为控制量的算法,控制量仅与最近三次的偏差有关,通过对Kp、K1和KD赋合适的值就能达到想要的控制效果。
2.2.5 主控程序的设计及实现
当完成一系列初始化之后,STM32根据接收到的控制信号和硬件电路采集到的数据,对DCDC电路进行控制、进而得到想要的输出结果。
主控程序主要接收来自按键和上位机的信号,根据接收到的信号进行程控电源的开启、关闭以及电源的输出。其控制方式为:STM32采用模拟输出对DC-DC电路进行输出控制。模拟输出采用STM32片上的DA来产生模拟信号。STM32片上模拟输出转换器为12位DA转换器,初始化后通过控制DA的输出来控制主电路的输出电压。然后将采集到的输出电压、通过位置式PID调节,形成闭环控制,使输出更加稳定。
3 程控电源的实现与结果
首先实现上位机和STM32之间的通信协议,通过STM32发送数据到上位机,上位机显示当前电压及电流,再通过上位机发送数据到STM32,调节电源的输出。通过Qt编写上位机软件,该上位机软件主要是对接收到的数据进行解析和构建发送的数据,通过协议实现当前电压、当前电流显示和控制输出电压的目的。上位机软件界面如图10所示。
图10 上位机软件界面
其次,按照原理图搭建好硬件电路,然后,通过软件编程实现程序控制输出电压的功能。最后配合上位机软件达到电压可控输出的目的。
完成硬件的连接及软件的搭建后,接着完成软硬件的联合调试:首先,调试STM32和上位机对协议的解析及构造是否成功,看上位机能否正确显示STM32传上来的值,能否过滤掉不正确的信息。然后通过上位机给STM32发送数据,看STM32是否能正确接收到信息,并且能正确执行相应的命令。调试好之后,通过上位机与STM32通信来控制电源的输出。上位机通过串口给STM32发送10.1信号,然后用万用表测量输出电压,其测试结果如图11所示。
图11 上位机控制输出
4 结论
笔者以STM32F103为主控芯片,设计了一种新型的程控电源,该程控电源主要包括EMI滤波电路、整流滤波电路、变换器、控制电路等。并借助QT编写上位机软件进行实时显示及调节输出电压。通过实验得出该程控电源输入电压范围支持8~36V,输出电压支持0~22V间的任意调节,且精度为0.0008,输出功率为50W,为数字电源的控制提供新的思路。
本设计是一款便携式、输出可调的程控电源,并且可通过上位机显示电压、电流及控制输出电压,主要应用于实验室以及航空航天等领域。同时该程控电源还具有低功耗模式,具有以下的特点:
(1)优点:该程控电源体积小,便于携带;有过压、过流保护,能自动切断输出;采用串口和上位机进行通信,能实时修改输出电压;采用PID调节,使输出更加准确、稳定;
(2)局限性:由于研究时间的局限性,仅检测了输出和通信;在功率以及输出的稳定性方面有待进一步提高;在不增加自身功率的情况下,最大输出功率有待进一步提高,自身的消耗有待进一步减少。