简介:《电赛常用模块》面向电子设计竞赛参赛者与备赛团队,系统梳理控制类作品常见的硬件模块与配套程序,帮助在赛前快速建立物料清单、知识框架和检查表。压缩包仅含1个doc文件,约38KB,内容按电源、最小系统、键盘、液晶、AD/DA、传感器、运放、可编程逻辑、电机驱动、继电器及信号处理等模块组织,并对应LCD显示、键盘输入、AD数据处理、电机控制、PWM、延时计时、寻迹避障测速测距与无线通信等程序要点,结构紧凑便于查阅。已有3077人学习下载,在电赛备赛群体中具备一定参考热度。文中还给出LM337、L298、L297、LM339、LM393、TL082、TL084、RPR220、A04E等器件选型提示,对常用芯片的用途与程序实现思路也有简要说明,并提醒IO扩展、比较器调理、联轴器与车模等易忽略环节,可帮助读者对照查漏补缺,提升方案的完整性与临场应变能力。
1. 电赛常用模块到底备什么:从一张BOM到可复现的测试台
备赛电赛常用模块时,最怕的不是算法不会写,而是搭建到一半发现少一个3.3V稳压、少一个比较器,或者电机一转AD就跳。这份资料把电源、最小系统、键盘、LCD、AD/DA、传感器、运放、可编程逻辑、电机驱动、继电器和信号处理列成一张可核对的BOM,又把显示、键盘、SPI读写、AD滤波、PWM、延时计时、测速寻迹避障这些程序骨架摊开。它适合第一次系统备赛的人照着搭台,也适合做过一轮的人查漏补缺。下面按“先选型、再接线、再写程序、最后排错”的顺序拆。
2. 电源与最小系统:12V/9V/5V/3.3V 与负压的选型账
电源是最不该临时凑的部分。电赛常用模块里把12V、9V、5V、3.3V列在最前面,原因很直接:电机、继电器、运放、传感器、单片机最小系统对电压和电流的要求完全不同,先把电压域分清楚,后面接线和写程序才不会互相拖累。血泪经验是,很多“程序跑飞”最后查出来不是代码问题,而是电机启动瞬间把5V拉到4.2V,单片机复位了。
2.1 电压域划分与电池升压的边界
先列负载表,再选拓扑。常见做法是把负载按电压域和电流分成四类:12V给电机、继电器或大功率执行器;9V给部分运放或旧式模块;5V给LCD、键盘、部分传感器;3.3V给单片机最小系统、数字接口和低功耗传感器。每一类都要写明最大电流和峰值电流,不能只写“大概几百毫安”。
| 电压域 | 典型负载 | 选型注意 | 测试点 |
|---|---|---|---|
| 12V | 直流减速电机、步进电机、继电器线圈 | 启动电流按堵转电流留余量,线径和端子要够 | 电机端并联示波器看跌落 |
| 9V | 部分运放、比较器、旧模块 | 线性稳压压差大时发热明显 | 稳压前后各一个测试点 |
| 5V | LCD、键盘、光电传感器、霍尔 | 与电机电源分开走线,避免共地阻抗 | 5V对地纹波 |
| 3.3V | 最小系统、数字接口、低功耗传感器 | 注意电平匹配,别把5V信号直接灌进3.3V引脚 | 3.3V对地阻值 |
如果用电池,升压块要考虑效率、纹波和峰值电流。电池电压会随电量下降,升压模块的输入下限必须低于电池截止电压,否则一到低电量就掉压复位。常见做法是电机电源和逻辑电源分两路,电机端加足够大的储能电容,逻辑端再加LC或磁珠隔离。负压需求要单独看:LM337是负压线性稳压器,前提是有负输入电压,不能凭空从正压“变”出负压;常见做法是先用隔离型DC-DC或电荷泵产生负压,再用LM337稳压,压差和散热要提前算。
操作步骤可以按这个顺序走:第一步,把所有模块的电压和最大电流抄成表;第二步,按总电流乘1.5倍选电源和保险;第三步,给每一路留测试点;第四步,上电前先量各电压域对地阻值,确认没有短路。参数上,去耦电容一般每个芯片电源脚放0.1μF,电源入口放10μF到100μF,电机端再并大容量电解。提示:保险不是越大越安全,按工作电流的1.5倍左右选,太大起不到保护作用。
2.2 最小系统与I/O扩展:什么时候上CPLD
最小系统要备,而且最好备一套引脚全引出的板子。电赛常用模块里提到“以备I/O口不够的特殊情况”,这句话很实在:LCD、键盘、AD/DA、电机驱动、传感器一接,普通单片机的I/O很快就不够。常见做法是先用I2C或SPI扩展数字输入输出,比如键盘用扫描矩阵,LCD用并口或SPI,传感器能走总线就走总线;如果时序要求高、并口设备多,再考虑CPLD或FPGA做逻辑扩展。
| 扩展方式 | 适合场景 | 代价 | 注意 |
|---|---|---|---|
| I2C/SPI扩展芯片 | 键盘、低速开关量、显示 | 速度有限,占用总线 | 地址冲突和上拉电阻 |
| 移位寄存器 | LED、数码管、低速输出 | 软件时序要稳 | 锁存信号别省 |
| CPLD | 多路并口、编码器计数、自定义时序 | 需要下载器和开发流程 | 电平 bank 要匹配 |
| FPGA | 高速采样、并行处理 | 功耗和复杂度高 | 别为简单任务上重方案 |
步骤上,先把所有外设的引脚需求列出来,数字输入、数字输出、PWM、AD、串口分开统计;再留10%到20%的余量给调试和改题;最后决定是用软件模拟时序还是上可编程逻辑。CPLD适合做“胶水逻辑”,比如把多路光电槽信号做硬件消抖、把编码器正交解码、把并口LCD的时序固定下来。注意3.3V和5V电平不要硬怼,必要时加电平转换或串电阻分压。
2.3 上电顺序与保护:保险、TVS、去耦的落地参数
上电顺序要固定:先逻辑,后功率;先低压,后高压;电机和继电器最后上。常见做法是每一路电源加一个开关或跳线帽,调试时单独断开。电源入口加保险和TVS,TVS钳位电压要高于正常工作电压、低于后级耐压;电机和继电器线圈两端加续流二极管,继电器触点加RC吸收或压敏电阻。去耦不是装饰,芯片电源脚到地越短越好,地线走星形或单点汇合,别让电机电流从AD地线上跑。
步骤可以这样落地:第一步,画一张上电检查表,列出每一路的电压、电流、测试点;第二步,上电前用万用表量电源对地阻值,确认没有短路;第三步,先只上逻辑电,读一遍LCD和键盘;第四步,再上电机电,空载转一下,看5V和3.3V有没有跌落;第五步,带载再看AD和传感器。参数上,保险按1.5倍工作电流,储能电容按电机启动电流和允许跌落估算,去耦0.1μF加10μF组合。注意:电机电源和逻辑电源共地时,地线要粗,电机地、继电器地、AD地分开走,最后在电源入口汇合。
3. 传感器与信号调理:从RPR220、A04E到LM393比较器
传感器这部分最容易“看起来能读,实际上不能用”。电赛常用模块里列了寻迹光耦RPR220、霍尔A04E、光电槽和码盘、避障光电开关、趋光光敏电阻或光敏二极管、接近开关、角度传感器和超声波,这些器件的输出类型不一样,有的已经是开关量,有的是模拟量,有的开漏输出必须上拉。先分清输出类型,再决定接单片机、接比较器还是接AD。
3.1 开关量传感器:寻迹、霍尔、光电槽的接口电路
RPR220这类寻迹光耦,常见用法是发射管串限流电阻,接收管配上拉电阻,输出随反射面变化。黑白线检测时,接收管电流不同,输出电压会变,但直接进单片机容易受环境光影响。常见做法是加LM393比较器,把模拟变化转成干净开关量,比较器输出开漏,需要上拉电阻。A04E霍尔传感器常见是开关型输出,磁钢靠近时翻转,注意磁钢极性和气隙,集电极开路输出必须上拉。光电槽加码盘适合测速和位置,槽宽、码盘齿宽、安装偏心都会影响占空比。
| 传感器 | 输出类型 | 接口做法 | 典型用途 | 注意 |
|---|---|---|---|---|
| RPR220 | 模拟/开关 | 接收管上拉,比较器整形 | 寻迹、黑白线 | 加遮光套,阈值可调 |
| A04E | 开关/开漏 | 10k上拉,磁钢靠近 | 限位、计数 | 磁钢极性和气隙 |
| 光电槽+码盘 | 开关脉冲 | 比较器或施密特整形 | 测速、位置 | 码盘同心度 |
| 避障光电开关 | 开关 | 直接读或上拉 | 避障 | 检测距离和环境光 |
| 光敏电阻/二极管 | 模拟 | 分压后AD或比较器 | 趋光 | 响应速度和暗电流 |
步骤上,先给传感器单独供电,用万用表量输出静态电压;再遮挡、靠近、远离,看电压变化范围;然后定比较器阈值,阈值取高电平和低电平的中点偏一点;最后软件加连续采样确认,比如连续三次一致才认。参数上,RPR220发射限流电阻按5mA到10mA估算,接收上拉10k到47k可调;比较器上拉4.7k到10k;光电槽输出脉冲频率高时,软件消抖别用太长延时,否则丢脉冲。注意环境光强的场地,遮光套比改代码更有效。
3.2 模拟量传感器:温度、角度、压力的AD前级
温度、湿度、压力、角度这些模拟量,最后大多落到AD。角度传感器贵,但原理不复杂:输出电压随角度变化,进AD前要做分压、缓冲和RC滤波。常见做法是先用运放做电压跟随,提高输入阻抗,再用RC低通滤掉电机PWM带来的高频干扰,最后进AD。AD基准要稳,基准抖了,读数一定跳。采样率要和PWM频率错开,或者让AD在PWM关断窗口采样。
步骤可以按这个顺序:第一步,查传感器输出范围,确认是否在AD量程内;第二步,算分压比,别让输入超过AD基准;第三步,加运放跟随和RC滤波;第四步,做两点校准,比如零点和满量程;第五步,软件做滑动平均或中值滤波。参数上,RC截止频率按有用信号带宽的5到10倍选,采样率按截止频率的2到5倍;如果传感器输出阻抗高,RC直接接AD会拖慢建立时间,中间加运放缓冲。注意AD输入阻抗和采样保持时间,别只看代码里的采样周期。
3.3 比较器与运放:LM339/LM393、TL082/TL084的选型与阈值计算
光耦输出不一定是开关量,这是电赛常用模块里反复强调的点。光耦接收管输出是模拟电流,负载电阻上得到模拟电压,要变成开关量就得加比较器。LM393是双路比较器,LM339是四路比较器,都是开漏输出,必须上拉;输入共模范围要看清,别把信号加到超出范围。运放TL082是双运放,TL084是四运放,适合做跟随、放大、有源滤波,不适合直接当比较器用,除非加正反馈做迟滞。
| 器件 | 通道 | 输出 | 常见用途 | 注意 |
|---|---|---|---|---|
| LM393 | 2 | 开漏 | 光耦整形、阈值检测 | 上拉电阻,输入范围 |
| LM339 | 4 | 开漏 | 多路传感器整形 | 同上,布局分开 |
| TL082 | 2 | 推挽 | 缓冲、放大、滤波 | 供电范围和压摆率 |
| TL084 | 4 | 推挽 | 多路模拟调理 | 电源去耦 |
阈值计算可以按分压来:比较器正端接可调电阻分压,负端接传感器信号,阈值Vth=Vref×R2/(R1+R2)。加迟滞时,正反馈电阻从输出接到正端,形成上下两个阈值,避免信号在阈值附近抖动。步骤:先算高低温或黑白线下的信号范围;再定阈值中点和迟滞宽度;然后加上拉电阻和滤波电容;最后用示波器看比较器输出边沿。注意比较器开漏输出上拉电阻太大时边沿变慢,太小又增加功耗,4.7k到10k是常见起点。
4. 驱动与执行器:L298、L297、继电器和PWM细分
执行器是电赛控制类题目的重头。电赛常用模块里把L298列为电机驱动必备,把L297列为步进电机控制可选项,把2803或2003列为继电器驱动,这些器件不复杂,但接线和保护做不好,轻则干扰AD,重则烧驱动。先明确一点:调速和位置控制是两件事,减速电机要做到“像步进电机一样一步步走”,光靠PWM调速不够,还要有测速或编码器反馈。
4.1 直流减速电机与L298:使能、方向、刹车
L298是双H桥,常见模块有两个使能端和四个方向输入端,可以驱动两个直流电机或一个步进电机。使能端接PWM,方向端决定正反转。PWM频率一般选1kHz到20kHz,太低会有可听噪声和抖动,太高开关损耗和干扰变大。电机两端要加续流二极管,模块自带的话也要确认耐流。刹车和滑行要分清:有的接法是方向端同时为高或同时为低实现刹车,具体看模块逻辑,别凭感觉写。
// 以常见的双H桥驱动为例:EN 接 PWM,IN1/IN2 决定方向 void motor_set(int16_t duty, uint8_t dir) { if (duty < 0) duty = -duty; if (duty > 1000) duty = 1000; // 占空比限幅,1000 对应 100% if (dir) { IN1 = 1; IN2 = 0; } // 正转 else { IN1 = 0; IN2 = 1; } // 反转 PWM_REG = duty; // 写入比较值,频率由定时器决定 }这段代码只做方向和阿占空比限幅,duty范围0到1000,dir为0或1。PWM频率由定时器决定,常见取10kHz左右;占空比限幅防止误写超过周期。刹车逻辑不要直接抄,先看驱动模块真值表:IN1和IN2同时为1通常是刹车,同时为0是滑行,但不同模块可能相反。注意电机启动电流大,电源端加储能电容,电机线和信号线分开走。
4.2 步进电机与L297:频率、细分、加减速
L297是步进电机控制器,配合L298可以产生整步、半步和斩波控制。步进电机的速度由脉冲频率决定,细分由驱动器或控制方式决定,加减速曲线决定会不会失步。常见做法是先低频启动,再按梯形或S形曲线加速,到目标频率后匀速,停止前减速。L297的斩波频率和限流要按电机额定电流调,限流太大发热,太小力矩不够。
| 控制方式 | 特点 | 适合场景 | 注意 |
|---|---|---|---|
| 整步 | 力矩大,步距角大 | 低速定位 | 振动明显 |
| 半步 | 步距减半,平滑一些 | 中低速 | 相电流分配 |
| 细分 | 平滑、噪声低 | 精密定位 | 需要驱动器支持 |
| 斩波限流 | 控制相电流 | 高压驱动 | 采样电阻和参考电压 |
步骤上,先确认电机相序和额定电流;再设启动频率,通常从几百赫兹开始试;然后加加减速,避免直接跳到高频;最后测失步,用标记点或编码器看实际位置。参数上,启动频率和负载惯量有关,空载能起不一定带载能起;细分不是越高越好,细分太高时力矩和响应会变差。注意L297和L298的逻辑电平、使能顺序,先给逻辑电再给电机电。
4.3 继电器与2803/2003:感性负载的续流与隔离
继电器用于切换高电流负载,单片机引脚不能直接驱动线圈。常见做法是用ULN2803或2003这类达林顿阵列,内部有续流二极管,但外部感性负载最好再加吸收。继电器线圈两端加续流二极管,触点端加RC吸收或压敏电阻,交流负载和直流负载的吸收方式不一样。光耦隔离可以切断地环路,但隔离后的电源要独立。
步骤:先算线圈电流,确认驱动阵列单路能力;再算基极或输入电阻,保证饱和;然后加续流和触点保护;最后用万用表测吸合电压和释放电压。参数上,5V继电器线圈电流常见几十毫安,12V线圈电流小一些但电压高;ULN2803单路常见500mA级别,但不能长期满额。注意继电器触点在电机感性负载下会拉弧,触点寿命和吸收电路要留余量。
5. 避坑与排查:电源、传感器、驱动三类翻车现场
这一章按“现象→原因→解决”写,都是调试台上能碰到的翻车。电赛常用模块清单能帮你把器件备齐,但真正省时间的是知道先量哪里、先断开哪一路。下面五条踩坑记录,建议直接抄成排查表。
5.1 电源类:一上电就复位/发热
现象:电机一转,LCD花屏、单片机复位,5V测试点从5.0V掉到4.2V,电机停后又恢复。原因通常不是单片机抗干扰差,而是电机启动电流把公共电源拉低,或者电机地和逻辑地共用一段细线,地电位被抬起来。解决:电机电源和逻辑电源分两路,电机端加1000μF以上储能电容,地线改成星形汇合,电机线双绞并远离AD线;用示波器看5V和3.3V的跌落深度,再决定加电容还是换电源。注意别只加大电容不改地线,地线阻抗不降,电容也救不了。
现象:LM337发烫,负压输出不稳,输入电压和输出压差很大。原因:线性稳压压差全部变成热,散热片不够;或者输入根本不是负压,芯片没工作在线性区。解决:先量输入是不是负于输出,再算功耗P=(Vin-Vout)×I,按热阻选散热片;压差太大时改用开关负压或降低输入。注意LM337的引脚和正压LM317不一样,别照317的接法硬套。
5.2 传感器类:阈值漂移与误触发
现象:RPR220寻迹在室内正常,到窗边或强光下一直输出同一状态,黑白线分不清。原因:环境光进入接收管,接收管电流被抬高,固定阈值失效。解决:给发射接收对管加遮光套,比较器阈值改成可调电阻,软件加连续采样确认;如果场地光变很大,考虑调制发射光,用同步解调,但这会增加电路复杂度。注意先做遮光,再调阈值,顺序反了会白调。
现象:A04E霍尔传感器怎么靠近磁钢都没输出。原因:集电极开路输出没上拉,或者磁钢极性不对、气隙太大。解决:输出对电源加10k上拉,用万用表量输出在磁钢靠近前后是否翻转;换磁钢另一面试,缩小气隙。注意霍尔开关有动作值和释放值,磁钢慢慢靠近和慢慢离开的翻转点不一样,别在临界点调程序。
5.3 驱动类:电机一转,AD就跳
现象:角度传感器进AD,电机不转时读数稳定,电机一转读数跳几十个码。原因:PWM开关沿通过电源和地耦合到AD前级,或者采样时刻正好落在开关沿上。解决:AD采样同步到PWM关断窗口,AD前级加RC低通,传感器线用屏蔽线,电机电源和AD电源分开;软件做滑动平均或中值滤波。注意滤波窗口不是越大越好,窗口太大会让响应变慢,控制环会振荡。
现象:继电器吸合瞬间单片机复位,或者LCD闪一下。原因:继电器线圈断电时反电动势通过地线串进逻辑电源,续流二极管没接或接错方向。解决:线圈两端加续流二极管,驱动阵列输出到线圈的走线短,逻辑地和继电器地分开汇合;触点端加RC吸收。注意续流二极管方向别反,反了会短路电源。
6. 程序骨架与验证方法:把定时器、AD滤波、测速串成闭环
程序部分不要一上来写大框架,先把定时器、AD、PWM、测速四个基础件跑通。电赛常用模块里提到软件延时和定时器计时的区别,我的习惯是:能用硬件定时器就不用软件延时,软件延时只用在初始化或极短等待。下面用一张小表和一段滤波代码收口。
6.1 定时器与软件延时:什么时候不能互相替代
| 方式 | 适合 | 不适合 | 注意 |
|---|---|---|---|
| 软件延时 | 初始化、短等待 | 多任务、精确周期 | 中断会拉长延时 |
| 定时器中断 | 周期采样、PWM、计时 | 极短硬实时 | 中断里别做长运算 |
| 输入捕获 | 测频、测脉宽 | 低频长周期 | 溢出要处理 |
6.2 AD采集与滑动滤波:采样率、窗口、死区
#define N 8 static uint16_t buf[N]; static uint8_t idx; uint16_t ad_filter(uint16_t raw) { uint32_t sum = 0; buf[idx++] = raw; if (idx >= N) idx = 0; for (uint8_t i = 0; i < N; i++) sum += buf[i]; return (uint16_t)(sum / N); // N 取 8/16,窗口越大越稳但越滞后 }这段滑动平均的N取8或16,raw是单次AD值,返回值是窗口平均。窗口越大越稳,但相位滞后越大,控制环里要折算成时间常数;采样周期最好和PWM周期同步,在开关关断窗口采样。若现场有偶发尖峰,改成中值加平均,或者排序后去掉最大最小。
6.3 电机闭环与测速:编码器/光电槽的测频法
测速用光电槽或编码器时,低频用测周期,高频用测频率,别一套方法打天下。我后来养成了一个习惯:每次上电前先用万用表量5V和3.3V对地阻值,再插电机;每次改PWM频率,先把AD采样窗口固定下来。这个习惯救过我好几次。你如果要照着复现,直接按这份电赛常用模块清单逐项打勾,把电源、传感器、驱动、程序四列跑一遍,希望帮到你。
本文还有配套的精品资源,点击获取