基于STM32G474RET6单片机的三相逆变器并联运行系统

本文已同步发表在微信公众号:https://mp.weixin.qq.com/s?__biz=MzkzMzQ0NzI2NA==&mid=2247484031&idx=1&sn=01279aaf5843ad618d70984379f86939&chksm=c24d1170f53a9866699d3614c98fdb5e5cd751623f9f3656ba43f46feed8a27ae57bc22cff4e#rd

成品和资料已经在咸鱼上发出:【闲鱼】https://m.tb.cn/h.g5o2ALw?tk=quwDWzEkgoq MF1643 「我在闲鱼发布了【基于STM32G474RET6单片机的三相逆变器并联i运行系】」
点击链接直接打开

微电网模拟系统设计与实现

一、摘 要

本作品是三相逆变器并联供电系统,2024年本人的毕设作品,拿到了校级的优秀毕设,本设计选择STM32G474RET6单片机芯片作为本系统的核心处理器,并采用了闭环PID控制策略,开发了一套高效率的微电网模拟系统。本系统的硬件组成包括STM32G474RET6单片机芯片控制电路模块、辅助电源电路模块、三相逆变电路模块、相电压电路采集模块和线电流采集电路模块。STM32G474RET6微控制器输出6路PWM信号,通过正弦表的控制,进而生成6路SPWM信号,以控制逆变器中MOS管的开关。系统通过电压和电流采样电路对输出进行反馈,经过A/D转换器采样后,将数据传输至微控制器控制电路,形成一个闭环控制系统,确保输出交流电压稳定在24V。

经过实验测试,效能达到96.48%,单个逆变器可以向负载提供输出交流电压24.15V,频率50.12Hz,负载电流增至2A时,总谐波失真小于3%,电流在0到2A范围内变化时,负载调整率低于0.3%。两个逆变器并联运行时,输出交流电流可达3A,频率50.17Hz,电流在1~3A范围内变动时,两个逆变器并联运行时,输出线电流可以按照自动均流分配,根据设定值分别输出线电流。

二、系统方案原理与分析

2.1三相逆变技术分析

逆变器属于一种电子电气装置,其主要功能是在特定的频率和电压下,把电能形态转变成不一样的电能形态,逆变电路就是把直流电转换为交流电。三相逆变电路模块作用是将直流电转换为三相交流电。三相逆变电路模块分为三相电压源逆变电路模块和三相电流源逆变电路模块。三相电压源逆变电路模块是采用低阻抗输入,其直流电压源供电。三相电流源逆变电路模块是采用高阻抗输入,其直流电流源供电。在比较这两种三相逆变电路模块后,三相电压源逆变电路模块因其快速的响应速度而受到青睐,综合考虑后,本设计选用了三相电压源逆变电路模块。三相逆变电路模块如下图 2.1 所示。

1ac4cbf53d044ab3a474e745ae9ccf20.png

图2.1 三相逆变电路模块电路图

图中 Vd为直流输入端电压,UV、VW、WU为三相逆变各线电压,UN、VN、WN为三相逆变各相电压,N为三相逆变的中性点, ia、ib、ic为三相逆变电流,其中UN、VN、WN为三相逆变各相电压。

2.2 PI 算法及参数调节方式

比例-积分-微分(PID)算法大多数用在工业控制,大概有95%的工业自动化闭环运行系统控制都用的PID算法。PID控制策略融合比例、积分和微分控制动作,形成闭环反馈控制。在MCU出现之前,PID是利用模拟电子的组件来组合而成。现在几乎所有的PID控制都利用MCU进行数据运算和控制。PID因其适应性和信赖度,在过程控制领域得到了传统的应用[16]。PID算法通过把电路产生的误差信号比例、积分和微分这三个部分利用线性组合结合成总控制,以这样的方式将电路出现的误差进行反馈控制。 PID闭环方式如下图 2.4 所示。

7bed324430e24be6828b56f784076e0e.png

图 2.2 PID 算法框图

PID控制器因其技术成熟、易于学习和操作、无需复杂的数学模型且控制效果优良而广受欢迎。PID算法分为P算法、PI算法、PD算法和PID算法。P算法环节中只要有误差,它会马上做出控制反应,将控制量调整至减少误差的方向。P算法的控制力度由比例系数KP决定,KP值越大,控制作用越强,但过高的KP值可能会导致系统不稳定。

积分控制把误差的叠加当作输出。电路有误差信号存在,它的输出不断变大。当误差e(t)为零,输出u(t)会固定某个值,这样可以保持系统在设定值r(t)不变也可以达到稳定的状态。积分环节虽然可以清除静态误差,但是它会把减少系统的运行速度和增加超调。TI值越高,TI值叠加的效果越小。提高积分时间常数TI会减缓静态误差的消除速度,可以增强系统的稳定性和减少超调。所以必须根据实际需求设定TI值。

微分环节可以抑制误差的改变,它根据电路中产生的误差的改变速度来调节。误差改变越大,它的输出越高,还可以在误差增高前进行控制调整。微分控制可以降低超调值和克制系统过激,这样系统变得更稳定[17]。但是微分控制环节对于输入信号噪声很灵敏,所以在噪音高的场景不独立用微分控制。合适设置微分常数(TD),可以提高微分控制调节,使电路达到最佳运行效果[18]。综合考虑,PI算法最适合本系统设计的反馈控制要求。

2.3 正弦波SPWM技术原理

PWM信号的基础是正弦波形,它被转换成一系列等幅值,宽度不同的脉冲波形,这些脉冲的宽度由正弦波与三角波的交点确定。正弦波的生成方法包括平均对称规则采样、对称规则采样和不对称规则采样。对称规则采样产生的脉冲宽度较窄,可能导致变频器的输出电压比直流侧电压低;不对称规则采样在一个载波周期内对正弦波采样两次,可以提高输出电压,但是会增加MCU的数据处理量,高载波频率下,对MCU的性能需求更高;平均对称规则采样结合前面两种方法的优点[19]。

SPWM的脉冲宽度遵循正弦波的波形变化,即 SPWM与正弦波具有相同的效果。调整三相逆变电路模块中MOS管的开关状态,使输出脉冲电压面积与期望的正弦波在相应区间内的面积相匹配。改变MCU输出的频率和脉冲宽度比,可以改变三相逆变电路模块输出线电压的频率和幅值[20]。

SPWM调制技术包括单极性和双极性调制。双极性调制方法简单;相比之下,单极性调制方法较复杂。单极性SPWM驱动波形如下图2.3所示。

bbcfc859e6c646fbaaceb942cbf4cce0.png

图2.3 单极性SPWM驱动波形

单极性调制有一对半桥电路当作低频桥控制,用50Hz的频率可以实现开关,另一对半桥电路当作快速变化的桥来进行控制,电感电压在VCC和0之内变化。双极性调制在单极性调制的本质上使两对半桥电路对角导通,电感电压在VCC和-VCC之内变化。产生的噪音比单极性调制大一些,但是控制方法容易。综合考虑,本系统设计用双极性调制。双极性SPWM驱动波形如下图2.4所示。

3571584baac54a4f9b6cc824e0654eee.png

图2.4 双极性SPWM驱动波形

 

三、系统方案设计

3.1 微电网模拟系统结构框图

本系统设计由辅助电源电路模块、两个三相逆变电路模块、相电压采集电路、线电流采集电路模块和STM32G474RET6单片机芯片控制电路模块和构成。本系统设计的框图如下图3.1所示。

9c66227ce83344e897a1861bdf0056ed.png

图3.1 系统结构框图

两个三相逆变电路模块共用一个直流电源,系统采用STM32生成SPWM信号,通过半桥驱动器EG2104控制实现三相逆变过程。MOSFET驱动电路采用具备内置死区时间的桥式驱动EG2104芯片,通过使用ACS712霍尔效应电流传感器来监测电流并进行电流环的反馈控制,同时采用ZMPT101电压传感器进行输出相电压的采集以实现电压环的反馈控制。单片机生成的SPWM信号通过驱动芯片控制三相逆变模块,实现直流到交流的转换,并通过对电压电流的采样以及PI算法来实现功率的分配。三相逆变电路模块1单独工作时,把采样到的电压信息传输给STM32G474RET6单片机芯片,利用 PID算法把STM32G474RET6单片机芯片输出的SPWM信号进行反馈控制,使输出线电压值保持24V不变化。三相逆变电路模块1和三相逆变电路模块并联工作时,把采样到的电压信号和电流信号传输给STM32G474RET6单片机芯片,通过双闭环PID算法对两个三相逆变电路模块的SPWM信号进行反馈调节,以保持输出线电压稳定在24V。

3.2 系统模块功能设计

3.2.1 逆变电路

三相逆变电路模块由LC滤波电路、驱动电路和三相逆变半桥电路组成,是本系统能否输出三相交流电的核心部分,三相逆变电路模块是由STM32G474RET6单片机芯片控制电路模块输出PWM控制的,LC滤波电路中的电感和电容参数值的设计是滤掉高频信号生成三相交流电的关键。 驱动电路输出SPWM控制MOS管的开关,也是MOS管的保护不被大电流冲击。本系统中三相逆变电路部分 输出线电压值为24V,单个三逆变电路模块输出的线电流最大为2A, 逆变电路框图如下图3.2所示。

cc25c5dfd6c74b4fb1fad56671945e13.png

图3.2 逆变电路框图

3.2.2 MCU控制电路模块

STM32G474RET6单片机控制电路是确保系统正常工作的核心,它由基本系统电路、STM32G474RET6芯片、OLED显示电路、按键输入电路、模数转换电路、LED指示电路、串行通信电路和脉宽调制电路组成。脉宽调制电路的输出直接用于控制三相逆变电路模块。AD转换器引脚采集到的电压反馈给相电压采集和线电流采集模块控制三相逆变电路部分的线电压输出和线电流,STM32G474RET6单片机芯片控制电路框图如下图3.3所示。

b592247a049d413eb156a727e9a8c52e.png

               图3.3 STM32G474RET6单片机芯片控制电路框图

 

3.2.3电压电流采样电路模块

相电压采集电路和线电流采集电路模块是本系统工作的主要电路模块。相电压采集电路和线电流采集电路模块采集三相逆变电路模块输出的相电压和线流数据传输给STM32G474RET6单片机芯片控制电路模块进行反馈控制。本系统用的ZMPT101电压互感器对相电压进行采集和ACS712霍尔传感器线电流进行采集。STM32G474RET6单片机芯片控制电路模通过AD转换器把电压采集后,进行反馈稳定微电网模拟系统的运行,电压电流采样电路框图如下图3.4所示。

0292c5892fe84aeb95a2065b27822c0d.png

图3.4 电压电流采样电路框图

3.2.4 辅助电源电路模块

辅助电源电路模块是微电网模拟系统中各个电路模块芯片的供电模块,把45V的直流电压通过SCT2A10降压到12V和5V电压给各个电路模块芯片供电。是微电网模拟系统运行的重要电路模块。

4.微电网模拟系统的实现

4.1 硬件电路设计

4.1.1 STM32

### STM32G474RET6 STM32CubeMX配置教程 #### 三相逆变器并联系统中的串行通信配置 对于基于STM32G474RET6单片机三相逆变器并联运行系统而言,为了确保数据准确性,在AIR700E的4G模块与STM32G474RET6之间的数据交换过程中,需特别注意串行端口3的相关参数设定。具体来说,这涉及到奇偶校验位以及端口名称等重要属性的调整[^1]。 ```c // 假设已经完成了基本初始化工作 UART_HandleTypeDef huart3; void MX_USART3_UART_Init(void){ huart3.Instance = USART3; huart3.Init.BaudRate = 115200; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; // 设置无奇偶校验 huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart3) != HAL_OK){ Error_Handler(); } } ``` #### PWM信号生成配置 当利用STM32CUBE进行定时器TIM来产生PWM波形时,可以参照特定指南完成相应设置。此过程不仅涉及基础启动命令`HAL_TIM_Base_Start()`及其带中断版本的操作,还包括针对不同通道的具体开启指令如`HAL_TIM_PWM_Start()`, `HAL_TIMEx_PWMN_Start()`用于正负半周控制,并可通过宏定义方式动态改变比较寄存器值以调节占空比[^2]。 ```c // 定义PWM输出实例 TIM_HandleTypeDef htim8; void MX_TIM8_PWM_Init(void){ TIM_OC_InitTypeDef sConfigOC = {0}; htim8.Instance = TIM8; htim8.Init.Prescaler = 0; htim8.Init.CounterMode = TIM_COUNTERMODE_UP; htim8.Init.Period = 999; htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim8.Init.RepetitionCounter = 0; htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_PWM_Init(&htim8) != HAL_OK){ Error_Handler(); } sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 500; // 初始脉冲宽度 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, TIM_CHANNEL_1) != HAL_OK){ Error_Handler(); } } // 启动PWM输出 HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim8, TIM_CHANNEL_1, 850); // 修改占空比 ``` #### 中断驱动下的UART收发功能实现 在构建具有高效能特性的嵌入式应用时,采用中断机制处理异步事件是非常常见的做法之一。下面展示了如何借助于STM32CubeMX工具快速搭建起支持中断触发模式下接收及发送操作的基础框架[^3]。 ```c UART_HandleTypeDef huart1; uint8_t recv_buff[20]; char str[100]; void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(huart->Instance==USART1){ HAL_UART_Transmit(&huart1, recv_buff, sizeof(recv_buff), HAL_MAX_DELAY); HAL_UART_Receive_IT(&huart1, (uint8_t *)recv_buff, sizeof(recv_buff)); } } int main(){ /* 初始化所有外设 */ ... HAL_UART_Receive_IT(&huart1, (uint8_t *)recv_buff, sizeof(recv_buff)); while(1){ // 主循环体 } } ``` #### 辅助电源设计要点 考虑到实际应用场景中可能存在的电磁干扰等问题,在设计基于STM32G474RET6的微电网模拟系统的辅助电源部分时,建议采取有效的去耦措施。例如,应将本地旁路电容器直接连接至VIN引脚并与地线形成最短路径,以此减少噪声影响并提高供电稳定性[^4]。 ```plaintext +-------------------+ | | | VIN |----> [高频旁路电容] ---- GND | | +-------------------+ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值