一、概述 本双轮自动寻迹小车旨在实现对任意给定轨迹的快速精准跟踪,基于单片机控制技术,整合传感器检测、电机驱动及路径规划算法,构建具备高稳定性的自动寻迹小车。实物设计聚焦于硬件可靠性、软件逻辑的高效性及系统整体的安全性,适用于智能物流、教育科研及工业巡检等场景。 二、硬件设计方案 (一)主控芯片 选用STC89C52RC 单片机(STC 品牌,型号 89C52RC),其具备 8KB Flash ROM、256B RAM、3 个 16 位定时器 / 计数器及 6 个中断源,支持最高 24MHz 晶振频率,可满足多任务实时处理需求。搭配最小系统电路,包括 11.0592MHz 晶振与按键复位电路,确保芯片稳定运行。程序下载通过MAX232 电平转换芯片(MAXIM 品牌,型号 MAX232)连接 PC 端串口,支持 STC-ISP 软件离线下载。 (二)传感器模块 采用TCRT5000 反射式红外光电传感器,内置高功率红外发射管与高灵敏度光电晶体管,检测距离 4-13cm 可调,抗环境光干扰能力强。内置数模转换,将红外信号转换为数字量,实现对黑色轨迹线的精准识别。 (三)电机驱动模块 选用L298N 电机驱动芯片,支持双直流电机驱动,工作电压 5-46V,最大输出电流 2A。搭配12V/2000mAh 锂电池供电,通过 PWM 控制电机转速。电机选型为RS370直流减速电机(电压 12V,转速 3000rpm),满足双轮小车的驱动力与速度要求。 (四)电源模块 12V 锂电池经 7809(输出 9V)、7805(输出 5V)稳压芯片,分别为电机驱动、传感器及单片机系统供电。电容滤波网络(10μF 贴片电容 + 0.1μF 瓷片电容)降低电源纹波,确保各模块稳定工作。
三、软件设计方案 (一)软件设计与代码实现 软件基于 STC89C52 单片机开发,采用 C 语言编程,通过 Keil uVision 环境编译生成 HEX 文件,利用 STC-ISP 工具下载至单片机。代码核心逻辑围绕 5 路红外传感器(P0.0-P0.4)的信号采集、电机差速控制及 PWM 调速。 (二)传感器信号采集与状态编码 代码通过 P0 口读取 5 路红外传感器状态,未检测到黑线时引脚为高电平(逻辑 1),检测到黑线时为低电平(逻辑 0)。传感器状态被组合为 5 位二进制数存储于sensorValue变量,中间传感器触发时状态为0b11011(对应十六进制0x1B),右侧中间传感器触发时为0b11101(0x1D),左侧双传感器触发时为0b01111(0x0F)。代码通过Sensor_Read()函数完成状态采集,采用逐位赋值方式避免sbit类型直接移位运算,确保逻辑正确性。 (三)电机驱动与 PWM 调速 电机驱动采用 L298N 模块,通过 P2 口控制转向逻辑(IN1-IN4),并利用定时器 0 生成 PWM 信号调节转速(ENA/ENB)。定时器 0 工作于模式 1(16 位自动重装),配置初值实现约 100μs 定时周期,中断函数中通过pwmCounter计数器(0-100)生成 100Hz PWM 波形。左右电机占空比由cntPWM1(右电机)和cntPWM2(左电机)控制,直行时占空比设为 40%(cntPWM1=40、cntPWM2=40),偏左时右电机占空比提高至 55%-70%、左电机降低至 40%-55%,通过差速实现转向。 (四)路径跟踪逻辑实现 主函数循环调用XunJi()函数执行路径控制,通过switch-case语句匹配sensorValue状态。当状态为0b00000(全黑)或0b11111(全白)时执行停车逻辑;中间传感器触发(0b00100对应的flag=0)时调用Forward()函数双电机正转;左侧传感器触发(如0b10000对应的flag=3)时调用TurnLeft1()函数,右电机正转、左电机反转并设置较大转速差(cntPWM1=55、cntPWM2=70);右侧传感器触发时则调用TurnRight1()函数,通过右电机反转、左电机正转纠正偏移。代码通过固定转速差策略实现转向。
单片机源程序如下:
以上Keil代码下载:
双轮循迹小车.7z
(20.25 KB, 下载次数: 0)
原理图:无
PCB:无
|