💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文内容如下:🎁🎁🎁
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥第一部分——内容介绍
基于STM32F103VET6的三相逆变桥可调正弦波输出变频器逆变器方案研究
摘要:本文详细阐述了一种基于STM32F103VET6主芯片的可量产成熟三相逆变桥可调正弦波输出变频器逆变器方案。该方案采用UC2844作为辅助电源芯片,FS30R06W1E3构成三相逆变桥,A3120作为驱动芯片,实现了输入电压DC77—140V,输出电压AC190—240V可调三相、输出频率35—60Hz可调正弦波、最大输出功率2.2KW的功能。同时,具备输入防反接、输入高压保护、输出过流、输出缺相、输出短路、高温等保护功能,且满足EMC EN50131-3-2规范要求。本文从硬件设计、软件设计、技术参数和指标等方面进行了全面介绍。
关键词:STM32F103VET6;三相逆变桥;正弦波输出;变频器;逆变器
一、引言
随着电力电子技术的不断发展,变频器和逆变器在工业生产、交通运输、新能源等领域的应用越来越广泛。可调正弦波输出的三相变频器逆变器能够根据实际需求灵活调整输出电压和频率,为各种负载提供稳定可靠的交流电源。本文提出了一种基于STM32F103VET6的可量产成熟方案,旨在满足市场对高性能、高可靠性变频器逆变器的需求。
二、硬件设计
2.1 整体架构
本方案主要由变频控制板和逆变器控制板组成。变频控制板负责将输入的直流电压进行升压和变频控制,逆变器控制板则将升压后的直流电压转换为可调的正弦波交流电压输出。两板之间通过合理的电气连接和信号传输,实现整个系统的稳定运行。
2.2 变频控制板设计
2.2.1 原理图设计
- 主芯片电路:采用STM32F103VET6作为主控芯片,该芯片具有丰富的外设资源,如定时器、ADC、PWM输出等,能够满足变频控制的需求。通过配置其内部的定时器和PWM模块,生成所需的控制信号。
- 辅助电源电路:使用UC2844作为辅助电源芯片,设计反激式开关电源电路,为整个系统提供稳定的直流电源。UC2844具有电流模式控制功能,能够有效地稳定输出电压,并且具有过流保护等特性。其典型电路包括启动电阻、滤波电容、RT/CT网络、MOSFET、电流采样电阻、光耦、TL431基准等部分,通过合理设置参数,实现稳定的电源输出。
- 升压电路:采用两路并联BOOST拓扑结构,将输入的DC77—140V电压升压至适合逆变器工作的电压。通过STM32F103VET6控制BOOST电路中的开关管,实现电压的调节和稳定。
- 驱动电路:选用A3120作为驱动芯片,为BOOST电路中的开关管提供足够的驱动能力。A3120具有高电压、大电流驱动能力,能够确保开关管的可靠导通和关断。
2.2.2 PCB设计
使用Altium Designer软件进行PCB设计,采用4层板结构,分别为信号层、GND层、Power层和信号层。关键路径做包地处理,以减少电磁干扰。输入/输出电容靠近芯片引脚放置,提高电源完整性。高频开关节点进行铺铜处理,增强散热和抗干扰能力。
2.2.3 BOOM清单
BOOM清单详细列出了变频控制板所需的所有元器件,包括型号、规格、数量等信息,方便采购和组装。例如:
| 元器件名称 | 型号 | 规格 | 数量 |
|---|---|---|---|
| 主芯片 | STM32F103VET6 | 1 | |
| 辅助电源芯片 | UC2844 | 1 | |
| MOSFET | 根据升压电路需求选择 | 若干 | |
| 驱动芯片 | A3120 | 若干 | |
| 电感 | 根据BOOST电路需求选择 | 若干 | |
| 电容 | 根据电路需求选择 | 若干 | |
| 电阻 | 根据电路需求选择 | 若干 |
2.3 逆变器控制板设计
2.3.1 原理图设计
- 三相逆变桥电路:采用FS30R06W1E3构成三相逆变桥,该模块具有高集成度、低导通电阻等优点,能够提高系统的效率和可靠性。三相逆变桥由六个开关管组成,通过合理的控制策略,实现直流到交流的转换。
- 驱动电路:同样使用A3120作为驱动芯片,为三相逆变桥中的开关管提供驱动信号。由于三相逆变桥的开关管数量较多,需要合理设计驱动电路的布局和布线,确保每个开关管都能得到可靠的驱动。
- 保护电路:设计输入防反接、输入高压保护、输出过流、输出缺相、输出短路、高温等保护电路。输入防反接电路通过二极管实现,防止输入电源接反对系统造成损坏;输入高压保护电路通过电压检测电路和比较器实现,当输入电压超过设定值时,触发保护动作;输出过流保护电路通过电流采样电阻和比较器实现,实时监测输出电流,当电流超过额定值时,迅速切断输出;输出缺相保护电路通过检测三相输出电压的相位关系,判断是否出现缺相故障;输出短路保护电路通过快速响应的短路检测电路,在输出短路时立即保护;高温保护电路通过温度传感器实时监测系统温度,当温度超过安全范围时,启动散热措施或降低输出功率。
- 变压器图纸:根据系统的需求,设计合适的变压器,用于隔离和电压变换。变压器图纸详细标注了变压器的绕组结构、匝数比、铁芯规格等参数,确保变压器的性能满足系统要求。
2.3.2 PCB设计
逆变器控制板也采用4层板结构,布局时充分考虑信号的完整性和电磁兼容性。将三相逆变桥、驱动电路、保护电路等关键部分进行合理分区,减少相互之间的干扰。同时,注意散热设计,在功率器件下方放置散热焊盘,并预留散热通道。
2.3.3 BOOM清单
逆变器控制板的BOOM清单详细列出了所需元器件的型号、规格和数量,例如:
| 元器件名称 | 型号 | 规格 | 数量 |
|---|---|---|---|
| 三相逆变桥模块 | FS30R06W1E3 | 1 | |
| 驱动芯片 | A3120 | 6 | |
| 电流采样电阻 | 根据输出电流需求选择 | 若干 | |
| 温度传感器 | 1 | ||
| 变压器 | 根据设计参数定制 | 1 | |
| 其他电阻、电容等 | 根据电路需求选择 | 若干 |
三、软件设计
3.1 整体软件架构
软件采用模块化设计思想,主要分为初始化模块、PWM生成模块、保护控制模块、通信模块等。初始化模块负责完成STM32F103VET6芯片的时钟配置、外设初始化等工作;PWM生成模块根据设定的输出频率和电压,生成相应的PWM信号,控制三相逆变桥的开关管;保护控制模块实时监测系统的各项参数,当出现异常情况时,及时采取保护措施;通信模块实现与上位机的串口通信,方便用户对系统进行监控和参数设置。
3.2 关键模块代码实现
3.2.1 PWM生成模块
1// 配置定时器用于生成PWM信号
2void TIM_PWM_Init(void) {
3 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
4 TIM_OCInitTypeDef TIM_OCInitStructure;
5
6 // 使能定时器时钟
7 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
8
9 // 定时器基础配置
10 TIM_TimeBaseStructure.TIM_Period = 1000 - 1; // 自动重装载值,决定PWM频率
11 TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; // 预分频值,72MHz / 72 = 1MHz
12 TIM_TimeBaseStructure.TIM_ClockDivision = 0;
13 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
14 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
15
16 // 配置PWM通道1
17 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
18 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
19 TIM_OCInitStructure.TIM_Pulse = 500; // 初始占空比
20 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
21 TIM_OC1Init(TIM3, &TIM_OCInitStructure);
22
23 // 配置PWM通道2和通道3(类似通道1配置)
24 //...
25
26 // 使能定时器
27 TIM_Cmd(TIM3, ENABLE);
28}
29
30// 根据正弦波表更新PWM占空比
31void Update_PWM_Duty(uint16_t *sine_table, uint16_t index) {
32 uint16_t duty1, duty2, duty3;
33
34 // 根据正弦波表计算三相PWM占空比
35 duty1 = sine_table[index];
36 duty2 = sine_table[(index + 85) % 256]; // 相位差120度
37 duty3 = sine_table[(index + 170) % 256]; // 相位差240度
38
39 // 更新PWM占空比
40 TIM_SetCompare1(TIM3, duty1);
41 TIM_SetCompare2(TIM3, duty2);
42 TIM_SetCompare3(TIM3, duty3);
43}
3.2.2 保护控制模块
1// 输入电压检测和保护
2void Input_Voltage_Protection(void) {
3 float input_voltage = Read_Input_Voltage(); // 读取输入电压
4
5 if (input_voltage < 77) {
6 // 输入欠压保护
7 Disable_Output();
8 Set_Protection_Flag(UNDER_VOLTAGE_FLAG);
9 } else if (input_voltage > 140) {
10 // 输入过压保护
11 Disable_Output();
12 Set_Protection_Flag(OVER_VOLTAGE_FLAG);
13 } else {
14 Clear_Protection_Flag(UNDER_VOLTAGE_FLAG);
15 Clear_Protection_Flag(OVER_VOLTAGE_FLAG);
16 }
17}
18
19// 输出电流检测和保护
20void Output_Current_Protection(void) {
21 float output_current = Read_Output_Current(); // 读取输出电流
22
23 if (output_current > 10) { // 假设额定输出电流为10A
24 // 输出过流保护
25 Disable_Output();
26 Set_Protection_Flag(OVER_CURRENT_FLAG);
27 } else {
28 Clear_Protection_Flag(OVER_CURRENT_FLAG);
29 }
30}
31
32// 其他保护函数类似上述两个函数,分别实现输出缺相、输出短路、高温等保护功能
3.2.3 通信模块
1// 串口初始化
2void USART_Init(void) {
3 USART_InitTypeDef USART_InitStructure;
4 GPIO_InitTypeDef GPIO_InitStructure;
5
6 // 使能串口时钟和GPIO时钟
7 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
8
9 // 配置USART1 Tx (PA9) 为复用推挽输出
10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
11 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
12 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
13 GPIO_Init(GPIOA, &GPIO_InitStructure);
14
15 // 配置USART1 Rx (PA10) 为浮空输入
16 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
17 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
18 GPIO_Init(GPIOA, &GPIO_InitStructure);
19
20 // USART1 配置
21 USART_InitStructure.USART_BaudRate = 9600;
22 USART_InitStructure.USART_WordLength = USART_WordLength_8b;
23 USART_InitStructure.USART_StopBits = USART_StopBits_1;
24 USART_InitStructure.USART_Parity = USART_Parity_No;
25 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
26 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
27 USART_Init(USART1, &USART_InitStructure);
28
29 // 使能USART1
30 USART_Cmd(USART1, ENABLE);
31}
32
33// 发送数据到串口
34void USART_SendData(uint8_t *data, uint16_t length) {
35 uint16_t i;
36 for (i = 0; i < length; i++) {
37 USART_SendData(USART1, data[i]);
38 while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
39 }
40}
41
42// 接收串口数据
43uint8_t USART_ReceiveData(void) {
44 while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
45 return USART_ReceiveData(USART1);
46}
3.3 整套软件设计流程
软件启动后,首先进行初始化操作,包括系统时钟配置、外设初始化、变量初始化等。然后进入主循环,在主循环中不断检测输入电压、输出电流、温度等参数,根据检测结果进行相应的保护控制。同时,根据设定的输出频率和电压,更新PWM占空比,实现正弦波输出。通过串口通信模块,与上位机进行数据交互,接收上位机的控制指令,并向上位机发送系统的运行状态信息。
四、技术参数和指标
4.1 主芯片
采用STM32F103VET6作为主芯片,该芯片具有以下特点:
- 工作频率高达72MHz,能够快速处理各种控制算法。
- 拥有丰富的外设资源,如定时器、ADC、PWM输出、串口等,满足变频器逆变器的控制需求。
- 具备较高的性价比,适合大规模量产应用。
4.2 辅助电源芯片
选用UC2844作为辅助电源芯片,其性能参数如下:
- 工作电压范围宽,能够适应不同的输入电源条件。
- 具有电流模式控制功能,能够有效地稳定输出电压,并且具有过流保护等特性。
- 芯片集成度高,外围电路简单,降低了设计难度和成本。
📚第二部分——运行结果






🎉第三部分——参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈第四部分——(原理图+PCB( AD格式)+BOOM+源
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

3419

被折叠的 条评论
为什么被折叠?



