手把手教你设计电磁寻迹小车从国产MCU选型到LC检测方案实战最近有不少同学在准备电子设计竞赛特别是智能车相关的项目经常有人问我电磁寻迹的方案该怎么搞。正好我之前用国民技术的N32G430C8L7做过一个电磁寻迹小车今天就把整个硬件设计的思路特别是电源和电磁检测这两个核心部分掰开揉碎了给大家讲讲。这个项目其实源于一个小遗憾——错过了第十七届智能车大赛。后来借着训练营的机会自己动手做了一个一方面是想补上这个遗憾另一方面也是想试试国产的MCU到底怎么样。我同时买了N32G452CBL7和N32G430C8L7两款芯片用下来感觉都挺不错的。电磁寻迹简单说就是让小车沿着地面上通有特定频率交流电的导线跑。导线周围会产生交变磁场我们的小车通过检测这个磁场的强弱变化就能知道自己是偏左了还是偏右了然后自动调整方向。听起来是不是挺酷的咱们一步步来看怎么实现。1. 核心硬件选型与整体架构做智能车第一步永远是选好“大脑”和规划好各个模块。我的方案整体上分成了三块板子核心板、子板和驱动板。这样模块化设计调试和维修都方便。主控MCU我选择了国民技术N32G430C8L7。这是一颗基于ARM Cortex-M4F内核的国产芯片主频最高128MHz带硬件浮点单元FPU做信号处理计算速度有保障。64KB Flash和16KB RAM对于智能车控制来说也完全够用。最关键的是它性价比很高支持国产芯片也是我们工程师的一份心意。传感器方案这是电磁寻迹的核心。我没有用现成的电感传感器模块而是采用了LC谐振电路的方案。通过测量LC电路在交变磁场中的谐振频率或幅值变化来感知磁场强度成本低灵敏度还可以自己调。电源架构小车用7.2V或12V的锂电池供电但各个芯片需要的工作电压不同比如MCU要3.3V运放可能要5V所以需要一套可靠的多路降压电路。电机驱动负责驱动小车的两个直流电机实现前进、后退、转向。这部分我单独做了一块驱动板。理清了要做什么接下来咱们就深入到每一部分的硬件设计细节。2. 电源电路设计稳定是第一步电源是系统稳定运行的基石电源没设计好后面软件调得再精彩也白搭。我的三块板子都有各自的电源考虑。2.1 核心板电源SPX1117的稳妥之选核心板的任务是给MCU及其周边电路提供稳定的3.3V电压。输入是来自电池的7.2V-12V高压直流电。这里我用了经典的SPX1117-3.3稳压芯片。可能有同学会问更常见的AMS1117更便宜为什么不用它呢这里有个关键的细节最大输入电压Vin Max。SPX1117最大输入电压是20V。AMS1117最大输入电压是15V。我们的电池标称是7.2V或12V但在某些情况下比如电池刚充满电、或者电机急停时产生的反向电动势电压可能会瞬间升高。为了留出足够的余量防止电压尖峰烧毁稳压芯片我选择了输入耐压更高的SPX1117。虽然贵一点点但换来的是整个核心系统的安全。做硬件设计可靠性永远是第一位的。它的电路也非常典型在输入和输出端配上合适的滤波电容比如10uF和22uF就能得到一个干净、稳定的3.3V输出。从芯片手册给出的波形看它的输出纹波很小带载能力也足够驱动一个MCU系统。提示在布局时输入电容要尽量靠近芯片的Vin引脚输出电容靠近Vout引脚这样可以获得最好的滤波效果。2.2 子板电源两级降压供给传感器子板主要放置电磁信号处理电路比如运放、比较器这些电路可能需要5V和3.3V两种电压。因此我设计了一个两级降压电路。第一级12V/7.2V 降为 5V这里我用了LM2940-5.0这款低压差线性稳压器LDO。它最大能提供1A的电流压差低在1A输出时压差典型值也只有0.5V左右效率不错。它的数据手册有43页非常详细TI的官网就能下载到。对于这种经典芯片我的建议是养成读数据手册的好习惯里面的参数、典型电路、布局建议都是宝藏。第二级5V 降为 3.3V从5V降到3.3V我选择了RT9013-33。这颗芯片我非常推荐它是同步整流降压芯片效率比普通LDO高很多特别适合这种压差不大但可能有一定电流需求的场景。而且它的封装可以选得很小比如SOT-23能节省宝贵的PCB空间。它的输出纹波和动态响应性能都很好网上有很多评测视频大家可以去搜搜看。这种两级降压的架构既保证了效率又实现了电压隔离。即使后级的3.3V电路有异常也不容易影响到前级的5V和更前端的核心板。2.3 驱动板接口可靠连接的艺术驱动板负责控制电机电流比较大所以接口的可靠性很重要。我没有使用普通的排针排母而是选择了高质量的板对板连接器或者带锁紧机构的接插件。这样做的好处很明显接触电阻小大电流通过时发热少更安全。抗震防松脱小车跑起来震动很大带锁紧的接口不会轻易断开。插拔寿命长方便反复调试。驱动板的测试视频我放在了项目工程文件里大家可以清楚地看到电机在不同PWM信号下的响应情况。3. 电磁寻迹的核心LC检测方案解析这是整个项目的技术关键。为什么用LC电路简单来说它是一个成本极低、可自定义度很高的磁场检测方案。3.1 LC谐振原理与选频我们在导线上通的是20kHz举例的正弦交流电。导线周围会产生20kHz的交变磁场。LC检测电路的核心是一个电感和一个电容组成的并联谐振电路。这个电路有一个神奇的“谐振频率” f0计算公式是f0 1 / (2 * π * sqrt(L * C))当我们把LC谐振电路的谐振频率f0也设计在20kHz附近时它对这个频率的磁场信号就特别“敏感”。当小车上的电感线圈靠近通电导线时交变磁场会在线圈中感应出电动势从而影响LC电路的谐振状态。3.2 信号获取与处理LC电路感应到的信号是非常微弱的正弦波。我们需要把它变成MCU能读取的数字量。通常有两种路径幅值检测路径使用运算放大器运放对LC电路输出的正弦信号进行放大然后通过精密整流电路或峰值检测电路将其转换为与磁场强度成正比的直流电压。最后将这个直流电压送入MCU的ADC模数转换器引脚MCU就能读到一个代表磁场强弱的数字值了。优点可以量化磁场强度信息量更丰富。缺点电路稍复杂需要调运放。频率/数字检测路径将LC电路的信号经过一个电压比较器如LM393整形成方波。然后直接送入MCU的定时器输入捕获引脚。MCU通过测量方波的频率或周期变化来判断磁场强度。当LC电路处于强磁场中时其谐振点会偏移导致输出信号频率发生变化。优点电路简单抗干扰能力强数字信号。缺点对MCU的定时器功能有要求。在我的项目中为了获得更好的控制精度我采用了第一种方案ADC采样。在子板上你会看到为处理LC信号而设计的运放电路和滤波电路。通过ADC采集多路电感传感器的值比如左电感、右电感、前电感MCU就能判断出小车相对于导线的位置。3.3 电感传感器的布置通常我们会在小车前方水平布置两个电感线圈一左一右。当小车在导线正上方时左右电感感应到的磁场强度相等当小车偏向左边时左电感信号变强右电感信号变弱。MCU根据这个差值就能计算出转向的控制量。为了应对十字路口等复杂路径有时还会在车头垂直方向布置一个电感用来检测前瞻磁场。4. 软件控制框架与调试心得硬件是躯体软件是灵魂。有了稳定的电源和灵敏的传感器最后就需要一个高效的控制程序把它们统筹起来。我的软件主体是一个定时中断的循环。在主循环里程序大概做这几件事数据采集在固定的时间点比如每5ms启动ADC读取所有电感传感器的电压值。数据处理对ADC值进行滤波比如一阶低通滤波消除毛刺。然后计算左右电感的差值或者进行更复杂的融合计算。偏差计算与控制根据处理后的传感器数据计算小车当前位置与导线的“偏差”。这个偏差就是PID控制器的输入。PID控制输出偏差经过PID算法计算输出一个控制量。这个控制量最终转化为左右两个电机的PWM占空比。比如需要左转时就减小左轮PWM或增大右轮PWM。其他任务管理按键、调试信息输出通过串口等。注意PID参数的整定调Kp Ki Kd是个耐心活。我的经验是先在车上电静止时调“直立”如果有的话再在手上拿着慢慢推着跑时调转向最后再上车速闭环。参数要一点点加观察现象记录数据。整个项目做下来N32G430C8L7这款国产MCU给我的印象很好开发环境基于Keil MDK用起来也很顺手资源完全满足智能车需求。硬件设计上电源部分多花点心思预留余量传感器部分吃透原理调试起来就能事半功倍。电磁寻迹小车虽然是一个经典的竞赛题目但里面涉及的硬件设计、信号处理、控制算法知识非常扎实。希望这篇基于实际项目的解析能帮你理清思路少走一些弯路。剩下的就靠你动手去实践和调试了。遇到问题多查数据手册多示波器量波形调试的过程本身就是最好的学习。