ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

纯硬件搭建循迹小车:从红外传感器到MOS管驱动的完整信号链

纯硬件搭建循迹小车:从红外传感器到MOS管驱动的完整信号链 一提到循迹小车很多人条件反射就是单片机。STM32、Arduino、摄像头、PID好像不写上几百行代码就不算入门。但如果你问我这个从面包板时代玩过来的老玩家怎么看我反而想说一句可能有点反潮流的话先用纯硬件电路把一辆循迹小车搭出来比任何开发板都能让你真正看懂它是怎么工作的。这篇文章要做的就是把手教你用纯硬件电路实现一套完整的小车循迹方案。不用写一行代码不用烧录固件只用红外传感器、比较器、MOS管和电机这些基础元件搭出一辆能在黑白赛道上自己跑的小车。文章会给出完整的电路图级接线清单和实操避坑指南适合完全零基础的电子爱好者、中学生创客也适合那些一直用开发板却搞不清底层信号链路的同学。看完你能理解一件特别重要的事循迹这件事本质上就是把看到黑线变成控制电机停转的一整条物理信号链而这条链路用分立元件完全可以搭出来。1. 为什么放着单片机不用非要用纯硬件电路搭循迹小车1.1 纯硬件循迹与单片机方案的本质差异循迹小车用单片机来做核心逻辑其实非常简单传感器把黑白信号变成电压单片机用 ADC 读取这个电压判断当前传感器下面压的是黑线还是白纸然后通过 GPIO 控制电机驱动模块实现左右轮差速。这套流程听着很顺但有个问题单片机把中间的很多物理细节都吞掉了。传感器输出信号不去调、比较器阈值不理解、开漏输出为什么必须加上拉电阻也不知道最后作品跑起来了但那一整条模拟信号链路在你的认知里仍然是黑的。纯硬件方案完全不一样。从光敏三极管的电流变化到负载电阻上的电压分压再到 LM393 比较器把它判成逻辑 0/1最后驱动 MOS 管通断电机每一步都明明白白摆在电路图上是可以用万用表量出来、用眼睛看到的。1.2 这套方案适合什么人、能学到什么刚入门电子的新手焊一块板子能同时接触到传感器、比较器、功率驱动、电源去耦这些最核心的基础电路。想打循迹比赛但还没学过编程的同学不用等学会 C 语言周末就能让车在地上跑起来。老玩家用逻辑电路重新搭一遍体验一下电路即程序的原始快感还能顺手给孩子当教具。做完这台车你至少能带走三样东西一是对传感器信号调理的理解二是对比较器开漏输出为什么必须上拉这种底层层面的认知三是对电机驱动和地线规划的实际手感。后面你再回去学单片机、学驱动电路会发现很多原来靠背的东西突然就有直觉了。1.3 整体工作流程识色、判决、驱动三步拆解整个系统拆开看就三个环节和人的行为逻辑一模一样眼睛红外反射式传感器。红外发射管发光光线打到地面后反射回来被光敏三极管接收。白纸反射强黑线吸收红外光、反射弱于是光敏管电流就有了明显差异。大脑LM393 比较器。它的作用是把传感器输出的连续模拟电压和一个可调的阈值电压比较输出干净的 0/1 逻辑信号。地面是白的输出高电平压到黑线输出低电平。手脚N-MOS 管做低边开关。比较器输出的逻辑电平控制 MOS 管的栅极MOS 管导通或关断电机回路。哪一侧压到黑线哪一侧电机就停另一侧继续走车身自然拐回来。这套三步逻辑虽然简单却是后面一切循迹算法的基础。哪怕以后你上 PID、上摄像头最终动作本质还是检测偏差 → 计算转向量 → 控制左右轮速差。2. 从眼睛讲起红外反射式传感器的分压陷阱2.1 反射式光电传感器的工作原理传感器是整个系统的信号源头所有判断都建立在它的输出够不够稳定上。市面上最常见的反射式光电传感器是 TCRT5000内部集成了一个红外发射 LED 和一个光敏三极管。工作时红外 LED 持续发光光线照到地面后反射回光敏三极管光敏管导通程度随反射光强度变化等效为一个光控电流源。这里有个关键点光敏管是电流型器件必须外接电阻才能把电流变化转成电压变化。很多新手直接拿万用表去量光敏管两端,读到的是一堆莫名其妙的数值就是因为漏了负载电阻这一步。设置负载电阻时的判断逻辑是反射越强光敏管导通电流越大负载电阻上压降越大。至于取多大阻值取决于你希望信号怎么变化这就引出了下面这个非常容易翻车的选择。2.2 光敏三极管的两种接法选错直接翻车光敏三极管接法有两种输出信号的方向恰好相反。第一种是集电极输出式光敏三极管的发射极接地集电极通过一个负载电阻接电源从集电极取电压。反射强→电流大→电阻压降大→集电极电压被拉低。也就是说白纸对应低电压黑线对应高电压信号是反相的。第二种是发射极输出式光敏三极管的集电极直接接电源发射极通过负载电阻接地从发射极取电压。反射强→电流大→发射极电压升高。白纸对应高电压黑线对应低电压信号是同相的。我强烈建议用第二种也就是发射极输出式。原因很朴素信号方向直观调阈值时不容易把自己绕晕。比较器的逻辑设计成白线电压高于阈值则输出高电平、驱动电机转动读代码和查电路的时候都省一个反相器的脑子。2.3 发射管限流电阻与接收负载电阻的取值计算红外发射管和普通 LED 一样需要限流不然电流失控会加速老化甚至烧毁。以 TCRT5000 为例发射管的典型工作电流 20mA正向压降约 1.25V用 5V 供电时限流电阻 ≈ (5V - 1.25V) / 20mA ≈ 187Ω实际选型我会保守一点取 330Ω对应工作电流约 11mA。这样既保证了检测距离绰绰有余又不至于让发射管常年工作在极限状态。如果你发现检测距离不够可以换成 220Ω但别再小了。接收负载电阻则决定了信号的幅度和线性范围。10kΩ 在多数场合比较稳妥白纸反射时发射极电压能拉到 3V 以上黑线时只有 0.5V 上下黑白差距足够大留给比较器清晰的判决空间。如果想把检测距离拉远可以减到 4.7kΩ代价是功耗上升、黑线静态电压也会抬高阈值空间会被压缩。还有一个非常影响实际效果的问题传感器对环境光敏感。红外光敏管不光接收你发射管反射回来的红外光也接收太阳光和灯光里的红外成分。阳光直射下黑线区域的输出电压可能从 0.5V 涨到 2V 以上这时候无论你怎么调阈值都救不回来。解决手段不是换成更贵的传感器而是物理遮光——用黑色热缩管或电工胶带套在传感器周围只留一个朝下的小窗口。这个土办法效果好得惊人一定别省。3. 阈值判决与信号整形LM393 在这里比 LM358 靠谱得多3.1 比较器点名逻辑为什么要一个裁判角色传感器输出电压是连续变化的模拟量直接拿它去驱动 MOS 管极不靠谱电机启动电流大电源电压一跌落传感器输出也跟着飘驱动逻辑就乱了。中间必须加一个裁判把模拟量归化成干净的高低电平。LM393 就是干这个的。它是一个双通道电压比较器内部有两个独立的比较单元正好对应左右两个传感器。比较器的工作方式极其简单粗暴同相输入端电压高于反相输入端输出高反之输出低。这个逻辑门看起来简单但它决定了整台车的行为边界。3.2 开漏输出与上拉电阻新手最容易漏的一步LM393 的输出级是开漏结构这意味着它本身只能主动把输出拉到低电平却没法主动输出高电平。输出端的高全靠外部一个上拉电阻接到电源才能实现。我把话说明白一点如果你在 LM393 输出脚和电源之间不加这个上拉电阻那么输出端只有两个状态——低电平或者悬空。悬空对后级来说等于没接MOS 管栅极电位不确定电机可能转可能不转一切随缘。新手第一次焊完发现比较器不管输入怎么变输出都是 0十有八九就是漏了上拉电阻。上拉电阻的取值也别随手抄 10kΩ。经验值我会用 2.2kΩ4.7kΩ。选太小了静态功耗大选太大了输出高电平的驱动能力弱。关于这个阻值对后级驱动的影响下面驱动章节还要重点讲你先记着一个原则后级要电流上拉就别太大。3.3 电位器调阈值的标准流程阈值电压通过电位器调节。我常用的电路是 10kΩ 电位器两端分别接 5V 和地中间抽头接比较器的反相输入端。调阈值看似简单但很多人调了半天车还是乱跑原因是没掌握顺序。标准流程是三步把车放在白纸区域用万用表量传感器输出端电压记录下来。比如 3.5V。再把车推到黑线上量同一点的电压比如 0.6V。阈值电位器调到这两个值的中间偏黑侧比如 2.0V。为什么要中间偏黑因为循迹过程中车不可能永远正对赛道中心传感器从白区滑向黑线时信号有一个渐变过程。如果阈值卡在 1.2V 这种贴近黑线电压的位置白纸边缘的轻微抖动就可能误判成压线车就会画龙。留出余量系统更稳。3.4 正反馈迟滞让输出不再在临界点抖动还有一个值得加的小电路迟滞。原理是在比较器输出端和同相输入端之间跨接一个 470kΩ1MΩ 的大电阻形成微弱的正反馈。当输出翻转为高电平时反馈会稍微抬高同相输入端的参考点输出翻转为低时则相反。这个设计解决的是工程上一个很常见的毛病当传感器压在黑线边缘、信号在阈值附近缓慢晃动时比较器输出会在高低电平之间快速抖动轻则电机咔嗒响重则转向逻辑彻底紊乱。加了迟滞后输出一旦翻转就锁住当前状态必须等输入信号变化超过迟滞带宽才会再次翻转相当于给判决器加了滤波。有一点要提醒加了正反馈电阻后你在电位器上看到的阈值电压会被这个反馈叠加影响所以正确的做法是先调到大致位置再通过实测输出调整不要一边看抽头电压一边纠结为什么对不上。4. 电机驱动其实你根本不需要 H 桥4.1 循迹转向的本质同侧停轮差速很多新手一画电机驱动就想到 H 桥觉得必须让电机能正转、反转才算驱动。但循迹这个场景里你根本不需要倒车。循迹转向的本质是差速直道时左右轮同速前进需要向右拐时右边轮子停转或者明显减速左边轮子继续走车身自然右转。反过来亦然。而压到黑线对应的正是这一侧停轮所以最简单的纯硬件方案就是两个传感器各自控制同侧电机的通断。这一下子就把 H 桥省掉了。电机只需要单方向转动等效成随逻辑信号开关的阀就行。4.2 N-MOS 管低边驱动电路与基极电流计算我推荐的驱动方案是 N-MOS 管低边开关。以 AO3400 这种逻辑电平 MOS 管为例它只需要栅极电压达到阈值就能导通几乎不要求驱动电流和 LM393 的开漏输出配合非常舒服。具体接法MOS 管漏极接电机负极电机正极接电池正极MOS 管源极接地比较器输出经一个 1kΩ 电阻接到 MOS 管栅极比较器输出高电平时 MOS 导通电机得电转动输出低电平时 MOS 关断电机停止。这个电路简单到几乎不需要调试就能工作。如果你手头只有三极管 S8050也能做但有一个坑必须讲清楚三极管是电流驱动器件需要基极电流才能维持导通。算一下假设电机堵转电流 300mA三极管放大倍数 100基极电流至少需要 3mA实际要做到可靠饱和基极电流要按 23 倍余量准备也就是 69mA。而 LM393 开漏输出加上 10kΩ 上拉电阻时高电平只能提供 (5V-0.7V)/(10kΩ1kΩ) ≈ 0.4mA 的电流远远不够。这就是为什么很多人照抄教程用三极管驱动电机结果电机无力、发烫、转速起不来。要么把上拉电阻降到 1kΩ 以下强行喂电流要么直接换 MOS 管。我的建议是别为难三极管用 MOS。4.3 为什么很多人做的车一碰就乱跑地线回路问题电机是整台车里最脏的器件。启动瞬间电流能从几十毫安跳到几百毫安关断瞬间还会在电机两端产生反电动势。这些电流如果流经了比较器和传感器的地线就会在地线电阻上产生一个可观的压降把传感器阈值整个抬起来或压下去表现就是电机一启动车就开始乱判黑线。解决办法是地线分区。逻辑电路的模拟地、传感器地、比较器地走一条细细的线电机这种大电流回路单独走一条粗线两条线最后在电池负极单点汇合。别图省事直接把所有地都接到同一个覆铜区域多花一分钟布线能帮你省掉一整晚的排查时间。电机两端还有一个必装的元件续流二极管。把 1N5819 或 SS14 这样的肖特基二极管反并联在电机两端阴极接电机正极、阳极接电机负极。平时二极管反偏不导通MOS 关断瞬间电机电感产生的反向尖峰电压会通过二极管释放掉保护 MOS 管不被击穿。漏掉这个二极管运气好能跑一晚上运气不好第一脚急停就烧管。4.4 进阶玩法三路传感器与电阻网络差速两路传感器方案优点是简单缺点是转弯比较生硬因为只有转/停两种状态。想更平滑可以上三路传感器并且用电阻网络实现模拟差速。思路是这样三个传感器输出的逻辑信号通过不同的电阻叠加到 MOS 管栅极上。压到黑线的路数越多栅极驱动电压越低电机减速越明显。中间传感器只负责保持直行左右传感器负责转向偏差。这样车转向时不是突然停轮而是渐进减速轨迹会顺滑不少。这个玩法属于纯硬件里很有深度的内容做完基础版之后非常推荐自己搭一下感受感受。电阻网络的参数没有标准答案我建议从 10kΩ 和 4.7kΩ 开始试用万用表边量边调。5. 完整电路接线照着这张清单焊就能跑5.1 元件清单与选型备注下面这版清单是我反复试过、确定能跑通的配置所有元件都很常见电子市场甚至初中物理实验室里基本都能凑齐类别型号/规格数量备注反射式光电传感器TCRT5000 或同类型号2或直接买带模拟输出的传感器模块双电压比较器LM393 DIP-81内含两个比较器对应左右两路精密电位器10kΩ 3296W 或多圈2多圈电位器更好调起来精细N-MOS 管AO34002逻辑电平、低栅极电容限流电阻330Ω 1/4W2红外发射管限流负载电阻10kΩ 1/4W2光敏管发射极接地负载上拉电阻2.2kΩ 1/4W2LM393 输出上拉到 5V栅极串联电阻1kΩ 1/4W2保护 MOS 栅极续流二极管1N5819 或 SS142反并联在电机两端稳压芯片AMS1117-5.01逻辑部分稳定 5V 供电电解电容10μF/25V2稳压芯片输入输出端各一个瓷片电容100nF3LM393 电源去耦、稳压输入输出高频去耦电源开关拨动开关1串在电池正极回路减速电机3V6V 直流减速电机2尽量配同型号转速差异影响直行电池4 节 AA 电池盒或 2 节 186501电压 5V6V 区间即可5.2 按功能分块的逐脚接线表我用网络表的方式把每一根线都列清楚比贴一张大图纸更不容易漏线。先把网络定义好再往网络里挂引脚焊的时候照着这个表一个个连就不会乱。电源网络网络名包含的连接点说明VBAT电池正极、开关一端、AMS1117 的 IN 脚、左电机正极、右电机正极电池是粗电驱动电机5VAMS1117 的 OUT 脚、LM393 的 8 脚、两个电位器一端、两个红外 LED 阳极、两个光敏管集电极、两个上拉电阻上端稳压后的精电给逻辑电路GND电池负极、AMS1117 的 GND 脚、LM393 的 4 脚、所有负载电阻下端、电位器另一端、两个 MOS 管源极、去耦电容负极单点汇合逻辑地和电机地在电池负极汇合左路信号链网络名包含的连接点说明SENSOR_L左光敏管发射极、左 10kΩ 负载电阻上端、LM393 的 3 脚IN1左传感器信号接比较器同相输入VREF_L左电位器抽头、LM393 的 2 脚IN1-左路阈值接反相输入OUT_LLM393 的 1 脚OUT1、左 2.2kΩ 上拉电阻下端、左 1kΩ 串联电阻一端左路判决输出GATE_L左 1kΩ 串联电阻另一端、左 MOS 管栅极接到左电机驱动 MOS 栅极MOTOR_L-左 MOS 管漏极、左续流二极管阳极左电机负极接 MOS 漏极MOTOR_L左电机正极、左续流二极管阴极、VBAT左电机正极直接接电池右路信号链完全对称只需把 LM393 的 5、6、7 脚分别对应同相输入、反相输入和输出依次命名为 SENSOR_R、VREF_R、OUT_R、GATE_R、MOTOR_R-、MOTOR_R。集成稳压部分再加两个 100nF 瓷片电容一个紧贴 AMS1117 输入输出端一个紧贴 LM393 的 8 脚和 4 脚之间这些去耦电容是保证电压稳定和抑制高频噪声的关键别省。5.3 电源方案模拟电路与电机必须分开供电逻辑这套电路里有一个非常容易出现但极难排查的问题电机污染了逻辑电源。减速电机启动瞬间电流变化特别剧烈如果你直接用同一路 5V 又供传感器又供电机那传感器参考电压就会随着电机转速波动车越快的工况下越容易误判。正确做法是像上面的网络表一样把电源分成 VBAT 和 5V 两路。电机正极直接挂电池 VBAT逻辑电路走 AMS1117 稳压后的干净 5V。AMS1117 的最大输出电流有 1A供传感器和比较器绰绰有余但别想着顺手也喂电机——电机堵转时轻松超过 1A会把稳压芯片的电压拖垮连累整台车。如果你手里的电池是 7.4V 两节 18650也没问题AMS1117-5.0 的输入电压范围足够宽压差也小能稳定输出 5V。但别用 7805 代替7805 压差要 2V 以上6V 电池时输出已经压不稳了。6. 从焊好到跑起来实测调试中的那些玄学6.1 上电先测三个电压少测一个都有可能白忙一小时焊完板子别急着放地上跑先把车架起来悬空让两个轮子离地然后拿万用表做三件事测 AMS1117 输出是否为稳定的 5V。如果电压飘先查输入电压和电容。测两个电位器抽头电压是否在 1.5V2.5V 区间。如果电位器本身电压就不对那后面整个阈值一定是乱的。把传感器分别放在白纸和黑线上测比较器输出脚电压。白纸时应该接近 5V黑线时应该接近 0V。如果没有翻转检查是不是漏了上拉电阻或者光敏管接法不对。这三步全部通过这台车才具备上路的资格。6.2 距离与角度传感器安装位置对循迹的影响传感器的安装高度和间距会直接影响系统稳定性。TCRT5000 的最佳检测距离大概是 8mm10mm传感器底面离地高度保持在这个范围附近黑白信号差异最大。装太高反射光太弱黑白电压差变小装太低碰上地不平直接被磨坏。左右传感器的间距以黑线不能同时覆盖两个传感器为原则。赛道黑线通常 2cm 宽车宽 14cm 左右的话两个传感器间距放在 810cm 比较合适。这样车稍微偏向一边时只会有一个传感器压到黑线转向逻辑才清晰如果间距太窄两个传感器同时压线的情况频发小车会原地画圈。6.3 关键词排查表小车不正常时的快速定位跑起来之后如果出现问题别急着乱拆按下面这张表逐条排查故障现象优先排查点两个轮子都不转电池开关、AMS1117 是否输出 5V、LM393 是否加上拉电阻两个轮子都转但停不下来阈值电压是不是调得太高、传感器是否离地太远、遮光是否到位一个轮子永远不转单侧 LM393 输出是否翻转、续流二极管方向是否接反、MOS 管是否焊坏直行路段画龙抖动阈值余量不足、左右电机转速差太大、正反馈迟滞电阻没加压到黑线反应迟钝传感器检测距离太远、阈值太贴近黑线电压、弹簧接线接触不良电机一转逻辑就乱电机和逻辑共地问题、缺去耦电容、电池电压不足6.4 实测数据参考我给初学者设定的典型参数下面这组数据是我在标准白底黑线赛道上反复测出来的可以作为你第一次调试的起点值然后根据自己的场地微调测量点白纸读数黑线读数我的设置光敏管发射极电压5V 供电3.3V3.8V0.4V0.8V阈值设 2.0VLM393 输出电压≈4.5V≈0.05V上拉 2.2kΩ传感器离地高度——8mm10mm左右传感器间距——9cm电池电压——6V4 节 AA这套参数下小车在直线段跑得非常稳压线时转向干脆基本不拖泥带水。如果你的场地黑线更窄或者更宽只需要微调电位器不用改结构。7. 避坑清单这些坑我替你踩过别再踩第二遍这一节直接上干货是我从自己做废的三四块板子里总结出来的最值得写的九条经验每条背后都有真金白银的代价。上拉电阻永远别漏。LM393 开漏输出不自带高电平忘记上拉输出永远低车永远不动。这是新手翻车率第一名。LM393 的供电范围不要超。输入共模范围大致是 VCC 减 1.5V 以内直接用 8.4V 电池供电而不稳压传感器强反射时信号电压可能超过比较器输入共模上限输出会莫名其妙。稳压到 5V 永远是最稳的解法。电位器一定要选多圈的。单圈碳膜电位器调阈值时手一抖就偏出 0.5V跑起来整个行为就变了。3296W 多圈电位器贵不了几毛钱值得。电机两端续流二极管方向别接反。反着焊二极管在电机正常转动时就是短路状态一上电就烧。记住一句话阴极接电机正极阳极接电机负极。传感器一定要做遮光。太阳光、灯光里的红外成分会让黑线电压从 0.5V 涨到 2V 以上再贵的调试技巧也救不了。黑色热缩管套上立刻见效。别用逻辑去耦电容的场地省电机大电容。在 VBAT 和 GND 之间并一个 1000μF 左右的电解电容电机启动瞬间的电压跌落会小很多逻辑部分的工作环境会好得多。电机塞到 N-MOS 驱动之前先确认栅极逻辑方向。如果你用的是三极管驱动注意上拉电阻和基极电流的匹配问题用 MOS 就没有这个烦恼所以我主推 MOS。车速别一上来就追求快。电池电压你能控制但电机减速比、轮胎摩擦力这些都会影响循迹稳定性。先把基础版跑顺再想办法提速度否则你根本分不清问题是出在算法上还是机械上。调试时多备一组电池。4 节 AA 电池电量下降后LM393 的输出翻转点会跟着变看起来就像电路坏了。排除法先换电池能省大量时间。8. 最后我还想多说一句做完这台纯硬件循迹小车你会发现一件很有意思的事整条信号链里没有一个程序在运行但车的每一个动作都是可以被预测、被解释的。这种物理世界直接决定行为的感觉是学习单片机时很难体会到的。等这版车能稳稳跑完一圈之后你可以再往下玩加第三路传感器调出更平滑的差速把速度提上来研究一下路径的切弯线路甚至把摄像头装上去试试看用纯硬件能不能做更复杂的边缘检测。这条路走完再回头看单片机你脑子里那根从传感器到执行器的线是亮着的。最后分享一个我自己的惨痛教训电池盒和主板一定要用扎带固定牢别用热熔胶。我第一次试跑时车速并不快但过弯离心力还是把整块焊接好的板子甩飞了出去焊盘全折重新焊了一晚上。从那以后我的每台小车电池都是用扎带死死绑在底盘上的。祝你一次成功赛道见。
返回列表