【电子设计大赛】2017电子设计大赛A题通关指南

目录

1. 电子设计大赛 A 题背景介绍

2. A 题题目解析

3. 方案论证

3.1 三相逆变模块

3.2 交流电压电流有效值测量方案

3.3 逆变控制方案

4. 系统整体框架

5. 理论分析与计算

5.1 逆变器提高效率的方法及关键器件的选择

5.2 三相交流电相关计算

5.3 谐波失真 THD 的计算与测量

6. 软件代码实现

6.1 开发环境搭建

6.2 主程序流程

6.3 关键代码片段解析

7. 调试与优化

7.1 常见问题及解决方法

7.2 性能优化策略

8. 总结与展望

参考文献


1. 电子设计大赛 A 题背景介绍

全国大学生电子设计竞赛是教育部和工业和信息化部共同发起的大学生学科竞赛之一,是面向大学生的群众性科技活动 ,也是全国历史最悠久的四大学科竞赛之一,属于A类赛事,在电子信息领域的高校学生中具有极高的知名度和影响力。其目的在于推动高等学校促进信息与电子类学科课程体系和课程内容的改革,培养大学生的实践创新意识与基本能力、团队协作的人文精神和理论联系实际的学风 ,提高学生针对实际问题进行电子设计制作的能力。

2017 年的电子设计大赛吸引了来自全国千余所院校、共 4 万余名学生报名参加,命题涵盖了从基础到综合应用等多个领域。在众多赛题中,A 题 “微电网模拟系统” 脱颖而出,成为了众多参赛队伍挑战的目标。微电网作为分布式电源接入电网的一种有效手段,在能源领域的重要性日益凸显。随着全球对清洁能源的需求不断增加,分布式电源如太阳能、风能等的应用越来越广泛,而微电网能够将这些分布式电源、负荷、储能装置、变流器以及监控保护装置有机整合在一起,形成一个小型发配电系统,实现能源的高效利用和稳定供应 。因此,A 题的设置紧密贴合了时代发展的需求和行业趋势,对于培养学生在新能源电力系统领域的知识和技能具有重要意义。

2. A 题题目解析

2017 年电子设计大赛 A 题的核心任务是设计并制作一个微电网模拟系统,该系统主要由两个三相逆变器构成,负载采用三相对称 Y 连接电阻负载 。从系统组成来看,这一设计旨在模拟真实微电网中分布式电源通过逆变器接入电网,并向负载供电的基本架构,通过对两个三相逆变器的控制和协同工作,考察参赛者对微电网运行原理和控制策略的理解与应用能力。

在具体要求方面,基本要求涵盖了多个关键指标。首先是输出电压的稳定性,当仅有逆变器 1 工作时,需保证输出线电压稳定在 24V,这对逆变器的电压控制能力提出了较高要求,参赛者需要设计有效的闭环控制策略,实时监测输出电压并进行反馈调节,以应对负载变化等因素对电压稳定性的影响 。当逆变器 1 和逆变器 2 并联工作时,不仅要保证输出线电压依然稳定在 24V,还要实现两台逆变器之间的功率分配控制。这涉及到对两台逆变器输出电流的精确测量和控制,通过合理的算法和控制逻辑,根据负载需求动态调整两台逆变器的输出功率,确保系统高效稳定运行 。

除了电压和功率相关要求,对输出电压的总谐波失真(THD)也有严格限制。THD 是衡量电能质量的重要指标,较低的 THD 意味着输出电压更接近理想正弦波,对用电设备的正常运行至关重要。在实际设计中,需要考虑逆变器的调制方式、滤波器的设计等因素来降低 THD。例如,采用合适的脉宽调制(PWM)技术,如正弦脉宽调制(SPWM)或空间矢量脉宽调制(SVPWM),可以有效减少谐波含量;同时,精心设计滤波器参数,使其能够有效滤除高次谐波,从而满足题目对 THD 的要求。

发挥部分则进一步提升了难度和创新性要求。例如,可能要求提高系统的效率,这需要从多个方面入手,包括优化逆变器的拓扑结构、选择低导通电阻和低开关损耗的功率器件、合理设计散热系统等,以减少能量在转换和传输过程中的损耗 。还可能涉及对系统动态响应性能的提升,如在负载突变时,能够快速调整逆变器的输出,保持电压和功率的稳定,这就需要设计高性能的控制器和快速响应的采样电路,以实现对系统状态的实时监测和快速控制。

3. 方案论证

3.1 三相逆变模块

在设计三相逆变器时,我们考虑了基于全桥结构和半桥结构的两种三相逆变器拓扑结构。

三相全桥逆变器由六个功率开关器件组成,其优点是输出功率大,能够满足较高功率需求的负载,并且输出电压的谐波含量相对较低 。由于其能够输出稳定的三相交流电压,适用于对输出功率平稳性要求高的应用场景,例如工业电机驱动等。它的控制灵活性也较高,可以通过对功率开关器件的精确控制,实现对输出电压波形的有效调节和控制 。它也存在一些缺点,电路结构较为复杂,需要较多的功率开关器件以及相应的驱动电路,这不仅增加了硬件成本,还使系统的故障诊断和维护变得相对复杂,需要专业人员进行处理 。在运行过程中,逆变电路可能会产生电磁干扰,需要采取相应的措施进行抑制,以确保系统的稳定性和可靠性。

三相半桥逆变器则相对简单,每个桥臂由一个功率开关器件组成,直流侧接有两个相互串联的足够大的电容,两个电容的联结点是直流电源的中点,负载联结在直流电源中点和两个桥臂联结点之间 。它的突出优点是电路结构简单,使用的开关器件数量少,成本较低,易于实现 。它的缺点是输出交流电压幅值相对较低,只有直流电压的一半,对于需要较高输出电压的应用场景不太适用 。直流侧需两电容器串联,工作时要特别注意两侧直流电压的均衡,否则容易引起器件发生故障 。三相半桥逆变电路常用于几 kW~十几 kW 以下的小功率 UPS 逆变电源 。

综合考虑,我们选择了半桥结构方案。在本赛题中,负载为三相对称 Y 连接电阻负载,对功率要求并非特别高,而半桥结构简单、成本低的优势更为突出,能够满足题目要求的同时,降低系统复杂度和成本,提高系统的可靠性和稳定性。

3.2 交流电压电流有效值测量方案

对于交流电压电流有效值的测量,我们探讨了两种方案,采用真有效值转换芯片 AD637 直接测量和通过 AD 采样计算。

AD637 是一款高性能、低失真率的真有效值转换器集成电路,它能够直接将交流电压或电流信号转换为与其均方根值成比例的直流输出电平,精度较高,典型值可达 ±2%,可以处理频率高达 100kHz 的信号 ,并且具有优良的线性度 。在一些对精度要求极高且信号频率较为稳定的场合,如精密仪器的校准等,AD637 能够发挥其优势,准确地测量出有效值 。在本赛题中,由于实时性要求较高,AD637 在信号转换过程中需要一定的时间进行积分、平方根运算等操作,可能无法满足快速实时测量的需求。此外,它的成本相对较高,使用该芯片会增加系统的硬件成本。

AD 采样计算方案则是将交流信号通过模数转换器(ADC)数字化,之后利用微处理器或单片机进行数学运算来计算有效值 。在实际应用中,通过对采集到的电压和电流信号进行数学处理(通常是平方、平均、开方)来计算其有效值。这种方案的优势在于可以利用单片机强大的计算能力和快速的响应速度,实现对电压电流有效值的实时计算 。通过合理优化算法和程序,可以在短时间内完成大量数据的采集和处理,满足赛题对实时性的要求 。它的成本相对较低,只需要增加 ADC 模块和相应的软件算法,无需额外的高精度转换芯片,降低了系统成本。

综上所述,基于赛题对实时性要求高的特点,我们选择了 AD 采样计算方案来测量交流电压电流有效值,以确保系统能够快速准确地获取电压电流信息,为后续的控制和调节提供可靠的数据支持。

3.3 逆变控制方案

在逆变控制方案的选择上,我们研究了三种方案。

第一种方案是利用硬件电路产生正弦波和三角波,然后通过比较器进行比较来产生 SPWM 波 。这种方案的优点是硬件实现相对简单,对于一些对成本和复杂度要求较低的简单应用场景有一定的适用性。其灵活性较差,一旦硬件电路设计完成,修改和调整控制策略将会非常困难,难以满足不同工况下的复杂控制需求 。而且硬件电路的参数调整不便,对于不同频率和幅值的正弦波输出,需要重新设计和调整硬件电路,这在实际应用中会带来很大的局限性 。

第二种方案是采用专用的 SPWM 集成模块,如 HEF4752 等 。这些模块具有集成度高、性能稳定的特点,能够快速准确地产生 SPWM 波 。它们的价格通常较高,增加了系统的硬件成本 。模块的功能相对固定,可定制性较差,难以根据具体需求进行个性化的功能扩展和优化 。在一些对成本敏感且需要灵活定制控制策略的应用中,专用 SPWM 集成模块的适用性就会受到限制。

第三种方案是由带有 PWM 产生功能的单片机利用正弦表扫描法产生 SPWM 。单片机可以根据预先存储在内存中的正弦表,通过定时器中断控制,按照一定的频率和相位要求,依次输出不同占空比的 PWM 信号,从而合成 SPWM 波 。这种方案的优势明显,单片机具有强大的编程能力和丰富的外设资源,可以通过软件编程方便地实现各种复杂的控制算法和功能 。通过修改软件程序,能够轻松地调整 SPWM 波的频率、幅值、相位等参数,以适应不同的负载需求和工作条件 。软件算法的灵活性使得系统可以方便地进行功能扩展和升级,例如添加最大功率点跟踪(MPPT)功能、功率因数校正(PFC)功能等,提高系统的性能和适用性 。而且,单片机的成本相对较低,在满足系统功能要求的同时,能够有效控制成本 。

综合对比三种方案,我们选择了由单片机利用正弦表扫描法产生 SPWM 的方案。这种方案在满足系统对控制灵活性和实时性要求的,还能有效降低成本,便于系统的开发、调试和维护,为实现高性能的微电网模拟系统提供了有力保障。

4. 系统整体框架

基于前面的方案论证,我们最终确定的微电网模拟系统整体框架如图 1 所示:

微电网模拟系统整体框架

图 1:微电网模拟系统整体框架

系统主要包含以下几个核心模块:

  1. 三相逆变模块:由两个三相逆变电路组成,采用半桥结构。每个逆变模块由直流电源供电,通过半桥驱动器 IR2104 接收 STM32 产生的 SPWM 波来控制 MOSFET 的导通与关断,实现直流到三相交流的转换。在这个过程中,MOSFET 作为关键的功率开关器件,其快速的开关动作将直流电源的电能转换为高频的脉冲信号,再经过后续的滤波处理,得到所需的三相交流电压输出 。这种结构的优势在于其相对简单的电路设计,减少了开关器件的数量,降低了成本和系统复杂度 。同时,通过合理选择 MOSFET 的参数和优化驱动电路,可以提高逆变效率和系统的可靠性 。
  1. 电压电流采样模块:使用专用高精度电流采样芯片 INA282 对电流进行采样,同时对电压信号进行相应的调理和采样 。采样模块实时获取系统输出的电压和电流信号,将其转换为适合单片机处理的数字信号。这些采样数据对于系统的控制至关重要,它们为后续的 PI 算法和 PID 算法提供了精确的反馈信息,使得系统能够根据实际的电压电流情况,动态调整控制策略,确保系统的稳定运行 。例如,当检测到电压波动或电流异常时,控制系统可以及时调整 SPWM 波的占空比,以维持输出电压的稳定和功率的合理分配 。
  1. 主控模块:以 STM32 单片机为核心,利用其强大的计算能力和丰富的外设资源 。STM32 通过正弦表扫描法产生 SPWM 波,驱动三相逆变电路工作 。在系统运行过程中,STM32 不断采集电压电流采样模块传来的数据,根据预设的控制算法(如 PI 算法、PID 算法)对 SPWM 波进行实时调整 。当检测到负载变化或电源波动时,STM32 能够快速响应,通过调整 SPWM 波的频率、幅值和相位,使系统适应新的工作条件,保证输出线电压稳定在 24V,并实现两台逆变器之间的功率分配 。它还可以实现系统的初始化、故障检测与保护等功能,确保系统的安全可靠运行 。
  1. 辅助电源:为整个系统提供稳定的电源,确保各个模块能够正常工作 。辅助电源将外部输入的电源进行转换和稳压处理,为三相逆变模块、电压电流采样模块、主控模块等提供合适的直流电压 。在选择辅助电源时,需要考虑其输出功率、稳定性、效率等因素,以满足系统各模块的功耗需求,并保证电源的稳定输出,减少电源波动对系统性能的影响 。例如,采用线性稳压电源或开关电源技术,根据系统的具体要求选择合适的电源芯片和电路拓扑,确保为系统提供干净、稳定的电源供应 。

各模块之间协同工作,实现微电网模拟系统的功能:

  1. 系统启动时,辅助电源首先为各个模块供电,使系统进入初始状态 。主控模块 STM32 完成初始化后,开始按照预设的正弦表扫描法生成 SPWM 波,并将其发送给半桥驱动器 IR2104 。
  1. IR2104 根据接收到的 SPWM 波信号,控制三相逆变模块中的 MOSFET 的导通和关断,将直流电源转换为三相交流输出 。在这个过程中,三相逆变模块中的半桥结构通过 MOSFET 的交替导通,将直流电压斩波成一系列的脉冲信号,这些脉冲信号经过滤波后,形成近似正弦波的三相交流电压 。
  1. 电压电流采样模块实时监测三相逆变模块的输出电压和电流,并将采样数据传输给主控模块 STM32 。采样芯片 INA282 精确测量电流信号,通过内部的调理电路将其转换为适合单片机处理的电压信号 。同时,电压采样电路对输出电压进行分压、滤波等处理,也将其转换为数字信号传输给 STM32 。
  1. STM32 根据接收到的电压电流采样数据,运用 PI 算法或 PID 算法对 SPWM 波进行调整 。当仅有逆变器 1 工作时,STM32 根据采样电压信息,通过 PID 算法调整 SPWM 波的占空比,以保证输出线电压稳定在 24V 。当逆变器 1 和逆变器 2 并联工作时,STM32 根据采样的电压电流信息,利用双 PID 算法分别对两路逆变器的 SPWM 波进行调整,不仅要保证输出线电压稳定在 24V,还要实现两台逆变器之间的功率分配 。例如,当负载增加时,STM32 会增加 SPWM 波的占空比,提高逆变器的输出功率,以满足负载需求;同时,通过对两台逆变器输出电流的监测和比较,调整它们的 SPWM 波,实现功率的合理分配,确保两台逆变器都能高效稳定地工作 。

5. 理论分析与计算

5.1 逆变器提高效率的方法及关键器件的选择

在微电网模拟系统中,逆变器的效率直接影响到整个系统的性能和能源利用率。为了提高逆变器的效率,我们从多个方面进行了考虑和优化。

首先,选择适当的开关频率至关重要。开关频率与逆变器的效率密切相关 。较高的开关频率可以减小滤波器的尺寸和重量,提高系统的动态响应速度,但同时也会增加开关损耗。因为在开关过程中,功率器件需要在导通和关断状态之间快速切换,这个过程会产生能量损耗,开关频率越高,单位时间内的开关次数越多,开关损耗也就越大 。较低的开关频率虽然可以降低开关损耗,但会使输出电压的谐波含量增加,导致滤波器的设计变得更加复杂,并且可能影响系统的稳定性 。因此,需要在开关损耗和滤波器成本之间找到一个平衡点。根据相关理论和实际经验,结合本系统的具体需求,我们通过计算和仿真,确定了一个合适的开关频率,使得在满足系统性能要求的同时,尽可能降低开关损耗 。

其次,选择合适的开关管对于提高逆变器效率也起着关键作用。开关管的导通电阻和开关速度是影响逆变器效率的重要参数 。导通电阻越低,在导通状态下的功率损耗就越小,能够减少能量在开关管上的无谓消耗 。开关速度越快,开关过程中的能量损耗就越低,可以提高逆变器的工作效率 。目前市场上有多种类型的开关管可供选择,如 MOSFET(金属 - 氧化物 - 半导体场效应晶体管)和 IGBT(绝缘栅双极型晶体管)等 。MOSFET 具有较低的导通电阻和较高的开关速度,适用于低压、高频的应用场景;IGBT 则在高压、大电流的情况下表现出色 。在本系统中,根据直流母线电压和负载电流的大小,我们选用了导通电阻低、开关速度快的 MOSFET 作为开关管,以降低导通损耗和开关损耗,提高逆变器的效率 。同时,在选择 MOSFET 时,还需要考虑其耐压值、电流容量等参数,确保其能够在系统的工作条件下安全可靠地运行 。例如,我们根据系统的直流母线电压和可能出现的过电压情况,选择了耐压值高于直流母线电压一定倍数的 MOSFET,以保证其在各种工况下都不会被击穿;根据负载电流的最大值和可能的过载情况,选择了电流容量足够大的 MOSFET,以确保其能够承受负载电流,避免因电流过大而损坏 。

再者,合理设计滤波电感也是提高逆变器效率的重要环节。滤波电感的作用是滤除逆变器输出电压中的高频谐波,使输出电压更加接近理想的正弦波 。电感值的大小会影响滤波器的性能和逆变器的效率 。电感值过小,无法有效地滤除谐波,会导致输出电压的谐波含量增加,影响电能质量,同时也会增加负载的额外损耗;电感值过大,虽然可以更好地滤除谐波,但会增加电感的体积、重量和成本,并且会产生较大的磁滞损耗和铜损,降低逆变器的效率 。因此,需要根据逆变器的开关频率、输出电流和允许的谐波失真等参数,合理设计滤波电感的电感值 。我们通过理论计算和仿真分析,确定了合适的电感值,使得滤波电感既能有效地滤除谐波,又能将自身的损耗控制在较低水平,从而提高逆变器的效率 。在设计滤波电感时,还需要考虑其磁芯材料的选择。不同的磁芯材料具有不同的磁性能,如磁导率、饱和磁感应强度、磁滞损耗等 。选择磁导率高、饱和磁感应强度大、磁滞损耗低的磁芯材料,可以减小电感的体积和损耗,提高逆变器的效率 。例如,我们选用了铁硅铝磁芯,它具有较高的饱和磁密和较低的磁滞损耗,能够满足本系统对滤波电感的要求 。

5.2 三相交流电相关计算

在三相交流电系统中,电压、电流有效值和功率的计算是非常重要的基础知识,它们对于理解微电网模拟系统的运行和性能评估具有关键作用。

三相交流电的线电压与相电压之间存在特定的关系。在星形连接中,线电压 \( U_{L} \) 是相电压 \( U_{p} \) 的 \( \sqrt{3} \) 倍,即 \( U_{L} = \sqrt{3}U_{p} \) 。这一关系可以通过三相交流电路的相量分析得出。在本赛题中,要求输出线电压稳定在 24V,根据上述公式,我们可以计算出相电压 \( U_{p} = \frac{U_{L}}{\sqrt{3}} = \frac{24}{\sqrt{3}} \approx 13.86V \) 。

电流有效值的计算对于评估系统的负载能力和功率传输具有重要意义。对于三相对称负载,相电流 \( I_{p} \) 等于线电流 \( I_{L} \) 。在实际计算中,如果已知负载的功率和电压,可以通过公式 \( I = \frac{P}{U\cos\varphi} \) 来计算电流,其中 \( P \) 是负载功率, \( U \) 是电压, \( \cos\varphi \) 是功率因数 。在本系统中,假设负载为纯阻性,功率因数 \( \cos\varphi = 1 \) ,如果已知负载功率为 \( P = 100W \) ,线电压 \( U_{L} = 24V \) ,则线电流 \( I_{L} = \frac{P}{\sqrt{3}U_{L}\cos\varphi} = \frac{100}{\sqrt{3} \times 24 \times 1} \approx 2.4A \) ,相电流 \( I_{p} = I_{L} \approx 2.4A \) 。

三相交流电的功率分为有功功率 \( P \) 、无功功率 \( Q \) 和视在功率 \( S \) 。有功功率是指电路中实际消耗的功率,其计算公式为 \( P = \sqrt{3}U_{L}I_{L}\cos\varphi \) ;无功功率是指用于建立磁场等不对外做功的功率,计算公式为 \( Q = \sqrt{3}U_{L}I_{L}\sin\varphi \) ;视在功率是指电压和电流有效值的乘积,计算公式为 \( S = \sqrt{3}U_{L}I_{L} \) ,它们之间满足关系 \( S = \sqrt{P^{2} + Q^{2}} \) 。在本系统中,当负载为纯阻性时, \( \sin\varphi = 0 \) ,无功功率 \( Q = 0 \) ,有功功率等于视在功率,即 \( P = S = \sqrt{3}U_{L}I_{L} \) 。例如,已知线电压 \( U_{L} = 24V \) ,线电流 \( I_{L} = 2.4A \) ,则有功功率 \( P = \sqrt{3} \times 24 \times 2.4 \approx 99.8W \) ,视在功率 \( S = P \approx 99.8VA \) ,无功功率 \( Q = 0var \) 。

5.3 谐波失真 THD 的计算与测量

谐波失真 THD(Total Harmonic Distortion)是衡量电能质量的重要指标,它反映了信号中谐波含量的多少。在微电网模拟系统中,控制 THD 对于保证输出电能的质量和设备的正常运行至关重要。

THD 的定义是信号中所有谐波分量的均方根值与基波分量的均方根值之比,通常用百分比表示 。其计算公式为 \( THD = \frac{\sqrt{\sum_{n = 2}^{\infty}V_{n}^{2}}}{V_{1}} \times 100\% \) ,其中 \( V_{n} \) 是第 \( n \) 次谐波的有效值, \( V_{1} \) 是基波的有效值 。从物理意义上讲,THD 越小,说明信号越接近理想的正弦波,电能质量越高;反之,THD 越大,信号的畸变越严重,可能会对用电设备产生不良影响,如增加设备的损耗、降低设备的寿命、干扰其他电子设备的正常工作等 。

在本系统中,测量 THD 的方法主要是通过快速傅里叶变换(FFT)技术 。首先,利用电压电流采样模块采集逆变器输出的电压信号,将其转换为数字信号后送入单片机 。单片机对采集到的数字信号进行 FFT 分析,将时域信号转换为频域信号,从而得到信号中各个频率成分的幅值和相位 。根据 FFT 分析的结果,提取出基波和各次谐波的幅值,然后代入 THD 的计算公式,即可计算出 THD 的值 。在实际测量过程中,为了提高测量的准确性,需要注意采样频率的选择。采样频率应满足奈奎斯特采样定理,即采样频率至少应为信号最高频率的两倍 。在本系统中,逆变器输出的交流电频率为 50Hz,考虑到可能存在的高次谐波,我们选择了较高的采样频率,如 10kHz,以确保能够准确地采集到信号中的所有频率成分 。还需要对采集到的数据进行适当的预处理,如滤波、去噪等,以减少干扰信号对测量结果的影响 。

控制 THD 在微电网模拟系统中具有重要意义。低 THD 的输出电压可以减少对负载设备的损害,提高设备的运行效率和可靠性 。对于电机等感性负载,高 THD 的电压会导致电机产生额外的铁损和铜损,使电机发热加剧,效率降低,甚至可能影响电机的正常启动和运行 。高 THD 的电压还可能对电网产生污染,影响其他设备的正常工作 。因此,在设计和实现微电网模拟系统时,我们采取了多种措施来降低 THD,如优化逆变器的控制策略,采用合适的 PWM 调制方式,精心设计滤波器等 。通过这些措施的综合应用,有效地降低了系统输出电压的 THD,满足了赛题对电能质量的要求 。

6. 软件代码实现

6.1 开发环境搭建

进行软件代码编写需要搭建合适的开发环境,主要涉及编程软件和硬件设备两方面。

编程软件我们选用 Keil MDK(Microcontroller Development Kit),它是一款专为微控制器开发设计的集成开发环境(IDE),在嵌入式系统开发领域应用广泛,尤其是针对 ARM 架构的微控制器,如我们系统中使用的 STM32 单片机 。其搭建步骤如下:

  1. 首先从 Keil 官方网站下载适合你操作系统的 MDK 安装包,下载完成后运行安装程序。在安装过程中,按照提示逐步进行操作,选择安装路径和相关组件。注意,安装路径尽量选择磁盘空间充足且便于访问的位置,避免后续开发过程中出现因磁盘空间不足导致的问题 。
  1. 安装完成后,打开 Keil MDK。首次启动时,可能需要进行一些基本设置,如字体、颜色等显示设置,以满足个人的编程习惯 。
  1. 由于我们使用的是 STM32 单片机,还需要安装对应型号的 STM32 芯片支持包。在 Keil MDK 中,通过 “Pack Installer” 选项卡进入安装界面,搜索并安装与我们所用 STM32 型号匹配的支持包,确保软件能够识别和支持目标单片机的各项功能 。

硬件设备方面,除了电脑外,还需要以下设备:

  1. STM32 开发板:它是整个系统的核心控制单元,用于运行我们编写的程序代码。在使用前,确保开发板的硬件连接正确,如电源连接稳定、通信接口正常等 。
  1. J-Link 仿真器:用于将编写好的程序下载到 STM32 开发板中,并进行在线调试。将 J-Link 仿真器通过 USB 接口连接到电脑,再使用杜邦线将 J-Link 与 STM32 开发板上对应的调试接口连接起来 。连接时,要注意引脚的对应关系,避免因连接错误导致下载或调试失败 。

在搭建开发环境过程中,有一些注意事项:

  1. 确保电脑的操作系统和相关软件是正版且更新到最新版本,以避免因软件兼容性问题或漏洞导致开发过程中出现异常 。
  1. 在安装 Keil MDK 和相关支持包时,要仔细阅读安装提示和说明,避免因误操作导致安装不完全或出现错误 。
  1. 对于硬件设备的连接,要在断电的情况下进行,防止因带电插拔导致设备损坏 。连接完成后,再次检查连接是否牢固,确保硬件设备正常工作 。

6.2 主程序流程

主程序的主要流程对于整个微电网模拟系统的稳定运行至关重要,它涵盖了初始化、数据采集、控制算法执行、输出控制等关键环节。以下用伪代码展示主程序的主要流程:

// 定义全局变量

初始化变量;

// 初始化系统

初始化GPIO口;

初始化定时器;

初始化ADC;

初始化PWM;

初始化串口(用于调试信息输出);

while(1)

{

// 数据采集

采集电压值 = 读取ADC通道对应电压引脚数据;

采集电流值 = 读取ADC通道对应电流引脚数据;

// 计算电压电流有效值

电压有效值 = 根据采集的电压数据计算有效值;

电流有效值 = 根据采集的电流数据计算有效值;

// 执行控制算法

if(仅有逆变器1工作)

{

计算输出电压与目标24V的误差;

根据PID算法计算调整量;

根据调整量调整PWM波占空比;

}

else if(逆变器1和逆变器2并联工作)

{

分别计算两个逆变器的输出功率;

计算功率分配误差;

根据双PID算法分别计算两个逆变器PWM波的调整量;

根据调整量分别调整两个逆变器的PWM波占空比;

}

// 输出控制

将调整后的PWM波输出到相应引脚,驱动逆变器工作;

// 调试信息输出(可选)

通过串口发送电压有效值、电流有效值、PWM占空比等信息到上位机显示;

// 适当延时,避免程序运行过快

延时一段时间;

}

从流程上看,系统启动后首先进行各项初始化工作,确保硬件设备处于正常工作状态 。进入主循环后,不断采集电压电流数据,并计算其有效值,为后续的控制算法提供准确的数据支持 。根据逆变器的工作状态,执行相应的控制算法,调整 PWM 波的占空比,以实现输出电压的稳定和功率的合理分配 。将调整后的 PWM 波输出到逆变器,驱动其工作,同时可以通过串口将一些关键数据发送到上位机进行显示和分析,以便于调试和监测系统运行状态 。通过适当的延时,控制程序的运行节奏,避免因程序运行过快导致资源占用过高或系统不稳定 。

6.3 关键代码片段解析

  1. SPWM 波生成代码
// 定义正弦表,假设正弦表有100个点

const float sine_table[100] = {0.0, 0.0628, 0.1253, 0.1873, 0.2487, 0.3090, 0.3679, 0.4253, 0.4812, 0.5353,

0.5878, 0.6383, 0.6868, 0.7333, 0.7776, 0.8192, 0.8579, 0.8934, 0.9255, 0.9540,

// 此处省略部分数据

-0.9540, -0.9255, -0.8934, -0.8579, -0.8192, -0.7776, -0.7333, -0.6868, -0.6383, -0.5878,

-0.5353, -0.4812, -0.4253, -0.3679, -0.3090, -0.2487, -0.1873, -0.1253, -0.0628, 0.0};

// 生成SPWM波函数

void generate_spwm()

{

static int index = 0; // 正弦表索引,静态变量保证其值在函数调用间保持

float sine_value = sine_table[index]; // 获取当前正弦表中的值

float pwm_duty = 0.5 + 0.5 * sine_value; // 根据正弦值计算PWM占空比,范围0 - 1

// 设置PWM占空比,假设使用STM32的定时器PWM功能

TIM_SetCompare1(TIM3, (uint16_t)(pwm_duty * TIM3_ARR)); // TIM3_ARR是定时器3的自动重载值

index++; // 索引指向下一个点

if(index >= 100)

{

index = 0; // 循环回到正弦表起点

}

}

这段代码实现了利用正弦表扫描法生成 SPWM 波 。首先定义了一个包含 100 个点的正弦表,每个点对应正弦波一个周期内的不同相位 。generate_spwm函数通过静态变量index来依次访问正弦表中的值 。根据当前正弦值计算出 PWM 占空比,通过调整占空比来模拟正弦波的变化 。使用 STM32 的定时器 PWM 功能,将计算得到的 PWM 占空比设置到定时器的比较寄存器中,从而输出相应占空比的 PWM 波 。当索引超过正弦表的长度时,将其重置为 0,实现循环扫描正弦表,持续生成 SPWM 波 。

  1. PID 算法实现代码
// PID结构体定义

typedef struct

{

float Kp; // 比例系数

float Ki; // 积分系数

float Kd; // 微分系数

float setpoint; // 设定值

float error; // 当前误差

float last_error; // 上一次误差

float integral; // 积分项

} PID;

// PID初始化函数

void pid_init(PID *pid, float kp, float ki, float kd, float setpoint)

{

pid->Kp = kp;

pid->Ki = ki;

pid->Kd = kd;

pid->setpoint = setpoint;

pid->error = 0.0;

pid->last_error = 0.0;

pid->integral = 0.0;

}

// PID计算函数

float pid_calculate(PID *pid, float feedback)

{

pid->error = pid->setpoint - feedback; // 计算当前误差

pid->integral += pid->error; // 计算积分项

// 积分限幅,防止积分饱和

if(pid->integral > 100.0)

{

pid->integral = 100.0;

}

else if(pid->integral < -100.0)

{

pid->integral = -100.0;

}

float derivative = pid->error - pid->last_error; // 计算微分项

float output = pid->Kp * pid->error + pid->Ki * pid->integral + pid->Kd * derivative; // 计算PID输出

pid->last_error = pid->error; // 更新上一次误差

return output; // 返回PID输出

}

这段代码定义了 PID 控制算法相关的结构体和函数 。PID结构体包含了比例系数Kp、积分系数Ki、微分系数Kd、设定值setpoint、当前误差error、上一次误差last_error以及积分项integral等成员 。pid_init函数用于初始化 PID 结构体的各项参数,为 PID 算法的运行做好准备 。pid_calculate函数是 PID 算法的核心实现部分,它根据反馈值与设定值计算当前误差,累加误差得到积分项,并通过积分限幅防止积分饱和 。计算微分项,将比例、积分、微分项加权求和得到 PID 输出 。在每次计算后,更新上一次误差,以便下一次计算使用 。通过这些步骤,实现了 PID 算法对系统的精确控制,根据反馈信息动态调整输出,使系统能够稳定地运行在设定值附近 。

  1. 数据采样处理代码
// 定义ADC采样值变量

uint16_t adc_value[3]; // 假设采集三相电压或电流,3个通道

// 读取ADC值函数

void read_adc()

{

// 启动ADC转换,假设使用STM32的ADC1

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

// 等待转换完成

while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

// 读取3个通道的ADC值

adc_value[0] = ADC_GetConversionValue(ADC1);

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

adc_value[1] = ADC_GetConversionValue(ADC1);

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

adc_value[2] = ADC_GetConversionValue(ADC1);

}

// 计算有效值函数

float calculate_rms(uint16_t *data, int length)

{

float sum = 0.0;

for(int i = 0; i < length; i++)

{

float value = (float)data[i];

sum += value * value;

}

float mean_square = sum / length;

return sqrt(mean_square);

}

这段代码实现了数据采样和有效值计算的功能 。read_adc函数用于从 STM32 的 ADC 读取三相电压或电流数据 。通过启动 ADC 转换,等待转换完成标志位,依次读取 3 个通道的 ADC 值,并存储在adc_value数组中 。calculate_rms函数用于计算采集数据的有效值 。它遍历数据数组,将每个数据的平方累加起来,再除以数据长度得到均方值,对均方值开平方得到有效值 。这些数据采样和处理的代码为系统的控制算法提供了准确的实时数据,是实现微电网模拟系统稳定运行的重要基础 。

7. 调试与优化

7.1 常见问题及解决方法

在调试 2017 电子设计大赛 A 题 “微电网模拟系统” 时,我们遇到了诸多问题,每一个问题都像是前进道路上的绊脚石,阻碍着系统的顺利运行。但正是通过不断地分析和解决这些问题,我们才逐渐优化了系统性能,使其达到了预期目标。

电压不稳定是一个较为突出的问题,在仅有逆变器 1 工作时,输出线电压无法稳定在 24V 。我们首先怀疑是电源本身存在问题,对辅助电源的输出进行了仔细检查,确保其能够提供稳定的直流电压。在排除电源问题后,将目光聚焦到了控制算法上。通过示波器观察 STM32 输出的 SPWM 波,发现其占空比在某些情况下会出现波动 。经过深入分析,发现是 PID 算法中的参数设置不合理。PID 算法中的比例系数、积分系数和微分系数对系统的控制性能有着至关重要的影响 。如果比例系数过大,系统会对误差过于敏感,导致输出波动较大;积分系数过大,会使积分项累积过快,容易引起积分饱和;微分系数过大,则会放大噪声干扰 。我们通过多次试验和调整,逐步优化了 PID 参数,使系统能够更加准确地根据输出电压的误差调整 SPWM 波的占空比,最终实现了输出线电压稳定在 24V 。

电流异常也是一个需要解决的问题,在逆变器 1 和逆变器 2 并联工作时,两台逆变器的输出电流出现不均衡的情况 。这不仅影响了系统的功率分配,还可能导致部分器件过载。我们首先检查了电流采样电路,确保采样电阻的精度和稳定性,以及 INA282 芯片的工作正常 。发现采样电路没有问题后,开始分析控制算法。在并联工作时,需要根据两台逆变器的输出功率来动态调整它们的 SPWM 波占空比,以实现功率的合理分配 。我们发现双 PID 算法在计算功率分配误差时,存在一定的偏差。通过对功率计算公式的仔细推导和验证,修正了双 PID 算法中功率计算的错误,并优化了算法的执行逻辑,使得两台逆变器的输出电流能够均衡分配,保证了系统的稳定运行 。

通信故障也是调试过程中遇到的难题之一,在使用串口将调试信息发送到上位机时,出现了数据丢失或乱码的情况 。这给系统的调试和监测带来了很大的困难。我们首先检查了硬件连接,确保串口线的连接正确无误,并且没有松动或接触不良的情况 。在硬件连接正常的情况下,怀疑是软件设置问题。检查了串口通信的波特率、数据位、停止位和校验位等参数,发现与上位机的设置不一致 。通过将串口通信参数与上位机进行匹配,并增加了数据校验和重发机制,有效地解决了数据丢失和乱码的问题 。还优化了串口发送数据的缓冲区管理,避免了因缓冲区溢出导致的数据丢失,确保了调试信息能够准确、稳定地传输到上位机 。

7.2 性能优化策略

为了提升微电网模拟系统的性能,我们采取了一系列优化策略,从算法优化到硬件参数调整,每一个环节都经过了精心的设计和测试。

在算法优化方面,对 PID 算法进行了深入研究和改进。PID 算法虽然是一种经典的控制算法,但在实际应用中,其参数的选择往往需要根据具体系统的特性进行调整 。我们通过引入自适应 PID 算法,使系统能够根据运行状态实时调整 PID 参数 。在负载变化较大时,自动增大比例系数,以提高系统的响应速度;在系统接近稳定状态时,减小积分系数,防止积分饱和 。还采用了模糊 PID 算法,将模糊控制理论与 PID 算法相结合,通过模糊规则对 PID 参数进行动态调整 。这样可以充分利用模糊控制对不确定性和非线性系统的适应性,以及 PID 控制的精确性,提高系统的控制性能 。经过优化后,系统在负载突变时,输出电压的波动明显减小,恢复稳定的时间也大大缩短 。在实际测试中,当负载突然增加 50% 时,优化前输出电压的波动范围达到 ±3V,恢复稳定需要约 500ms;而优化后,输出电压的波动范围控制在 ±1V 以内,恢复稳定的时间缩短到了 100ms 以内 。

硬件参数调整也是性能优化的重要方面,对滤波电感和电容的参数进行了优化 。滤波电感和电容的作用是滤除逆变器输出电压中的高频谐波,使输出电压更加接近理想的正弦波 。在最初的设计中,滤波电感和电容的参数是根据理论计算确定的,但在实际测试中发现,输出电压的 THD 仍然较高 。通过对不同电感值和电容值的组合进行测试和分析,发现适当增加电感值和电容值可以有效降低 THD 。电感值从原来的 1.5mH 增加到 2mH,电容值从 30μF 增加到 40μF 后,输出电压的 THD 从原来的 5% 降低到了 3% 以内 。在调整硬件参数时,需要考虑到系统的其他性能指标,如电感值过大可能会增加电感的体积和重量,同时也会增加电感的磁滞损耗和铜损;电容值过大则可能会影响系统的动态响应速度 。因此,需要在多个性能指标之间进行权衡和优化,以达到最佳的性能表现 。

8. 总结与展望

回顾 2017 电子设计大赛 A 题 “微电网模拟系统” 的解析和软件代码实现过程,我们深入探讨了微电网系统的设计原理、关键技术以及实际应用中的挑战与解决方案 。从最初的题目分析,明确系统需由两个三相逆变器构成,负载采用三相对称 Y 连接电阻负载,到各个模块的方案论证与选择,如三相逆变模块、交流电压电流有效值测量模块和逆变控制模块等,每一步都经过了严谨的思考和分析 。通过理论分析与计算,掌握了逆变器提高效率的方法、三相交流电相关参数的计算以及谐波失真 THD 的计算与测量,为系统的设计和优化提供了坚实的理论基础 。

在软件代码实现方面,我们成功搭建了开发环境,编写了主程序流程,并对关键代码片段进行了解析,实现了 SPWM 波的生成、PID 算法的应用以及数据采样处理等功能 。通过不断地调试与优化,解决了诸如电压不稳定、电流异常、通信故障等常见问题,提升了系统的性能 。在未来,电子设计大赛相关题目将紧密围绕新能源、智能化、高性能等方向发展 。随着新能源技术的不断进步,分布式电源在微电网中的应用将更加广泛和深入,对微电网的控制和管理也将提出更高的要求 。未来的题目可能会涉及更多先进的控制算法,如模型预测控制、自适应控制等,以实现微电网的高效、稳定运行 。智能化也是未来的重要发展方向,微电网将与物联网、大数据、人工智能等技术深度融合,实现智能化的监测、诊断和优化 。利用物联网技术实现微电网设备的互联互通,通过大数据分析挖掘潜在的运行规律和优化策略,借助人工智能算法实现智能决策和控制 。

对于微电网模拟系统本身,未来的发展方向将聚焦于提高能源利用率、增强系统稳定性和可靠性以及降低成本 。在能源利用率方面,将进一步研究和优化逆变器的效率,探索新的拓扑结构和控制策略,减少能量在转换和传输过程中的损耗 。同时,加强对分布式电源的管理和协调,实现能源的合理分配和利用 。在系统稳定性和可靠性方面,将采用更加先进的保护技术和容错控制策略,提高系统对故障的抵御能力 。通过冗余设计、故障诊断和自愈控制等手段,确保微电网在各种工况下都能稳定运行 。降低成本也是微电网发展的关键,将通过技术创新和规模化生产,降低设备成本和运维成本,提高微电网的经济效益和市场竞争力 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雨淅淅编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值