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

目录

一、2024 电子设计大赛 A 题简介

二、题目深度剖析

2.1 任务与要求解读

2.2 关键技术点分析

2.3 难点与挑战洞察

三、软件代码实现思路

3.1 整体架构规划

3.2 核心算法设计

3.3 代码模块详解

四、代码示例展示

4.1 关键函数代码展示

4.2 代码运行逻辑解释

五、常见问题与解决方法

5.1 代码调试问题

5.2 硬件与软件协同问题

六、总结与展望


一、2024 电子设计大赛 A 题简介

2024 年全国大学生电子设计竞赛为广大电子设计爱好者提供了展示才华与创新能力的舞台。其中 A 题聚焦于 “智能环境监测与控制系统”,在电子设计领域掀起了创新的热潮。

这道赛题要求参赛选手设计并制作一套能实时监测环境参数(如温度、湿度、气压、有害气体浓度等),并根据预设条件自动控制相关设备(如通风系统、空调、空气净化器等)的系统。背景基于当前社会对环境质量关注度的不断提升,无论是室内办公、居住环境,还是工业生产、农业种植等领域,精准的环境监测与智能控制都显得尤为重要。

在电子设计领域,这道赛题意义非凡。它促使参赛者深入理解传感器技术、信号处理、通信原理以及自动控制等多方面知识,并将其融会贯通。通过解决 A 题,参赛选手不仅能锻炼自己的实践动手能力,还能紧跟电子技术发展趋势,将所学知识应用到实际项目中,为未来投身相关领域积累宝贵经验。而且,众多优秀的参赛作品也为电子设计行业提供了新的思路和解决方案,推动着行业不断向前发展,对培养创新人才和提升电子设计水平有着深远的影响力 。

二、题目深度剖析

2.1 任务与要求解读

深入剖析 A 题,其具体任务涵盖多个关键方面。在电路设计上,要求构建稳定且高效的 DC/DC 变换电路,实现特定电压的转换,如将输入的 24V 直流电压稳定转换为 12V 输出,以满足后续电路模块的供电需求,并且对转换效率有着严格要求,需达到 90% 以上 ,这就要求在电路元件的选择和参数设计上做到精准无误。同时,针对多路输出的情况,必须实现精确的电流均流控制,以确保各支路输出电流的一致性,例如在一个两路输出的系统中,要求两路输出电流的差值控制在 0.1A 以内。

功能实现目标同样丰富,需要设计一套完善的监测与控制系统。利用高精度传感器实时采集环境参数,如采用 DHT11 温湿度传感器精确测量环境温度和湿度,测量精度需达到温度 ±0.5℃,湿度 ±2% RH。然后通过信号调理电路对传感器输出的信号进行放大、滤波等处理,将处理后的信号传输给微控制器。微控制器根据预设的阈值和算法,对采集到的数据进行分析和判断,进而实现对相关设备的智能控制。比如当监测到室内温度超过 26℃时,自动启动空调进行降温;当检测到有害气体浓度超标时,立即开启通风系统,以保障环境的安全和舒适 。

2.2 关键技术点分析

完成 A 题离不开一系列关键电子技术的支持。DC/DC 变换技术是其中的核心,其原理是基于电感和电容的储能特性,通过控制开关管的导通和截止,将输入电源以脉冲的形式加到电感上,再通过电容滤波获得稳定的输出电压。以 Buck 型 DC-DC 变换器为例,在开关管导通时,电感储存能量,电流通过电感和负载;开关管截止时,电感释放能量为负载供电,通过调整开关管的占空比,就可以实现降压的目的 。在实际应用中,要注意选择合适的开关管和电感、电容参数,以提高变换效率和稳定性,减少电路中的纹波和噪声。

电流均流控制技术也至关重要,其目的是使并联运行的多个电源模块各自承担与其额定功率成比例的负载电流。常见的均流方法有外部特性下垂法、主从电源法、按平均电流自动均流法等 。外部特性下垂法通过人为增加电源模块输出端的有效电阻,使输出电流大的模块端电压自动稍微下降,电流小的模块端电压稍高,从而实现电流的自动分配,但这种方法输出电压精度较低,动态响应差 。主从电源法指定一个模块作为主模块,工作在恒压模式,其他模块作为从模块,工作在恒流模式,从模块的目标电流值由主模块确定,这种方法均流精度较高,但主模块存在单点故障问题 。按平均电流自动均流法应用较为广泛,所有并联模块连接到公共均流母线,母线上的电压代表所有模块输出电流的平均值,每个模块将自身输出电流与均流母线上的代表值进行比较,并根据误差信号微调自身电压基准,使自身电流向平均值靠拢 。在实际应用中,需要根据具体需求和系统特点选择合适的均流方法,并对均流控制电路进行精心设计和调试,以确保均流效果的良好。

2.3 难点与挑战洞察

在完成 A 题的过程中,会面临诸多难点与挑战。电路调试的复杂性首当其冲,DC/DC 变换电路和均流控制电路中包含众多电子元件,如电阻、电容、电感、开关管、运算放大器等,各元件的参数相互影响,一个参数的变化可能会导致整个电路性能的改变 。在调试过程中,可能会出现输出电压不稳定、纹波过大、均流效果不佳等问题,需要花费大量时间和精力去排查和解决。例如,在调试 DC/DC 变换电路时,发现输出电压存在较大的纹波,经过仔细检查,可能是电容的选型不当或者滤波电路的参数不合理,需要重新选择合适的电容和调整滤波电路参数。

软件算法的优化也是一大挑战。微控制器需要运行复杂的算法来实现数据采集、处理、分析和设备控制等功能。在数据采集方面,要保证采集的准确性和实时性,需要合理设置采样频率和采样精度;在数据处理过程中,要对采集到的数据进行滤波、校准、融合等操作,以提高数据的可靠性 。在设备控制算法上,要实现精准的控制,需要根据不同的环境参数和预设条件,设计合理的控制策略。例如,在控制空调的运行时,不仅要根据温度来调节制冷量,还要考虑室内湿度、人员活动等因素,以实现最佳的舒适度和节能效果。同时,随着系统功能的增加和复杂度的提高,软件算法的优化变得尤为重要,需要不断改进算法,提高算法的效率和响应速度,以满足系统的实时性要求。

三、软件代码实现思路

3.1 整体架构规划

实现 A 题功能的软件采用模块化的设计理念,其整体架构清晰且层次分明,以确保系统的高效运行和易于维护。主程序流程犹如整个软件系统的 “指挥中枢”,它负责统筹协调各个功能模块的有序工作。在系统启动后,主程序首先执行初始化操作,对微控制器的各个硬件资源,如定时器、串口通信、ADC(模拟数字转换器)等进行配置,使其处于可正常工作的状态。接着,进入一个无限循环中,在这个循环里,主程序不断调用数据采集模块,获取来自各类传感器的实时数据 。然后,将采集到的数据传递给数据处理模块进行分析和处理,根据预设的算法和阈值判断是否需要对相关设备进行控制。如果需要,主程序就会调用控制输出模块,向执行机构发送控制指令,实现对设备的精准控制 。同时,主程序还会与通信模块进行交互,将处理后的数据通过有线或无线通信方式传输给上位机或其他外部设备,以实现远程监控和数据共享的功能。

各个功能模块之间的调用关系紧密而有序。数据采集模块就像是系统的 “触角”,它直接与各类传感器相连,负责将传感器输出的模拟信号转换为数字信号,并读取这些数据 。例如,对于温度传感器 DHT11,数据采集模块通过特定的通信协议(如单总线协议)与它进行通信,定时读取其输出的温度和湿度数据 。数据处理模块则是系统的 “大脑”,它接收来自数据采集模块的数据,对其进行滤波、校准、分析等一系列处理操作,以提高数据的准确性和可靠性 。比如,采用中值滤波算法对温度数据进行处理,去除可能存在的噪声干扰;根据传感器的校准参数对数据进行校准,确保测量的精度 。控制输出模块则是系统的 “执行器”,它根据数据处理模块的分析结果,向执行机构发送相应的控制信号 。例如,当数据处理模块判断室内温度过高时,控制输出模块会向空调发送启动制冷的指令,通过 PWM(脉冲宽度调制)信号调节空调的制冷功率 。通信模块则负责实现系统与外部设备的信息交互,它可以将系统的实时数据发送给上位机进行显示和存储,也可以接收上位机发送的控制指令,实现远程控制的功能 。比如,通过 Wi-Fi 模块将数据发送到手机 APP 上,用户可以通过手机随时随地查看环境参数并进行控制 。

3.2 核心算法设计

在实现 A 题关键功能的过程中,PID 控制算法发挥着举足轻重的作用。以稳压控制为例,其原理基于反馈控制理论,通过不断调整控制量,使输出电压尽可能接近设定的目标电压值 。假设设定的输出电压为 Vref,实际输出电压为 Vout,PID 控制器根据这两者之间的误差 e = Vref - Vout,按照 PID 算法的公式计算出控制量 u,进而调整 DC/DC 变换电路中开关管的占空比,改变输出电压,使误差 e 逐渐减小,最终实现稳压的目的 。PID 算法公式为 u = Kp * e + Ki * ∫e dt + Kd * de/dt,其中 Kp 为比例系数,它能快速响应误差的变化,使输出量朝着减小误差的方向变化,但仅靠比例控制可能会存在稳态误差 ;Ki 为积分系数,其作用是对误差进行积分,累积过去的误差信息,以消除稳态误差,但积分项过大可能会导致系统超调 ;Kd 为微分系数,它根据误差的变化率来调整控制量,能够预测误差的变化趋势,提前对系统进行调整,抑制系统的振荡,提高系统的稳定性 。在实际应用中,需要根据具体的电路参数和系统要求,通过实验调试等方法来确定合适的 Kp、Ki、Kd 值,以达到最佳的稳压效果 。

稳流控制同样基于 PID 算法原理。在电流均流控制中,将各路输出电流的平均值作为参考电流 Iref,将每一路的实际输出电流 Iout 与 Iref 进行比较,得到误差 e = Iref - Iout,然后通过 PID 算法计算出控制量,调节每一路的输出电压,使各路输出电流趋于一致 。例如,在一个多路输出的电源系统中,当某一路的输出电流大于平均电流时,通过 PID 算法调整该路的控制信号,降低其输出电压,从而减小该路的输出电流;反之,当某一路的输出电流小于平均电流时,增加其输出电压,增大输出电流,最终实现电流均流的目的 。PID 算法在稳流控制中,通过合理调整比例、积分、微分系数,能够快速、准确地对电流进行调节,保证系统在不同负载条件下都能实现良好的均流效果,提高系统的可靠性和稳定性 。

3.3 代码模块详解

初始化模块是软件系统启动的第一步,它承担着至关重要的任务。在这个模块中,主要对微控制器的硬件资源进行配置。例如,对定时器进行初始化,设置其工作模式、计数周期等参数,以实现精确的定时功能 。定时器常用于数据采集的定时触发,以及 PID 控制算法中的控制周期定时,确保系统能够按照设定的时间间隔进行数据采集和控制计算 。对串口通信进行初始化,配置波特率、数据位、校验位等参数,以便与上位机或其他外部设备进行通信 。通过串口通信,可以将系统的调试信息、实时数据发送给上位机进行显示和分析,也可以接收上位机发送的控制指令,实现远程控制和调试 。对 ADC 进行初始化,设置采样通道、采样精度、采样速率等参数,使其能够准确地将传感器输出的模拟信号转换为数字信号 。在 A 题中,需要采集多种环境参数,如温度、湿度、气压等,ADC 的正确初始化是保证数据采集准确性的关键 。

数据采集模块负责从各类传感器中获取实时数据。以温度传感器为例,假设使用的是 DHT11 数字温湿度传感器,其采用单总线通信协议 。在代码实现中,首先需要配置与 DHT11 相连的 GPIO(通用输入输出)引脚为输出模式,向 DHT11 发送起始信号,然后将 GPIO 引脚配置为输入模式,接收 DHT11 返回的数据 。通过按位读取 DHT11 发送的数据帧,解析出温度和湿度值 。数据采集模块还需要对采集到的数据进行初步处理,如数据校验,以确保数据的准确性 。对于 DHT11 传感器,其数据帧中包含校验和,通过计算接收到的数据的校验和并与数据帧中的校验和进行比较,可以判断数据是否正确 。如果数据校验失败,数据采集模块可以重新进行数据采集,以保证获取到可靠的数据 。

控制输出模块根据数据处理模块的分析结果,向执行机构发送控制信号。以控制空调为例,假设通过 PWM 信号来调节空调的制冷功率 。在代码实现中,首先需要配置定时器的 PWM 输出功能,设置 PWM 的频率、占空比等参数 。根据数据处理模块判断的室内温度与设定温度的差异,计算出相应的 PWM 占空比 。当室内温度高于设定温度较多时,增大 PWM 占空比,使空调以较大的制冷功率运行;当室内温度接近设定温度时,减小 PWM 占空比,降低空调的制冷功率,以实现节能和精确控制的目的 。控制输出模块还需要考虑与执行机构的接口兼容性,确保控制信号能够正确地传输到执行机构并被识别和执行 。

四、代码示例展示

4.1 关键函数代码展示

 

// 电压采集函数

uint16_t voltage_adc_read(void) {

// 使能ADC1通道

ADC1->CR2 |= ADC_CR2_SWSTART;

// 等待转换完成

while (!(ADC1->SR & ADC_SR_EOC));

// 返回转换结果

return ADC1->DR;

}

在这段代码中,ADC1->CR2 |= ADC_CR2_SWSTART; 这一行代码的作用是启动 ADC1 的转换,通过设置控制寄存器 CR2 的 SWSTART 位来触发转换操作。while (!(ADC1->SR & ADC_SR_EOC)); 则是一个循环等待,直到 ADC1 的状态寄存器 SR 中的 EOC 位被置位,表明转换已经完成。最后,return ADC1->DR; 返回 ADC1 数据寄存器 DR 中的值,这个值就是经过模数转换后的数字量,代表着采集到的电压信号。

 

// 电流控制函数(假设使用PWM控制)

void current_control(uint16_t duty_cycle) {

// 设置TIM3的比较寄存器CCR1,以调整PWM占空比

TIM3->CCR1 = duty_cycle;

// 使能TIM3的PWM输出

TIM3->CCER |= TIM_CCER_CC1E;

}

这里,TIM3->CCR1 = duty_cycle; 将传入的占空比参数 duty_cycle 赋值给定时器 TIM3 的比较寄存器 CCR1,通过改变 CCR1 的值来调整 PWM 波形的占空比,从而实现对电流的控制。TIM3->CCER |= TIM_CCER_CC1E; 则是使能 TIM3 通道 1 的 PWM 输出,通过设置捕获 / 比较使能寄存器 CCER 的 CC1E 位,让 TIM3 能够输出 PWM 信号,驱动外部电路实现对电流的调节。

4.2 代码运行逻辑解释

在系统运行过程中,首先初始化各个模块,包括微控制器的硬件资源、传感器、通信接口等。初始化完成后,主程序进入一个循环,不断调用数据采集函数,如voltage_adc_read,获取电压、电流等实时数据 。采集到的数据被传递给数据处理模块,在这个模块中,对数据进行一系列处理,如滤波、校准等操作,以提高数据的准确性和可靠性 。例如,采用均值滤波算法对采集到的电压数据进行处理,去除噪声干扰。

处理后的数据进入控制算法模块,根据预设的控制策略和算法,如 PID 控制算法,计算出相应的控制量 。以电压控制为例,将采集到的实际电压值与设定的目标电压值进行比较,通过 PID 算法计算出误差,并根据误差调整控制量,这个控制量就是用于控制硬件设备的参数 。最后,控制输出模块根据计算出的控制量,调用相应的函数,如current_control,向硬件设备发送控制信号,实现对电压、电流等参数的精确控制 。在整个过程中,数据不断地被采集、处理、分析和用于控制,形成一个闭环控制系统,确保系统能够稳定、高效地运行,满足题目中对环境监测与控制系统的各项要求 。

五、常见问题与解决方法

5.1 代码调试问题

在代码编写过程中,编译错误是较为常见的问题。例如,可能会出现语法错误,像在 C 语言中,忘记写分号、括号不匹配等情况。当编译器提示语法错误时,应仔细检查错误信息所指向的代码行及附近代码,注意代码的书写规范。比如,在定义变量时,若写成 “int a 10;”,编译器会提示语法错误,正确的写法应该是 “int a = 10;” 。另外,还可能出现头文件包含错误,如未正确包含所需的头文件,导致函数或变量未定义。若使用了标准库函数 printf,但未包含头文件 < stdio.h>,编译器会报错 “undefined reference to `printf'” ,此时需要在代码开头添加 “#include <stdio.h>” 。

逻辑错误同样不容忽视,这类错误编译器往往不会提示,但程序运行结果却不符合预期。例如,在 PID 控制算法的实现中,可能由于参数设置不当,导致控制效果不佳。若 Kp 值设置过大,系统可能会出现超调现象,表现为输出量在目标值附近大幅振荡 ;若 Ki 值设置过大,积分项累积过快,可能会使系统响应变慢,甚至出现积分饱和的问题 。遇到这种情况,需要深入分析算法逻辑,通过逐步调试、打印中间变量等方法,找出逻辑错误的根源。可以在代码中关键位置添加打印语句,输出变量的值,观察程序执行过程中数据的变化情况,以此来判断逻辑是否正确 。

5.2 硬件与软件协同问题

硬件与软件配合时,通信异常是常见的问题之一。以串口通信为例,可能会出现数据丢失、乱码等情况。这可能是由于波特率设置不一致导致的,发送端和接收端的波特率必须相同,才能保证数据的正确传输 。若发送端设置的波特率为 9600,而接收端设置为 115200,就会出现通信异常。此时,需要仔细检查双方的波特率设置,确保一致。另外,通信线路的干扰也可能导致通信异常,如在工业环境中,强电磁干扰可能会影响串口通信的稳定性 。可以采取一些抗干扰措施,如使用屏蔽线、增加滤波电路等,来提高通信的可靠性 。

控制不精准也是硬件与软件协同中可能出现的问题。在电机控制中,通过 PWM 信号控制电机转速,但实际转速与预期转速存在偏差。这可能是由于 PWM 信号的精度不够,或者硬件电路中的电机驱动模块存在非线性特性 。对于 PWM 信号精度问题,可以考虑提高微控制器的 PWM 分辨率,如使用具有更高位数 PWM 输出的芯片 。对于电机驱动模块的非线性特性,可以通过实验获取其特性曲线,然后在软件算法中进行补偿,以实现更精准的控制 。

六、总结与展望

通过对 2024 电子设计大赛 A 题的深度解析以及软件代码实现过程的阐述,我们全面地了解了 “智能环境监测与控制系统” 从理论分析到实际代码编写的整个流程 。在解析过程中,我们剖析了赛题的任务要求、关键技术点以及可能面临的难点与挑战,这让我们对电子设计领域的知识有了更深入的理解和掌握 。在代码实现方面,从整体架构规划到核心算法设计,再到具体代码模块的详解和示例展示,我们一步步构建起了一个完整的软件系统,实现了对环境参数的监测和设备的智能控制 。

然而,电子设计领域的发展永无止境,每一次的探索都是新的起点。希望读者能够以此次 A 题解析为契机,在电子设计领域中不断探索创新。在未来的学习和实践中,可以尝试优化现有的代码,提高系统的性能和稳定性 。比如进一步优化 PID 控制算法的参数,使其能够更快速、准确地响应环境变化;探索新的传感器技术和通信协议,拓展系统的功能和应用场景 。也可以关注电子设计领域的前沿技术,如人工智能、物联网等与电子设计的融合,为解决实际问题提供更多的创新思路 。相信在不断的努力和探索中,大家在电子设计领域定能取得更优异的成绩,为推动电子技术的发展贡献自己的力量 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大雨淅淅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值