电赛常用模块清单:从电源到算法的赛前准备与避坑指南

发布时间:2026/11/2 2:49:12
电赛常用模块清单:从电源到算法的赛前准备与避坑指南

简介:面向电子设计竞赛参赛者与备赛学生的常用模块资料包,系统梳理控制类赛题所需的硬件模块与软件程序清单,帮助读者在有限时间内搭建起完整的知识框架与器材准备思路。包内共1个doc文档,约38KB,以文字条目形式归纳电源、最小系统、键盘、液晶显示、AD/DA、传感器、集成运放、可编程逻辑、电机与继电器等模块的选型要点,并配套LCD显示、键盘输入、AD数据处理、电机控制、PWM输出、延时计时及寻迹避障等常用程序说明。已有3080人学习下载,内容兼顾硬件设计与软件实现,对初次参赛或需要查漏补缺的选手具有较强参考价值,可作为赛前器材清单与程序准备的对照手册。

1. 电赛常用模块清单:从电源到算法的赛前准备逻辑

电赛现场最怕的不是题目难,而是题目发下来发现少一个 3.3V 稳压块,或者寻迹光耦的返回信号是模拟量、手头却没有比较器。我带过几轮校赛队伍,翻车最多的从来不是算法写不出来,而是模块没备齐、接口对不上。这套方案要解决的就是赛前模块化准备的问题:把电源、最小系统、传感器、驱动、信号调理、显示键盘这些硬件模块,连同显示、AD 采集、电机控制、PWM、计时、寻迹避障这些常用程序,整理成一套可以按图索骥的清单和代码骨架。适合正在准备电赛的学生队伍,也适合需要快速搭控制类原型的从业者参考。

2. 硬件模块规划:按电压域和信号链划分的备件体系

硬件准备的核心不是把芯片买齐,而是按「电压域」和「信号链」两条线组织。电压域决定供电怎么分配,信号链决定传感器出来之后经过什么调理才进 MCU。这两条线理清楚,现场改板子的时间能省一大半。

2.1 电源模块:多电压域与负压的分配策略

电源是第一个要定死的东西。12V、9V、5V、3.3V 是控制类题目里出现频率最高的四档,通常的做法是准备一块 12V 输入的底板,用开关电源芯片降到 5V,再用线性稳压(如 AMS1117-3.3)降到 3.3V。9V 这一档容易被忽略,但不少运放和继电器线圈按 9V 设计,建议单独留一路可调或固定 9V 输出。

电池供电时要额外考虑升压。比如用两节 18650 串联得到 7.4V,驱动电机够用,但给 12V 继电器或某些传感器就不够,这时需要一颗升压模块。负压是血泪经验最多的地方:LM337 是可调负压线性稳压器,配合正压的 LM317 使用,能给需要双电源的运放(如 TL082)提供 ±12V 或 ±5V。负压电路要注意散热,输入输出压差大时线性稳压器发热明显,通常加一小片铝散热片。

电压档典型来源主要负载注意事项
12V适配器/升压电机驱动、继电器大电流走粗线,加续流二极管
9V降压/电池运放、部分传感器与 5V 分开布线减少干扰
5V开关降压最小系统、LCD、逻辑芯片留至少 1A 余量
3.3V线性稳压MCU 核心、数字传感器输入输出压差不宜过大
-5V/-12VLM337双电源运放注意散热与滤波电容极性

2.2 最小系统与 I/O 扩展:预留 CPLD 的时机

最小系统是控制核心,51、MSP430、C8051 都是常见选择,条件允许可以上 ARM。选型上我一般建议队伍里至少有一块自己焊过、跑通过的最小系统板,而不是现场才第一次烧程序。I/O 口不够是控制类题目的高频问题:电机驱动占 4 到 6 个口,LCD 占 6 到 8 个,键盘再占几个,很快就见底。

题目允许的前提下,加一片 CPLD 做 I/O 扩展和简单逻辑是划算的,比如用 CPLD 分担编码器计数、多路 PWM 生成这类确定性任务,MCU 只负责决策。不允许加可编程逻辑时,退而求其次用 74 系列移位寄存器或 I/O 扩展芯片。这里的关键判断是:先数清楚题目需要多少路输入输出,再决定要不要扩展,别等焊到一半才发现口不够。

2.3 驱动与执行机构:L298、L297 与继电器电路

电机驱动里 L298 是必备件,双 H 桥能驱动两个直流电机或一个步进电机。步进电机如果要做细分和稳速,可以加 L297 做脉冲分配,MCU 只给方向和脉冲,减轻软件负担。继电器电路用 ULN2803 或 ULN2003 驱动,这两颗达林顿阵列能同时驱动多路继电器,内部带续流二极管,比三极管加二极管的分立方案省事。

执行机构还包括车模、减速电机、步进电机、测速电机,以及联轴器这类机械件。做电子的容易忽略机械,但小车类题目里联轴器松动、轮子打滑造成的误差,往往比算法误差还大。我的习惯是赛前把车模装好跑一遍直线,确认机械部分不拖后腿。

2.4 传感器阵列:寻迹、霍尔、光电与超声波的组合

传感器按物理量分:光、磁、声、力、角度。寻迹用 RPR220 光耦,反射式输出随黑白路面变化,注意它输出的是模拟量,进 MCU 前要么用比较器整形,要么走 AD 采样后软件判阈值。霍尔传感器 A04E 配磁钢做转速或位置检测,输出开关量,接线简单。光电槽加码盘做测速,避障用光电开关,趋光用光敏电阻或光敏二极管。

接近开关探测金属,角度传感器精度高但价格贵,超声波测距适合中远距离避障。这些传感器的共同问题是输出形式不统一:有的是开关量,有的是模拟电压,有的需要上拉电阻。赛前把每种传感器的输出形式和接口电平记在一张表上,现场接线就不会乱。

2.5 信号调理:比较器与运放的固定搭配

信号调理是连接传感器和 MCU 的桥梁。光耦输出如果不是干净的开关量,就要加比较器整形,LM339、LM393 是常备件,四路或双路比较器,加个参考电压就能把模拟信号变成数字沿。信号需要放大时用运放,TL082、TL084 是通用选择,前者双运放后者四运放,带宽和压摆率够一般传感器用。

比较器和运放的搭配逻辑是:传感器出来先看幅度,太小就放大,波形不陡就过比较器。参考电压可以用电位器分压产生,方便现场调阈值。这部分电路建议做成独立小模块,用排针连接,换传感器时只换前端,不动主控板。

3. 软件模块设计:从显示键盘到电机控制的代码骨架

软件部分的价值在于「拿来就能改」。赛前把每个模块写成带注释的函数,现场只改参数和引脚定义,比从零写快得多。下面几段代码是骨架级示例,重点看结构和参数含义,不追求直接编译通过。

3.1 显示与键盘:人机交互的最小闭环

LCD 显示和键盘输入是任何控制类作品的门面。LCD 建议封装成lcd_write_string(row, col, str)和lcd_write_num(row, col, value)两个函数,内部处理光标定位和数字转字符。键盘用行列扫描,带回消抖,状态机比延时消抖更可靠。

/* 4x4 矩阵键盘扫描,返回键值 0-15,无按键返回 0xFF */ #define KEY_PORT P1 unsigned char key_scan(void) { unsigned char row, col, key = 0xFF; for (row = 0; row < 4; row++) { KEY_PORT = ~(1 << row); /* 逐行拉低 */ delay_us(10); /* 等待电平稳定 */ col = KEY_PORT & 0x0F; /* 读列线 */ if (col != 0x0F) { /* 有列被拉低说明有键按下 */ delay_ms(10); /* 回消抖 */ if ((KEY_PORT & 0x0F) != 0x0F) { key = row * 4 + (col & 0x03); while ((KEY_PORT & 0x0F) != 0x0F); /* 等待释放 */ } } } KEY_PORT = 0xFF; return key; }

这段代码的关键参数是delay_us(10)和delay_ms(10):前者给行线电平建立时间,后者做软件消抖。KEY_PORT的低四位接列、高四位接行,实际接线不同时改宏定义即可。等待释放的循环是防止一次按键被识别成多次,现场如果发现按键「连发」,先查这里。

3.2 AD 采集与数据处理:滑动平均与中值滤波

AD 采集后直接用的数据往往抖动大,尤其是光耦寻迹和电位器角度这类信号。常用的处理是滑动平均加中值滤波:滑动平均压高频噪声,中值滤波去脉冲干扰。下面是一个 8 点滑动平均的实现。

/* 8 点滑动平均滤波,输入新采样值,返回滤波结果 */ #define FILTER_N 8 static unsigned int buf[FILTER_N]; static unsigned char idx = 0; static unsigned long sum = 0; unsigned int filter_avg(unsigned int new_val) { sum -= buf[idx]; /* 减去最旧值 */ buf[idx] = new_val; /* 存入新值 */ sum += new_val; /* 累加新值 */ idx = (idx + 1) % FILTER_N; /* 环形索引 */ return (unsigned int)(sum / FILTER_N); }

FILTER_N越大越平滑但响应越慢,寻迹这种需要快速响应的场景取 4 到 8 比较合适,温度这类慢变量可以取 16。sum用unsigned long防止累加溢出。如果信号里有偶发尖峰,再套一层三点中值:取连续三个采样排序后取中间值,能有效去掉单点跳变。

3.3 电机控制与 PWM:让减速电机走出步进感

减速电机要做到「一步步走」,光调速不够,需要位置闭环或至少是定距控制。常见做法是用编码器或霍尔测速,配合 PWM 调速,再用一个简单的比例控制让每次走固定脉冲数。PWM 的频率和分辨率要匹配驱动芯片:L298 开关频率一般取 1 到 20kHz,太低有啸叫,太高开关损耗大。

/* 定时器产生 PWM,频率 = 时钟 / (分频 * 周期) */ void pwm_init(unsigned int period, unsigned int duty) { TCCR1A = 0xA0; /* 快速 PWM,OC1A 非反相 */ TCCR1B = 0x11; /* 分频 1,8 位快速 PWM 模式 */ ICR1 = period; /* 周期决定频率 */ OCR1A = duty; /* 占空比决定转速 */ } /* 步进电机细分调速:改变脉冲间隔即可改变速度 */ void step_run(unsigned int steps, unsigned int interval_us) { while (steps--) { STEP_PIN ^= 1; /* 翻转脉冲脚,产生一个步进沿 */ delay_us(interval_us); /* 间隔越短转速越高 */ } }

period和duty的关系是占空比等于duty/period,改period调频率、改duty调转速。步进电机的interval_us是脉冲间隔,配合 L297 的细分设置,间隔越小转速越高,但太小会失步,通常从 500us 往下试,找到不失步的最小值。这里没有写闭环,实际比赛里如果要求定距,建议加编码器反馈做位置修正。

3.4 计时与算法:秒表、测速、寻迹避障的实现要点

计时分两种:软件延时和硬件定时器。软件延时用于短时间精确等待,比如上面键盘和步进的微秒级延时;硬件定时器用于秒表、测速这类需要长时间稳定计时的场景。测速用定时器捕获编码器脉冲间隔,换算成转速;测距用超声波发收时间差乘声速;寻迹和避障本质是传感器状态到动作的映射表。

寻迹算法的骨架是:读左右光耦状态,根据偏差调整左右轮 PWM。避障是读前方光电开关或超声波距离,小于阈值就转向。这些算法不复杂,难在参数整定,赛前用固定场地跑几圈,把阈值和转向力度记下来,现场微调即可。

4. 避坑与排查:赛前联调最容易翻车的五个点

4.1 电源一上电就复位

现象是 MCU 跑着跑着复位,或者 LCD 花屏。原因多半是电机启动瞬间拉低电源,或者地线走线太细导致压降。解决方法是电机电源和逻辑电源分开走线,在电机端加续流二极管和大电容,逻辑端加 0.1uF 去耦电容,必要时用独立稳压给 MCU 供电。

4.2 光耦输出不是开关量

现象是寻迹光耦接上 MCU 后读数乱跳。原因是 RPR220 这类反射式光耦输出的是随反射强度变化的模拟电压,不是干净的高低电平。解决方法是加 LM393 比较器整形,参考电压用电位器调,或者直接走 AD 采样后软件判阈值。

4.3 步进电机失步或啸叫

现象是步进电机走不准、有异响。原因通常是脉冲频率超过电机响应能力,或者细分设置与驱动器不匹配。解决方法是降低脉冲频率、增大细分、确认 L297 的时钟和方向时序满足建立时间要求,同时检查电源电流是否足够。

4.4 AD 采样值漂移

现象是同一输入下 AD 读数缓慢变化。原因是参考电压不稳或采样通道串扰。解决方法是给 AD 参考脚加滤波电容,采样前丢弃前几次读数,多通道切换后加短延时再采样,必要时用外部基准芯片。

4.5 键盘误触发

现象是没按键却读到键值。原因是行列线悬空或上拉不足。解决方法是给行列线加上拉电阻,扫描时未选中的行保持高电平,软件里加连续两次读数一致的确认逻辑。

5. 验收与答辩:用一张检查表把方案讲清楚

验收和答辩考的不是你用了多少芯片,而是你能不能证明这套模块体系是可控的。我的做法是赛前做一张「模块验收表」,每个模块列出三项:供电电压、接口电平、验证方法。比如电源模块写「12V 输入,5V/3.3V 输出,空载和带载各测一次纹波」;寻迹模块写「5V 供电,输出经 LM393 整形,黑线低电平、白线高电平,用万用表逐路验证」。答辩时按这张表讲,评委问哪个模块都能立刻答出参数和验证结果。

验收项检查内容通过标准
电源各档电压空载/带载偏差小于 5%,纹波可接受
最小系统程序下载与运行连续运行 30 分钟不复位
传感器每路输出电平状态变化时电平正确翻转
电机驱动正反转与调速无失步,PWM 线性可调
显示键盘按键与显示无连发、无乱码
算法寻迹/避障跑场固定场地连续通过

答辩陈述建议按「需求—模块—验证」三段走:先说题目要求哪些功能,再说用哪些模块实现,最后说每个模块怎么验证的。不要一上来讲算法细节,评委更关心你的系统是否稳定、边界条件是否考虑过。被问到没做的部分,如实说「这部分赛前评估过,因为 XX 原因没有采用,替代方案是 XX」,比硬编一个答案可信。

从那以后我每次带队伍,赛前一周都强制走一遍这张验收表,哪怕模块看起来已经跑通,也要重新测一遍电压和电平。翻车往往就发生在「以为没问题」的那一路。希望这套清单和代码骨架能帮到你,把赛前的精力花在真正需要调试的地方。

本文还有配套的精品资源,点击获取