基于STM32的简易数控直流稳压电源系统的设计
Design of a Simple CNC DC Regulated Power Supply System Based on STM32
DOI: 10.12677/SEA.2021.103040, PDF, HTML, XML,  被引量 下载: 606  浏览: 3,187 
作者: 张西晨*, 徐颖捷, 包齐栋:浙江理工大学信息学院,浙江 杭州
关键词: STM32DAC运算放大器PID闭环达林顿管STM32 DAC Operational Amplifier PID Closed-Loop Darlington Tube
摘要: 本设计以STM32F103单片机为核心,利用单片机的数模转化模块DAC和OP07运算放大器模块将电压进行放大,并同时利用TIP122G达林顿管进行扩流、PID算法进行电压闭环控制,从而可以实现数控直流电压的步进输出,同时该系统也支持预设电压电流值和输出特定波形的需求。本系统主要包括变压器模块、辅助电源模块、运算放大器及扩流模块、偏置电压模块、电流采样模块。该系统可实现0~9.9 V电压步进输出、限流保护、输出特定波形的功能。
Abstract: This design takes STM32F103 MCU as the core, and uses DAC and OP07 operational amplifier modules of MCU to amplify the voltage. At the same time, TIP122G Darlington tube is used for cur-rent expansion and PID algorithm for voltage closed-loop control, so as to realize the step output of NC DC voltage. The system also supports preset voltage-current values and the need to output specific waveforms. The system mainly includes transformer module, auxiliary power module, operational amplifier and current expansion module, bias voltage module, current sampling mod-ule. The system can realize the functions of 0~9.9 V voltage stepping output, current limiting pro-tection and specific waveform output.
文章引用:张西晨, 徐颖捷, 包齐栋. 基于STM32的简易数控直流稳压电源系统的设计[J]. 软件工程与应用, 2021, 10(3): 354-364. https://doi.org/10.12677/SEA.2021.103040

1. 引言

直流稳压电源按照调整元件的工作状态不同,可以分线性稳压电源和开关稳压电源两种 [1] [2]。在传统直流稳压电源中,控制部分是按模拟信号来设计和工作的。在之前电力电子技术完全是建立在模拟电路基础上的。但是,现在数字式信号、数字电路显得越来越重要,数字信号处理技术日趋完善成熟,显示出越来越多的优点:便于计算机处理控制、避免模拟信号的畸变失真、减小杂散信号的干扰(提高抗干扰能力)、便于软件包调试和遥感遥测遥调,也便于自诊断、容错等技术的植入 [3]。对于智能化的直流稳压电源电源,需要用计算机控制时,数字化技术就离不开了 [4]。但总体说来,国内直流稳压电源技术在实现智能化等方面相对落后,面对激烈的国际竞争,是个严重的挑战。本设计研制的数控直流稳压电源就是在直流稳压电源智能化方面的尝试。

2. 数控直流电源总体设计

本设计在硬件结构上主要采用了线性放大电路将单片机输出的DAC输出电压值进行放大,并采用达林顿管、按键、OLED屏分别来进行扩流、控制和显示;在软件方面,采用STM32自带的12位的数模转化DAC输出0~3.3 V电压,同时对负载支路的电流和电压采样,从而进行限流和PID算法控制稳压。由此,软硬件的结合组成了数控直流稳压系统,本系统可实现0~9.9 V电压步进输出,限流保护,输出正弦波、三角波、阶梯波的功能。将220 V交流电经过变压器和整流电路成24 V直流电,辅助电源将电压转成3.3 V给单片机供电、正负13 V给运放进行双电源供电,单片机控制DAC输出0.3~2.8 V的直流电压,通过运放将输出的电压扩大5倍来获得裕量,同时将负载两端的电压和电流进行采样,将采集的电压与设定值比较进行PID调节,采集的电流来进行限流防止因过流问题而烧坏整个系统,同时本系统也可以输出特定的波形,如正弦波、三角波和阶梯波等等,并有一定的带载能力。

系统的总体框图如图1所示,整个系统电源只有220 V的市电提供,变压器部分分为耦合器和变压器;AC-DC整流电路即将变压后的24 V的交流电整流为直流电;辅助电源模块采用LM2596降压芯片和MC34063芯片制作;线性放大芯片采用精密运放OP07制作,扩流功能采用达林顿管制作。

Figure 1. Overall system framework

图1. 系统总体框架

3. 数控电源模块设计与选择

3.1. 主控单片机选择

此次电路设计采用STM32F103单片机实现控制功能,此芯片具有72 MHz的速度和高达1 MB的闪存。该处理器功耗低、性价比高、应用广泛。具有电源管理电路,处理器运行电压可从2 V到3.6 V,具有多种复位保护措施。从性能上考虑,STM32单片机处理速度快且自带功能多使用比较方便,整个系统对精度要求比较高,STM32的DAC是12位,位数足够并且其性价比比同等的处理芯片高。并且相对于其他单片机而言,低能耗、集成广、主频高、操作简单、适应强、调试方便、稳定性高 [5]。

3.2. AC-DC整流模块选择

对于AC-DC整流电路共有两个方案。

方案一:通过全桥二极管整流以及LC滤波实现电路的稳压输出,其由四个部分组成,电路图如图2所示:

Figure 2. AC-DC Rectifier circuit (Scheme 1)

图2. AC-DC整流电路(方案1)

方案二:通过全桥二极管整流后直接通过电容滤波以及LM2596芯片实现线性稳压并对后级供电,整流电路图如图3所示:

Figure 3. AC-DC Rectifier Circuit (Scheme 2)

图3. AC-DC整流电路(方案2)

经过分析,方案一电路简单,但是会导致后续数字电路和模拟电路共用一个输出口,对数字电路产生很大的噪声干扰,且LC滤波出来的直流电压波动大,对后续电路的要求很高。方案二电路复杂且效率较低,但是输出纹波很低,且可以独立输出数字电路和模拟电路的电压口,降低了后续电路的设计要求,因此整流电路选择方案二。

3.3. 运算放大及扩流电路选择

硬件电路中核心部分为运算放大及扩流电路,共有三种方案,都可实现步进电压可调。

方案一:双向DC-DC来控制步进的稳压值 [6]。利用如图4所示的拓扑结构,通过高频率的PWM波实现电路中电容和电感的不断充放电实现电路的降压。通过改变PWM的占空比实现电路降压的比例实现0~9.9V电压的步进可调。

Figure 4. Bidirectional DC-DC topology

图4. 双向DC-DC拓扑结构

方案二:单片机DAC和运算放大电路结合。通过OP07硬件放大电路使达林顿管处于线性工作区,再通过单片机的12位DAC输出实现电路的步进稳压,为获得DAC输出电压的线性区域,通过偏置0.3 V的电压,并让DAC输出0.3 V~2.8 V电压,将DAC输出的电压扩大5倍来获得余量,可以实现0~9.9 V的电压变化。

方案三:双向DC-DC与DAC、运放结合调节。为避免达林顿附加电压过大导致功率过高导致管子发热损坏,通过两级电压调节,保证达林顿管两端压降始终处于3 V左右,保证管子的最大工作损耗。并通过单片机12位DAC输出对线性电压进行0~9.9 V稳压及步进可调。

对于方案一而言,每次功率MOS管的开关及二极管的续流都不可避免的导致LC振荡,致使纹波无法达到10 mV的要求。对于方案二而言,通过线性电路稳压可以实现基本无纹波,但是功率较低,在低压输出情况下管子易损坏。对于方案三而言,虽然保护了线性稳压的达林顿管,但是前一级的DC-DC电路的存在导致第二级供电电压不稳,纹波无法达到要求,鉴于高指标的要求,本次设计选择方案二,下面重点分析此方案。

方案二的电路图如图5所示。对于运算放大电路,选择的是用OP07进行放大,该器件是一种低噪声,非斩波稳零的双极性(双电源供电)运算放大器集成电路,OP07具有非常低的输入失调电压,且不需要额外的调零措施。因要输出尽可能较大的电流,而运放的带载能力不够,所能提供的电流较小,因此后级采用达林顿管结构来实现扩流。

单片机DAC输出电压 V D A C 作为输入端 V I N ,运放输出电压为 V O U T ,因上电之后, V O U T 输出电压为0 V,在运放的作用下6号脚输出一个高电平,达林顿管导通。电压在达林顿管有一定的压降,VCC的电压由负载和达林顿管共同承担。

假设根据运算放大器虚短原理:

V D A C = V I N = V O U T (1)

根据运算放大器虚断原理:

V O U T = V I N ( R 2 + R 3 ) R 2 (2)

因此运放放大倍数:

A u = V O U T V I N = R 2 + R 3 R 2 (3)

Figure 5. Op-amp and current expansion circuit

图5. 运放及扩流电路

3.4. 偏置电压模块

因单片机的DAC只能说出0.2 V及以上的电压并不能输出0 V,因此必须给运放一个基准电压来消除0.2 V,TL431是一个三端精密稳压源,内部有温度补偿的高精度并联放大器,基准电压精度非常高,输出电压用两个电阻就可以任意地设置到从 V r e f (2.5 V)到36 V范围内的任何值,采用的电路图如图6所示, V r e f o u t p u t 为基准电压的输出端。

V r e f o u t p u t = 2.5 { 1 + R 1 R 2 } (4)

Figure 6. Bias voltage circuit

图6. 偏置电压电路

将上述的偏置电压电路接入主电路中,如图7中所示Voffset_in位置,通过分析发现,VOUT会降低

V O U T = V I N V r e f o u t p u t R 2 R 3 + V I N (5)

通过公式5,我们可以发现输出的电压比未加偏置的输出电压减小,假设单片机DAC最低输出电压为0.2 V,OP07的放大倍数不变,即放大倍数Au = 1 + R3/R2,因此要想VOUT为0 V,我们可以推导出

R 3 R 2 V r e f o u t p u t = 0.2 (6)

可以计算出相应的Vrefoutput,可以通过偏置电路的滑阻使输出电压达到相应的幅值即可。

Figure 7. Biased op-amp and current expansion circuit

图7. 偏置运放及扩流电路

3.5. 电流采样模块

电流采样模块采用的是INA282,电路原理图如图8所示。INA282是TI公司生产的一款高精度宽共模输入范围的双向电流检测器。这款芯片的优点主要体现在:1) 宽共模电压输入范围,能承受−14 V至80 V的共模电压干扰;2) 共模抑制比高达140 dB,差分输入电压范围从−5 V至+5 V,差模有用信号能得到充分获取;3) +2.7 V至18 V单电源供电,功耗低。同时INA282具有微弱电流检测能力,芯片内有6 kQ的差分输入电阻,芯片正常工作时,会把这个电阻上的电压放大50倍然后输出 [7]。因此采用INA282芯片进行电流采样设计,另外对于按键、屏幕显示我们分别采用TM1638键盘和OLED屏显示。

Figure 8. INA282 current sampling circuit

图8. INA282电流采样电路

4. 数控直流电源软件设计

4.1. 软件整体设计

软件编程选择用Keil和STM32CubeMx联合开发并使用HAL库函数。该系统用到的单片机资源为1个串行通信口、4路定时器、一些GPIO资源口,定时器优先级由高到低为TIM8、TIM2、TIM4、TIM3,每个定时器的功能如表1所示。软件设计分为5个模式,初始化model = 0,此时系统处于休眠状态即只有TIM4打开用于显示和按键,可以根据OLED上的提示信息可进入调试状态;按下按键1之后,model = 1,系统进入步进调节模式,同时在步进模式条件下也可进行过流保护;按下按键2之后,model = 2,进入预设值模式可以预设置电压值和限流值,并按确定键之后开始工作,当电流超过限流值之后,电压无法上升。按下按键3,model = 3,系统进入自动扫描模式,每0.5 s步进0.1 V电压增加;按下按键4,model = 4,系统进入波形输出模式,可以通过其他按键进入不同波形的输出模式,整个系统的闭环调节采用的是PID调节,软件流程图如图9所示。

Table 1. Microcontroller timers and their functions

表1. 单片机各路定时器及其功能

4.2. 按键功能设计

我们采用的TM1628做成的4*4键盘,大部分的按键都有特定的功能,按键功能如表2所示。因为

Figure 9. Overall framework of software design

图9. 软件设计整体框架

按键个数为16个,第一行4个按键为模式设置;第二行4个按键用于步进电压设置和电流预置;第3行的按键中第一个是在model4模式下的正弦波、第二个和第三个按键在model1和model4具有不同的功能,有预设值的目的是为了在工频电压不稳定时进行手动调节操作。第4行中的第1个按键为返回功能,即按下此按键之后,model = 0,除TIM4外其他定时器停止工作;最后一个按键为model = 2时,当预设值输出好之后按下按键16即开始正常输出,如果检测到过流状态则电压会被拉下来。

Table 2. 4*4 key function table

表2. 4*4按键功能表

对于单片机GPIO引脚的使用,PA1、PA3分别用来进行电流和电压采样,PA4用来输出DAC电压、键盘和OLED显示屏接在其他的引脚上。

4.3. DAC设计

STM32的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC 工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器 [8] [9]。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。我们利用的是DAC的通道1,因为我们输出的是直流信号,所以直接调用以下语句来实现输出直流信号的功能。

MX_DAC_Init();

HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,(u32)count);

4.4. 稳压控制算法实现

稳压控制的重点在于PID算法调节,即通过比例算法P、积分算法I和微分算法D来控制,因为本系统利用PI调节就相对来说较为稳定,所以本设计只采用PI调节的方法。通过PA1和PA3两路采样口将采集的电压值和设定的基准值进行比较,利用PID算法进行调节,从而实现稳压。调节结果的稳定性很大程度上取决于PID的参数设置。经典的PID算法控制规律为

u ( t ) = K p ( e ( t ) + 1 T t 0 t e ( t ) d t + T D d e ( t ) d t ) (5)

Kp表示比例增益,Tt表示积分时间常数,TD表示微分时间常数,u(t)表示输出的信号,e(t)表示采样值和基准值的偏差 [10] [11]。本设计采用的PID调节方式为增量式,核心控制部分的程序如下所示,此函数的目的是返回相应的误差值。

float PID_Contrl (PID* sptr, float setpiont, float NextPoint){

float iIncPid;

sptr->Error = sptr->SetPoint-NextPoint;//当前误差设定的目标值和实际值的偏差

float Ep=sptr->Error - sptr->LastError;

float Ei=sptr->Error;

float Ed=sptr->Error - 2*sptr->LastError + sptr->PrevError;

iIncPid = sptr->P *Ep + sptr-> I * Ei + sptr->D * Ed;

/*存储误差用于下次计算*/

sptr->PrevError = sptr->LastError;

sptr->LastError = sptr->Error;

return iIncPid; //返回增量值

}

4.5. ADC采样模块

本设计共采用了两路采样,采用了ADC1采集两路数据,需要注意的问题是利用一个通过需要进行多路采样,所以在STM32CubeMX的配置中必须使能“Scan conversion Mode”和“Discontinuous Conversion Mode”,采样时间不可以太短,此处设置为71.5Cycles.对采集的电压和电流进行滑动滤波处理 [12],采样的程序如下所示。

ADC_Iin_switch_aver [ADC_Iin_switch_flag] = ADC_Iin;

ADC_Iin_switch_flag = (ADC_Iin_switch_flag + 1) % 10; //当变量超过10时返回0

ADC_Iin_switch_sum = 0;

For (I = 0; I < 9; i++)

{

ADC_Iin_switch_sum+= ADC_Iin_switch_aver[i];//累积10个数组数据

}

5. 测试方案与结果

5.1. 测试方案

1. 测试仪器:交流电隔离器、变压器、两台SDM3055X-E万用表、1台SDS1204X-E示波器

2. 测试方法:

1) 将一个万用表串进接负载的电路测量电流,一个万用表接在电阻两端测量电压,示波器接入负载两端测量纹波,按下按键1进入普通步进模式,再通过按键5、6,实现设定电压的加减实现0~9.9 V的电压输出,记录数据即可。

2) 按下按键2,设置电压和电流值按下确定按键即可实现过流保护;按下按键3进入自动扫描步进模式,从0~9.9 V;按下按键4进入多种波形输出模式,可以选择输出波形的种类。

5.2. 测试结果

对于步进稳压的测试结构如表3所示。

Table 3. Stepped voltage stabilization test table

表3. 步进稳压测试表

5.3. 结果分析

通过测试我们可以发现,数控电源的纹波达到了40 mV,分析可能是下面的原因:

1) 整流后通过的LM2596开关电源芯片纹波消除不够,导致单片机的输入基准电压有纹波;

Figure 10. Hardware physical diagram

图10. 硬件实物图

2) TL431偏置电压电路存在一定的误差;

3) 在利用PID算法动态稳压的,产生的电压波动。

5.4. 硬件实物图

本系统的硬件实物图如图10所示。

6. 结论

本文设计的基于STM32的数控直流稳压电源系统,详细介绍了硬件电路模块的设计和软件处理思路。通过实验验证,该系统可以步进输出0~9.9 V的小电压并且还具有限流的功能,并且该系统也具有良好的扩展性和可升级性。

参考文献

参考文献

[1] 徐海峰. 高精度数控稳压电源的设计[D]: [硕士学位论文]. 济南: 山东大学, 2012.
[2] 孙小非. 一款高负载电流的低压差线性稳压器的设计与研究[D]: [硕士学位论文]. 西安: 西安电子科技大学, 2012.
[3] 周凯. 反激DC-DC变换电路研究[D]: [硕士学位论文]. 武汉: 华中科技大学, 2008.
[4] 张祯. 新型OADM的电压智能控制模块研究[D]: [硕士学位论文]. 天津: 天津大学, 2008.
[5] 卢贶. 基于STM32F103RBT6的智能小车设计[J]. 湖南工业职业技术学院学报, 2018, 18(5): 12-14+24.
[6] 李祖喜. 基于超级电容储能的ICPT系统功率提升策略研究[D]: [硕士学位论文]. 重庆: 重庆大学, 2014.
[7] 邓己媛, 陈松, 范仰栋, 吴远泸, 朱熙宇. 基于INA282的集成电压电流检测电路设计与优化[J]. 电子器件, 2019, 42(4): 953-957.
[8] 高克芳. 一种基于FPGA技术的虚拟数字扫频仪的设计[J]. 现代电子技术, 2005(17): 38-39.
[9] 许广宇. 压电微定位系统的设计研究[D]: [硕士学位论文]. 武汉: 湖北工业大学, 2014.
[10] 马骁. 声速剖面仪计量校准装置控制器研究[D]: [硕士学位论文]. 天津: 天津理工大学, 2014.
[11] 田渠, 罗淦, 尹海涛. 基于OpenMV的智能跟踪小车设计[J]. 计算机测量与控制, 2019, 27(8): 167-170+176.
[12] 朱祥泽. 基于直线电机的自动平移门系统设计[D]: [硕士学位论文]. 镇江: 江苏大学, 2019.