基于STM32的循迹打靶智能小车硬件设计全解析
2026/9/21 0:42:56 网站建设 项目流程

简介:完整呈现一份“循迹打靶智能小车硬件设计”的毕业设计文档,适合通信工程、电子类专业的本科生或准备参加智能车竞赛的学习者参考。文档围绕核心控制板、信号检测、驱动电路三大模块,详细介绍了红外光电对管循迹与停车判断、数字光电传感器及光敏三极管靶标搜索、大功率MOSFET全桥电机驱动等内容,并提供方案选型依据与硬件调试注意事项,整体结构清晰,从系统方案到各功能模块层层展开。资源为1个doc文件,压缩包大小约1.03MB,仅含单份Word文档,方便直接阅读和二次修改。目前已有196人学习下载。通过这份文档,读者可以快速理清智能小车从传感器采集到电机控制的完整硬件链路,用于课程设计、毕业设计或竞赛预研,具有较强的工程参考价值。 循迹打靶智能小车这个题目,在工科毕业设计里属于“演示效果拉满”的一类选择。小车既能沿着黑线自己跑,又能在指定位置停下来对准靶子发射,整套流程走下来视觉冲击力很强,现场答辩也比较好讲。而且这个题目覆盖的硬件知识点非常全面:传感器采集、电机驱动、舵机控制、电源分配、PCB布线,几乎把本科阶段嵌入式硬件的重要环节全串起来了,很适合作为硬件方向的毕业设计。

这篇文章不打算贴大段代码,而是从硬件角度把方案选型、电路设计、机械装配、调试方法这四件事讲透。重点说两个核心部分:五路循迹传感器的选型和调试,以及打靶机构的云台与命中检测方案。如果你正在做类似的题目,或者打算用STM32做智能车,这篇文章应该能帮你少踩不少坑。

1. 先想清楚:这个题目到底要你做什么

1.1 功能需求拆解

循迹打靶小车从功能上看是三个模块的组合:循迹、打靶、载具平台。循迹解决的是“车怎么走”的问题,打靶解决的是“到了目标点之后怎么完成动作”的问题,载具平台则关系到底盘的驱动方式和整车的供电分配。

但很多同学忽略了一个隐藏需求:这个题目出给本科生,核心考察点并不仅仅是“能不能跑”,而是“硬件系统设计是否合理、是否可靠”。也就是说,评审老师会关心你的电源架构稳不稳、传感器布局是否科学、机械结构有没有明显隐患。因此硬件设计这部分一定要当重点来写,而不只是把模块买回来一插了事。

1.2 主控选型:为什么是STM32F103ZET6

主控是整个小车的大脑,选型上我强烈建议直接用STM32F103ZET6,而不是51单片机或者树莓派。原因很简单:51单片机做基础循迹小车确实够用,但加上打靶、云台控制、按键菜单、OLED显示、命中检测之后,片内资源就非常紧张了,而且51的PWM通道数量有限,驱动多个舵机和电机时容易捉襟见肘。

我对比过几类常见方案,整理了一个表供参考:

主控方案优点缺点适用场景
51单片机便宜、上手快、资料多外设资源少,无法应对多路并行控制只做基础循迹/避障
STM32F103C8T6性价比高、性能足够引脚数量偏少,扩展能力有限纯循迹、资源需求不高的场景
STM32F103ZET6引脚多、定时器多、资料极其丰富芯片体积略大,价格比C8T6稍贵需要同时处理循迹+打靶+显示+按键的完整系统
树莓派算力强,能跑视觉成本高、体积大、上电时序复杂,不适合课程设计视觉循迹等高端玩法

STM32F103ZET6在淘宝上一片大概二三十块钱,拥有112个GPIO引脚、8个定时器、5路串口,做这个题目可以说是绰绰有余。多出来的引脚用不用得上另说,但至少不会因为引脚不够而被迫改方案。更关键的是,这个芯片的参考设计、例程、原理图库在网络上数量极其庞大,哪怕遇到问题也容易搜到解决方案,这对毕业设计周期来说非常重要。

1.3 整体硬件架构规划

整套系统我建议分成六个硬件模块来设计:电源模块、主控最小系统、循迹模块、电机驱动模块、打靶云台模块、命中检测模块。主控负责采集五路循迹传感器的电平信号,通过PWM控制驱动芯片驱动两个直流电机,实现差速转向;到达指定区域后,主控再通过两路舵机调整激光发射器的俯仰和水平角度,完成瞄准并触发发射。

这套架构的逻辑很直接,主控居中协调,各个模块各司其职,无论是画原理图还是写论文,层次都很清晰。有一个点值得提醒:模块化设计不是把模块堆在一起,而是每一部分都要考虑接口的统一、供电的独立性以及信号的隔离。很多小车跑起来就复位,恰恰是因为供电之间互相干扰,这个问题在后面电源部分我会专门展开。

2. 循迹系统的硬件设计与调试

2.1 红外循迹模块选型:五路方案好在哪

循迹模块是整台小车感知路径的核心,常见的有红外对管、灰度传感器、摄像头三种。摄像头方案对主控算力要求高,一般不在本科毕业设计里用;灰度传感器精度好但价格较高;红外对管方案成熟、成本低、调试简单,是这个题目的首选。

选型时,我建议直接上五路循迹传感器,而不是两路或者三路。两路、三路方案只能判断“传感器在不在黑线上”,要识别弯道曲率、十字路口、断线区域时会非常吃力。五路循迹传感器的优点很明显:一是可以判断小车相对于黑线的偏移方向和偏移程度,方便做比例控制;二是检测到全部白色信号时,可以判定为十字路口或者丢线状态,程序上能做出针对性处理;三是传感器的横向覆盖范围更大,过弯时不容易因为瞬间丢线而失控。

实际使用场景中,五路传感器的中间一路作为主参考,左右各两路用于检测偏差。当小车偏离黑线时,哪一侧的传感器先压线,就说明车往哪边偏了,偏差程度可以通过“从中间到两侧”的传感器编号来估算。这种数据结构非常便于上层实现比例控制,让小车走得更平顺。

2.2 红外模块接线与阈值整定

五路循迹模块的接线并不复杂,模块上一般有VCC、GND以及OUT1到OUT5这五个信号引脚,直接接到STM32的GPIO输入即可。需要留意的是模块工作电压,大部分红外循迹模块标称3.3V到5V,如果你用STM32,建议把模块供电接到5V,信号输出再经过板上电平转换或者用开漏模式配合外部上拉,避免3.3V和5V之间的电平不匹配。

调试阶段最重要的一步是阈值整定。虽然模块上有电位器可以调节灵敏度,但为了程序判断稳定,常规做法是先把传感器固定在车头,放到白色地面上,通过串口打印得到每个通道的原始值;再把传感器挪到黑色电工胶带上,记录另一组值。取这两组值的中间值作为阈值,程序里每次采集到的值大于阈值就判定为白色,小于阈值就判定为黑色。

一个容易忽略的细节是环境光干扰。红外传感器在阳光直射下容易误判,因为太阳光里含有大量红外成分,会直接提高接收管的本底信号。所以测试尽量在室内进行,或者用遮光罩把传感器区域遮住。我见过一个同学在小车跑道上加了两块黑色亚克力挡板,把循迹传感器罩在里面,效果立竿见影,这个思路值得借鉴。

2.3 传感器安装高度与间距

传感器的安装高度和间距直接决定循迹的稳定性。离地太低容易刮蹭地面,离地太高则红外反射信号变弱。实测下来,传感器发射管端面与地面的距离控制在1厘米到1.5厘米之间最为合适。间距方面,如果传感器排列得太密,小车对微小偏移会过于敏感,容易左右摆动;排得太宽又可能在小半径弯道里同时丢线。一般五路传感器总宽度做成8到10厘米,每一路间隔约2厘米,对于常见的小车底盘来说表现最均衡。

机械安装时建议不要直接拧死在底盘上,而是通过铜柱或者3D打印支架做一个可调高度的结构。调试阶段先调节高度,观察车在直线和弯道上的表现,稳定之后再固定螺丝。很多同学跳过了这一步,直接固定好就开始调程序,结果反复改代码也解决不了问题,最后发现是传感器离地太高导致信号阈值一直不稳定。

3. 打靶机构的硬件实现:云台、激光与命中检测

3.1 云台与发射方案的取舍

打靶机构是整个题目里最有“项目感”的部分,也是答辩时评委最感兴趣的地方。常见的实现方案有两种:一种是两自由度舵机云台加激光发射器,另一种是舵机控制弹射装置发射软弹。我强烈推荐激光方案,原因有三个:第一,激光瞄准的指向性好,云台转多少角度,激光点就移动多少,调试时非常直观;第二,命中检测容易做,不需要复杂的碰撞传感器;第三,安全可控,低功率激光不会对人和设备造成伤害。

云台结构建议买成品的二自由度云台,也就十几块钱,由两个舵机组成,一个负责水平旋转,一个负责俯仰。有的同学为了省钱只用一个舵机,把激光器固定在一个方向,这样也能完成打靶,但演示时车身必须完全正对靶子,稍微偏一点就打不中,功能上打了很大折扣。

舵机本身建议选MG996R这种金属齿轮舵机,虽然比SG90贵一些,但扭矩更大,带动云台时不会因为负载过大而抖动。如果你用的是SG90,也不是不行,但云台组装时要尽量轻量化,激光器和固定座的重量要控制住。

3.2 靶面命中检测:光敏电阻方案

命中检测这个环节,我看到不少同学用的是摄像头或者OpenMV,其实完全没有必要。一个简单的光敏电阻加一个固定电阻组成分压电路,就能完成命中检测。激光打在靶面上时,如果正好打在光敏电阻的感光面上,它的阻值会急剧下降,分压点的电压随之变化,STM32通过ADC采集到这个电压变化就能判断是否命中。

具体电路可以参考这个思路:光敏电阻一端接3.3V,另一端接一个10k欧姆的固定电阻到GND,中间抽头接到单片机的ADC引脚。平时环境光下,光敏电阻阻值比较大,ADC电压偏低;当激光直射时,阻值降到几百欧姆,ADC电压会明显升高。程序里设置一个合适的阈值,超过阈值就判定为命中。

实操中有一个坑:环境光变化会干扰这个检测。如果靶面放在窗边,阳光变化会导致ADC电压漂移,误判率很高。我给这套系统加了一个小技巧,把光敏电阻贴在一个约一厘米深的黑色圆筒里,这样只有正面射来的激光才能照到感光面,环境光被筒壁挡住,可靠性大幅提升。

3.3 舵机控制与中值校准

舵机的控制原理很简单,标准舵机需要20毫秒周期的PWM信号,脉宽在0.5毫秒到2.5毫秒之间,分别对应0度和180度。STM32的定时器直接输出PWM就能控制,不需要额外驱动芯片。

调试舵机时最容易栽跟头的是中值校准。大部分舵机在1.5毫秒脉宽时应该回到中位,也就是90度位置。但不同品牌的舵机存在个体差异,可能脉宽1.5毫秒对应的实际角度是87度。所以第一次拿到舵机时,不要直接装到云台上,先用程序输出1.5毫秒脉宽,观察舵机臂是否处于中位,如有偏差,通过程序微调脉冲宽度来补偿。这个校准完成后,再把云台装上去,否则后面打靶怎么调都偏。

舵机供电也要特别注意。舵机启动瞬间电流非常大,MG996R在堵转时可能超过2安培。如果把舵机直接接在主控的5V引脚上,一个启动冲击就能把单片机干复位。正确的做法是舵机单独从电源模块取电,与主控供电隔离,但地线必须和主控共地,否则PWM信号会乱掉。

4. 电源、电机驱动与PCB布局

4.1 电源树设计:全车最容易被忽视的环节

电源系统是智能车稳定运行的基础,但也是最容易被忽视的环节。很多同学用一块充电宝给主控供电,再用另一块电池给电机和舵机供电,结果两套系统之间地电位不一致,传感器信号不断跳变,排查起来非常痛苦。

我建议的电源方案是这样:统一使用一块3S航模锂电池,也就是11.1V,或者三节18650串联。电池输入先进入两个独立的降压模块,第一个降压模块输出稳定的5V,给主控、传感器、OLED显示屏供电;第二个降压模块也输出5V,但单独给舵机供电。电机的供电则直接取自电池的11.1V,通过电机驱动芯片调速。

各模块的电流需求不同,整理成一个电源分配表会更直观:

负载模块电压需求典型电流供电来源
STM32F103ZET6主控3.3V50mA左右5V经AMS1117降压
五路循迹传感器5V每路20mA左右5V降压模块
OLED显示屏5V或3.3V20mA主控5V或3.3V
TB6612电机驱动逻辑部分3.3V到5V10mA主控5V
直流减速电机电池电压启动瞬间可达1A以上电池直供
MG996R舵机5V堵转可达2A独立5V降压模块

电源树的核心理念是“大电流负载和敏感电路分开供电,但必须共地”。很多主板一上电就反复重启,十有八九是电机启动时瞬间拉低了共用电源的电压,单片机还没跑起来就掉电了。分开供电之后,即使舵机堵转,主控供电依旧稳定,问题就基本解决了。

4.2 电机驱动选型:TB6612和L298N怎么选

底盘电机驱动最常用的芯片有两个:L298N和TB6612。L298N模块体积大、发热严重、压降也大,但它自带稳压输出和端子排,接线方便,适合第一次做项目的同学。TB6612体积小、效率高、压降低,输出能力足够驱动普通直流减速电机,更适合集成到自己的PCB上。

如果你计划自己画PCB,建议直接用TB6612。它的控制逻辑简单:两个PWM引脚控制左右电机的速度,四个方向引脚控制正反转。关于PWM频率,电机驱动常用的频率是10kHz到20kHz,过高会增大驱动芯片的开关损耗,过低则电机会发出尖叫声。实测下来,15kHz左右是一个比较舒适的工作点。

有一个硬件细节:TB6612的VM引脚接电机电源时,不能直接接到STM32的5V引脚上,而是应该接电池电压或者是另一个专门给电机供电的5V电源。很多同学画板子时图省事,VM接到板载5V上,电机稍微加负载芯片就进入热保护,小车变得一耸一耸的,这个问题排查起来特别隐蔽。

4.3 PCB布线要点与硬件开机电路

毕业设计如果要求自制PCB,有几个布线细节值得留意。首先是电源走线,电机驱动部分的电源线和地线必须加宽,至少2毫米以上,因为在电机启动瞬间电流比较大,线窄了会形成明显的压降;其次是信号线和电机线不要平行走太长的距离,避免PWM的高频信号被干扰;最后是STM32的晶振引脚周围不要走其他信号线,否则可能引起主频不稳。

按键一键硬件开机电路,是热搜索里很多人问的一个点。它的本质是用一个PMOS管做一个自锁开关:按键按下时,电池电压通过PMOS给系统供电,同时主控检测到电源就绪后,输出一个GPIO高电平维持PMOS导通,实现松手不断电。再次按键时,主控检测到关机信号,撤销GPIO,系统断电。这个电路不算复杂,但对于使用锂电池的小车来说非常实用,可以避免每次都拆电池断电。

5. 联调流程、典型问题与排查记录

5.1 上电调试的正确顺序

整台小车做完PCB之后,第一次上电千万不要直接跑主程序。我习惯按“先电源、再传感器、再执行机构”的顺序分级排查。先只给主控上电,用万用表确认各点电压正常,3.3V和5V没有异常波动;再给传感器上电,通过串口打印确认五路循迹数据能正常变化;最后才接电机和舵机,测试PWM输出是否正常。

这个顺序看起来很简单,但非常有效。有的同学一上电就发现OLED屏幕花了,于是怀疑屏坏了,换了好几块屏都没解决,最后发现是电源纹波太大导致SPI信号不稳定。如果一开始就先验证电源质量,这个问题能省下好几个小时。

5.2 典型问题与排查速查表

把我在调试过程中遇到过的几类典型问题整理成了下面的表,基本上把循迹打靶小车常见的坑都覆盖到了:

故障现象可能原因排查思路
小车循迹时冲出赛道循迹阈值不准、传感器离地过高串口打印原始值,重新整定阈值,降低传感器高度
小车在原地左右摆动传感器过于敏感、控制参数偏大检查五路传感器是否有一路信号抖动,适当增加舵量死区
过十字路口时方向错乱程序未处理全白状态增加丢线处理逻辑,让车按当前方向巡航
舵机在云台上来回抖动舵机供电不足、未共地改用独立电源供电,检查地与主控是否连接
一启动电机单片机就复位电机启动电流拉低主控电压电机独立供电,加大电源滤波电容
激光打靶偏差大舵机中值未校准、云台固定松动先做舵机中值校准,再紧固云台螺丝
命中检测时好时坏环境光干扰、光敏电阻未做遮光加黑色遮光筒,重新整定ADC阈值

5.3 几个值得养成的调参习惯

最后分享几个经验性的技巧,属于那种文档里不会写,但实际调试非常管用的内容。

第一个习惯:在PCB上预留串口调试引脚。这个看似多余的接口,在联调阶段能救命。通过串口把五路循迹传感器的原始值、ADC检测值、舵机目标角度实时打印出来,就能在电脑上直接监控小车内部的运行状态,不用靠猜来排查问题。

第二个习惯:机械结构先用热熔胶临时固定,等姿态调准了再上螺丝。云台、传感器支架这类部件,一开始往往需要反复调整位置,直接拧螺丝会很麻烦。先用热熔胶固定,测试没问题后再打好螺丝,可以大幅减少返工时间。

第三个习惯:打靶系统的校准要有固定流程。先把舵机调到中值位置,然后在靶面上做标记,控制激光器依次扫过靶面的几个基准点,把对应的舵机PWM值记录到程序里。不要每次试射都凭感觉微调,那样可能越调越偏。

我个人在做这类项目时体会最深的一点是:硬件部分真正的难点不在于单个模块“能工作”,而在于所有模块协同工作时还能保持稳定。供电干扰、机械松动、信号电平不匹配,这些问题在单模块测试时根本不会暴露,一联调就全部冒出来。所以做毕业设计时,建议大家不要急着往前赶进度,把“上电不抖、走线不偏”这八个字先做扎实,后面所有程序逻辑都是在这份稳定性上长出来的。只要硬件底盘稳住了,循迹打靶跑通只是时间问题。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询