基于STC89C52单片机的红外循迹智能寻迹车设计
1. 引言
1.1 研究背景
1.1.1 智能小车的技术发展趋势
- 随着人工智能、机器视觉、自动控制等技术的发展,智能小车的研究具有重要的意义。
- 智能小车能够在工业、农业、医疗、物流等领域中发挥重要作用,如物料搬运、生产线自动化、货物运输、仓库管理等。
- 智能小车需要综合运用多种技术,如传感器技术、图像处理、机器学习、运动控制等,这些技术的综合应用既带来了挑战,也提供了创新的可能性。
1.1.2 智能小车的应用前景
- 智能小车在可预见的未来,将在城市的交通、物流的配送、仓储管理等多个领域发挥越来越重要的作用。
- 智能小车的发展将推动相关技术的发展和应用,为人们的生活和工作带来更多的便利和效益。
- 智能小车的研究作为智能行业的代表,更能通过其特点反应智能社会的前进方向,大学将智能小车作为实践对象,为学生和相关研究人员研究智能化提供了相当有特点的参考对象。
1.2 研究意义
1.2.1 技术创新的推动
- 研究智能小车可以推动技术创新,因为智能小车的设计它涉及了很多种的重要技术,其中最为代表的有传感器技术、机器视觉、自动控制、人工智能等。
- 这些技术的研究将会推动相关领域技术创新和发展。
1.2.2 生产效率的提升
- 智能小车大大提高了生产效率,它可用于生产工业流程,运输物流企业、相关安全技术检测等应用领域,智能小车作为较成熟的综合技术正在逐步替代人工,并通过其高精确性,快速移动能力,提高工业生产效率。
- 通过减少人力成本,可以降低企业在大多数情况下的运营维护成本。也因为其精确的投送能力,可以极大程度减少人工操作的安全风险和错误率,从而使生产作业可靠性得到提升。
1.2.3 社会智能化的推动
- 智能小车的研究对于社会智能化、民生生活等等方面都有重要意义。
- 当社会智能化达到一定程度时,智能小车将会为人们提供更加便捷、舒适的生活服务,让人们的生活品质可以有更大程度的升级。
1.3 国内外研究现状
1.3.1 国际研究现状
- 在美国,Google公司对自动驾驶汽车领域进行了深入研究,开发如Waymo等先进的自动驾驶技术,Uber与Volvo、Toyota在无人驾驶技术领域进行了深度合作。
- 日本的本田公司开发了ASIMO智能机器人以及其他如UNI-CUB等智能小车产品。
- 德国的奔驰(Benz)和宝马(BMW)等公司也在智能小车领域进行了深入研究,主要侧重于提高车辆的自动驾驶能力和安全性能。
1.3.2 国内研究现状
- 如百度公司开发了自动驾驶汽车Apollo,并在无人车和智能小车领域进行了深入研究和实践。
- 腾讯公司在自动驾驶和无人车领域也进行了大量探索,也致力于智能交通系统的开发。
- 自主导航技术研究所专注于自主导航机器人的研究和开发,已经推出多款机器人产品。
- 北京理工大学等多所高校和研究机构在智能小车领域进行了多年的研究和实践,推动了智能寻迹车技术的快速发展。
2. 智能寻迹车设计思路
2.1 寻迹车思路分析
- 设计智能寻迹车的思路首先从明确其应用场景和功能需求开始,设定性能指标如速度和精度。
- 接下来选择合适的微控制器、传感器、电机驱动模块、电机和电源等硬件组件,同时设计车架和轮子等机械结构。
- 软件方面,编写微控制器固件,实现传感器数据处理和寻迹算法,如PID控制或模糊控制,并考虑通信协议。
- 将硬件和软件集成后进行调试和测试,优化系统性能。
- 最后,对智能寻迹车进行调试,并确保设计的智能寻迹车既实用又可靠。
2.2 智能寻迹车的主要硬件选择
- STC89C52,红外寻迹模块,L298N,四轮车底板,四电机,杜邦线若干。
2.3 寻迹车模型建立
- 智能寻迹车可采用TC1508S对小车四电机进行控制,依靠STC89C52单片机通过烧录寻迹程序实现寻迹。
- 寻迹的直接实现部分是小车前部的两路寻迹模块,通过两路红外寻迹模块发射的红外线探测黑线,并对返回的信号处理。
3. 智能寻迹车的硬件部分
3.1 主控器STC89C52
- 使用STC89C52微控制器设计智能寻迹车的优点在于其强大的处理能力和丰富的外设接口,能够高效地处理传感器数据,实现复杂的控制算法,同时支持多种通信协议,便于与其他系统组件进行交互。
- STC89C52系列微控制器具有灵活的时钟系统和低功耗模式,有助于延长电池寿命,适合于移动和便携式设备。
- 此外,STC89C52的广泛社区支持和丰富的开发资源,如STC89C52配置工具和HAL库,可以加速开发进程,降低设计复杂性。
3.2 电机控制TC1508S
- TC1508S是一款双通道直流电机驱动芯片,它具备双通道内置功率MOS全桥驱动、多种控制模式、超低待机和工作电流、低导通电阻、高连续输出电流能力、宽电压工作范围、紧凑的SOP-16封装、低功耗和良好的热性能等特点。
- 这些优点使得它非常适合用于精确控制直流电机,同时保持高效率和低能耗,适用于多种电机控制应用。
3.3 红外传感器硬件部分
- 智能循迹小车其实就是在车的底部安装一对红外发射接收一体管的传感器。
- 当行驶在深色的轨迹内,红外发射器发射出的光深色吸收,这样信号接收端接收不到射出红外光,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),证明在设定的轨迹内。
3.4 减速电机
- 本设计采用DC 3V-6V直流减速电机实现智能寻迹车,优点在于其低电压运行特性,这不仅提高了系统的安全性,减少了对操作人员的潜在风险,而且降低了对电源的要求,使得使用电池供电成为可能,从而简化了电源管理。
- 此外,直流减速电机通常具有较高的扭矩输出,即使在低速下也能提供稳定的动力,这对于需要精确控制速度和方向的寻迹车来说是非常重要的。
- 最后,这种电机的结构简单,易于集成到寻迹车的设计中,且成本相对较低。
4. 智能寻迹车的软件部分
4.1 开发环境
- Keil μVision4 是一个专为嵌入式系统开发设计的集成开发环境,它提供了一个全面的工具集,包括源代码编辑器、项目管理器、编译器、汇编器、调试器、库管理器和连接器等。
- 这些工具共同支持从编写代码到生成可执行文件的整个开发流程。
- Keil μVision4 特别适合 STC89C52 系列微控制器的开发,它允许开发者创建和管理项目,编译和调试代码,并生成最终的 HEX 文件以烧录到目标硬件。
4.2 红外寻迹软件部分及功能实现
- 智能小车可以分成三个部分——传感器部分、控制器部分、执行器部分。
- 控制器部分:接收传感器部分传递过来的信号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。
- 执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。
- 传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。
- 智能寻迹车寻迹功能的实现,需要三部分的协同作用。
4.3 PWM调速
- 小车在行驶过程中,通过差速装置来实现左右轮子的转速差异,以实现转向。
- 差速转向的原理是通过合理分配驱动力,使得内外轮的转速不同,从而实现车辆的转向,同时保持车辆的稳定性和操控性。
- 若要实现差速转向,则要通过PWM输出不同的模拟电压,便可以使电机达到不同的输出转速。
4.4 电机驱动电路
- TC1508S电路图如下所示:
- TC1508S的INA接STC89C52的P2.3,INB接P2.2,INC接P2.1,IND接P2.0,OUTA,OUTB,OUTC,OUTD分别接四个电机,注意电机接线时不能接反,否则小车无法行驶,GND接地。
- 当上电后,通过接收外部控制信号(INA,INB,INC,IND)控制直流电机的启动、停止、转向和速度调节。
5. 智能寻迹车的功能调试
5.1 实现功能的流程设计
- 智能寻迹车的初始化程序是一个综合多个关键组件的准备过程。
- 它包括电机的状态检测与参数设置,确保驱动系统正常运作;
- 传感器初始化与校准,为导航提供精确的环境感知;
- 系统参数设定,以定义车辆的运动特性;
- 延时函数初始化,用于精确控制程序执行时序;
- LED显示与按键输入设备的初始化,增强用户交互与状态显示;
- 以及循迹模块的初始化,实现精确路径追踪。
- 只有先进性初始化,才能进一步调用函数实现功能。
5.2 系统仿真实现
- 上电即可寻迹。
- 当红外寻迹模块检测到黑线输出低电平,仿真接口呈现蓝色。
- 当红外寻迹模块检测到白线地面输出高电平,仿真接口呈现红色。
- 本设计用的是四轮小车,采用的是STC89C52单片机。
- TC1508S控制四个电机。
- 左边断开表明左侧遇到寻迹线左转,左前轮和左后轮倒转,右前轮和右后轮继续正转。
- 右边断开表明右侧遇到寻迹线右转,左前轮和左后轮继续正转,右前轮和右后轮倒转。
- 为了实现上电即寻迹的功能,本设计首先对STC89C52单片机的程序进行了编写。
- 程序中包含了对红外寻迹模块的读取,以及对TC1508S电机驱动模块的控制逻辑。
- 程序的主循环中,不断检测红外寻迹模块的输出状态,根据检测到的黑线或白线来决定小车的运动方向。
- 当红外寻迹模块检测到黑线时,输出低电平,此时小车应该沿着黑线行驶。
- 为了实现这一点,本设计编写了相应的控制代码,使得当检测到低电平时,小车的左前轮和左后轮倒转,而右前轮和右后轮继续正转,这样小车就会向左转,从而沿着黑线行驶。
- 相反,当红外寻迹模块检测到白线时,输出高电平,此时小车应该避开白线。
- 本设计同样编写了控制代码,使得当检测到高电平时,小车的右前轮和右后轮倒转,而左前轮和左后轮继续正转,这样小车就会向右转,从而避开白线。
- 为了直观地显示小车的运行状态,本设计使用了仿真接口来呈现不同的颜色。
- 当小车检测到黑线时,仿真接口呈现蓝色;当小车检测到白线时,仿真接口呈现红色。
- 这样,可以直观地看到小车的运行情况,以及它是否正确地沿着黑线行驶。
- 在实际测试中,发现小车能够准确地沿着黑线行驶,并且在遇到白线时能够及时做出反应,进行避障。
- 此外,本设计还对小车的运动速度进行了调整,使其在寻迹时既不会过快导致错过黑线,也不会过慢影响效率。
5.3 实现过程遇到的问题
- 在初次组装小车时,首先从不同渠道收集到实现寻迹车功能所需的元件,如TC1508S,红外寻迹模块,STC89C52单片机,小车电机等。
- 组装小车时,电机的接线尤为复杂,需要借助电焊工具,如果焊错重新焊接十分麻烦,本项目在设计过程中并没有使用电焊,而是直接连接杜邦线与电机接口,这样不仅保证电机的正常运行,而且在需要调整连线方向时可以轻易修改。
5.4 小车电机检查
- 小车如果无法正常行驶,可能没有给电机正常供电,可以拆开小车重新组装,再次确认后,若仍然无法正常行驶,可以确认不是电机上电的问题,将单片机电源接通,如果仍然无法运转。
- 此时判断是程序编码不正确,再次确认程序并重新烧录单片机,小车仍无法行驶。
- 在这个时候,考虑三种可能,第一是没有正确编写代码,第二是电源没有给电机进行供电,第三小车组装有误。
5.5 小车寻迹功能实现
- 小车实现基本功能后,开始尝试寻迹功能。
- 了解到小车的沿黑线寻迹依靠于红外寻迹模块对黑线白线识别的反馈。
- 当红外寻迹传感器识别到黑线时,输出低电平,当传感器识别到白线时,输出高电平,利用输出信号不同,可以使小车通过左拐右拐躲避白线而寻找黑线。
- 当左侧检测到黑线,右侧也检测到黑线,小车直行;当左侧检测到黑线,右侧检测到白线,小车左拐;当小车左侧检测到白线,右侧检测到黑线,小车右拐;当左侧检测到白线,右侧检测到白线时,小车停止。
- 遵循上述思路对小车进行编程。
- 小车仍无法正常实现寻迹功能。
- 当小车放在白线时无反应,放在黑线时则只能直行。
- 重新进行编程,当小车左右都检测到白线时令其更改为保持前进,小车因此可以正常在非黑线行驶,但是仍无法解决小车无法沿黑线正常行驶的问题。
- 多次实验发现,发现当小车接收到信号时小车来不及对信号做出反应,下一个信号就已经来到,因此需要添加延时程序,因此需要为单片机设置定时器,并在主程序中加入初始化程序,以实现其对信号的及时反应。
5.6 小车性能优化
- 解决了小车的寻迹功能后,开始进行优化小车的性能。
- 为了使小车在复杂的环境中也能稳定运行,需要对程序进行进一步的调试和优化。
- 在本设计中,首先对红外传感器的灵敏度进行了调整,确保它能够准确地识别黑线和白线。
- 通过调整传感器的阈值,减少了误判的情况,提高了小车的寻迹准确性。
- 接下来,优化小车在转弯时的稳定性问题。
- 当小车进行急转弯时,由于惯性作用,它有时会偏离预定的轨迹。
- 为了解决这个问题,本设计引入了PID控制算法,通过调整比例(P)、积分(I)和微分(D)三个参数,使小车在转弯时能够更加平稳和准确。
- 经过多次试验和调整,小车的转弯性能有了显著的提升。
- 舵机控制采用反馈调节,由程序控制PID反馈调节,不存在实际控制硬件进行专门反馈调节,所以PID调节数据经过测试后设置,只为符合实际情况,并不是所有PID控制都为此数据。
- 此外,注意到小车在长时间运行后,电机的温度会上升,这可能会影响电机的性能和寿命。
- 为了解决这个问题,本设计还在小车的底部安装了散热片,以帮助电机散热。
- 在完成了这些改进后,再次对小车进行全面的测试。
- 小车不仅能够稳定地沿黑线行驶,而且在遇到障碍物时能够及时做出反应。
- 在复杂的寻迹路径上,小车也能够灵活地转弯和调整方向,表现出良好的适应性和稳定性。




