本系统采用STM32单片机为核心,配合时钟晶振电路确保系统时序的准确性,复位电路用于系统复位。同时采用L9110S电机驱动模块来控制电机的运行,蜂鸣器用于发出声音提示,红外接收头用于探测路径和测速,遥控实现远程控制功能,以及电源供电电路为整个系统提供稳定的电力支持。
通过设计基于STM32为核心的单片机负责控制模型车在黑白的黑色轨迹上完成自主循线运行,该智能小车系统的主要组成部分如下:单片机控制系统、传感器模块、电源控制模块、电机和电机驱动模块等,其中一些所需材料如下所示的数据表1中。1、STM32最小系统模块
智能小车控制系统的核心模块为STM32F103C8T6嵌入式微控制器,它是一种嵌入式微控制器集成电路,由意法半导体公司(ST)开发的一款基于Cortex-M3内核的微型控制单元,STM32类型的嵌入式控制单元包含产品适用类型丰富、性价比高、库开发的方式简单且容易使用等优点。STM32类型实物图如图1所示:
图1 STM32实物图
2、路径识别模块
智能小车通过对路径的识别判断体现其“智能”,针对路径识别模块,目前拥有如下多个方案:
利用发光二极管和光敏电阻完成小车循迹,经验证该方案受到外界光源的影响较大,给小车循迹的检测带来不便。
红外光电传感器。此方法利用交流调制信号,可以在一定程度上降低外界光源的影响,经验证此方法的信噪比在一定范围内可控,反应时间在5us左右,效果较为理想。
采用CCD摄像头,缺点为对电源的要求较高,耗电较多,同时造成电源较为昂贵,数据处理速度较慢,实时性不好,导致智能小车的自我调整能力下降,很难在复杂多变,转向较多的道路轨道上行驶。
将上述的采集设想进行对照和剖析,综合考量各方案的优劣势,最终选定了红外光电传感器作为智能小车采集信号的终端,这一选择基于其合理的价格、出色的实时性能、迅速的反应速度以及能够实现自动循迹功能等。
光电传感器 :
红外探测器由于其发射功率大、抗干扰能力好等诸多优势,在元器件领域展现出了广阔的使用前景。红外探测器按其工作模式可大致分为主动式与被动式。主动式红外探测器自带红外光源,通过对光源的遮挡、反射、折射等光学手段可以完成对被探测物体位置的判别。被动式红外探测器本身没有光源,通过接受被探测物体的特征光谱辐射来测量被探测物的位置、温度或进行红外成像。
本系统将使用红外探测器对小车自身和障碍物之间的距离进行探测,显然,采用主动式红外传感器更为合理,可有效地减少成本,提高可靠性。
光电传感器的发送与接收:
红外线发射管是一种非常常见的电子元器件,在很多医疗设备上都有使用,跟发光二极管很相似,不过它发射的红外光是不可见光,这是人类眼睛无法看到的。随着发光二极管的电流增加了,它的亮度也会跟着变亮,同理,随着红外发射管的电流提高了,它所发出红外线的强度也会提高;但红外发射管也只能让电流单向导通。红外接收管内部是一个PN结,而这种PN结还具备对红外线敏感的红外光敏感特性,因此它是光敏二极管的一种,而与光敏二极管不同的是其只对红外的波段进行反应。常见的红外发送和接收电路如图2所示:
用于小车循迹的时候,一定要有黑色和白色的轨道,若让黑色轨道作为小车的循迹导引线,黑色轨道的宽度应当保持适中,既不过宽也不过窄,不然它无法较为准确的进行循迹。其原理是黑色轨道和白色轨道对红外光线的反射率不同,红外线遇到黑色轨道上后绝大部分被吸收,极少部分被反射,相反红外线照射到白色轨道上后绝大部分被反射,极少一部分被吸收,小车可以根据接收到的反射光的强度来判断车身所在的位置,确定该位置是偏离预定轨道[1]。一般情况下,循迹小车需要利用多个红外模块来实时探测,将探测收集到的轨道信息从不同角度进行判断,然后根据判断结果对小车的循迹进行调整,尽量按照正确循迹的方向来调整。
黑色能吸收大量的光线,有很强的吸光性,当红外循迹模块的发送部分发射红外线射在黑色轨道上时,黑色轨道会吸收大量的红外线,反射回来的红外光较少,从而导致产生的电流变小,调整可调电阻,接收检测引脚将输出高电平,循迹模块中的一个指示灯LED不亮;相反,在检测到白色部分的时候循迹模块的两个指示灯LED常亮。循迹总结如图3所示:
图3 循迹部分总结图
这个电路用于避障的时候,发射管先发射出一定频率的红外线,遇到障碍物时,红外线根据障碍物的颜色、形状、面积等因素会产生不同反射率的反射,而反射回来的红外线会被接收管接收。与此同时,红外信号会随着传送距离的加大逐渐衰减。红外发射管发出红外光照射后,由于只收到少量的红外信号被反射至接收管,因此所产生的电流较低,比较器LM393的二脚电压较三脚电压低,接收检测部分将输出高电平,因此障碍物距离小车较远;相反,当收到较多的红外信号被反射至接收管时,接收检测部分将输出低电平,障碍物距离小车较近。
所以,红外传感器的采集对路径识别模块所需的循迹和避障功能有着必不可少的作用。
3、测速检测模块
红外测速的核心思路:
(1)红外测速模块通电后,会发出红外线,利用测速盘对红外线进行遮光,并将测速模块与STM32相连的中断引脚触发中断。每次发生中断,就进入一次中断服务函数,对遮光次数进行累加,并将其记录下来。
(2)假设定时器为0.01s触发一次中断,每次中断将自动进入定时器中的中断服务函数,设置好一个中断次数的计数值,并使用判断语句得到定时器中断次数。例如,如果为100次,即为1s的时间定时,则执行速度的处理。
(3)计算公式:路程 = [ (总遮光次数 / 测速盘孔数) ×2πR / 1000 ]
测速的注意事项:(1)测速盘转的圈数公式:总遮光次数 / 测速盘孔数 = 测速盘转的圈数
(2)R即为车轮半径,单位为mm,除以1000转换单位为m,易于计算速度单位为m/s
(3)速度公式(t=1s):速度 = 路程/ t
红外测试过程如图4所示:
图4 红外测试过程图
4、电机驱动模块
智能小车搭载的直流减速电机不仅可以直接为智能小车的前进提供动力,同时还是确保小车平稳行驶的重要部件。STM32F103C8T6不能直接对直流电机的运作实行控制,因此,必须通过电机驱动模块实现直流电机的运行。电机驱动器接收来自STM32核心控制器的电机驱动PWM控制信号,经过功率放大电路产生脉冲信号来控制直流电机进行各种运动。L298N电机驱动模块原理图如图5所示:
图5 电机驱动模块原理图
5、控制系统的设计
电源管理模块:
因为控制系统中电路的控制单元、传感器和运动执行机构等组件,包括STM32F103C8T6、红外传感器、电机驱动等,在一般情况下,需要的电压和电流各不一样,而电池提供的电压电流往往无法直接满足这些硬件的需求。因此,应该采用升压或降压的方法,以保证各个硬件部件都能正常运行。由此电源管理模块则主要负责调节和配置智能小车的电源电压,确保小车的正常运行,必须保证各硬件设备都能够使用到稳定且符合要求的电压,从而保障其正常工作所需的能源供应。另外,智能车在作循线运动时,会根据轨迹的曲率做出加速或突然转向等运动;这时,电流的变化会很强烈,可能使电路系统发生不稳定运行状态。于是,在选用电源管理模块的时候,除了要关注诸如电流、电压等基本的参数之外,还应重点考虑模块是否具有较好的抗干扰性。电源管理模块原理图如图6所示:
图6 电源管理模块图
电源管理模块选用了干电池作为系统能源,通过降压稳压电路将电压稳定为5V左右,从而为舵机和单片机等组件提供稳定电力。在此基础上,构建了直流电机驱动模块,通过H桥及其相关元器件实现了直流电机的驱动功能。除此之外,为了检测小车的车速,未来本模块会配备红外传感器测量模块;另外,红外循迹技术则用于检测赛道。
经过三个集成稳压电路的处理之后,电源稳压电路中的电池电源被转化为二路单独的可调直流输出。其中一个直流输出专门用于为单片机及其相关外设提供稳定的工作电压,另一个直流输出则专供红外传感器使用。这种设计确保了在舵机和红外传感器运作时,不会对单片机的工作电源产生干扰,从而保证了系统稳定运行。可调直流输出也被用于驱动舵机的工作。同时满足各组件所需的不同电源需求。
6、传感器模块图7为4路循迹模块的实物图和相关介绍,该模块不仅可以用作循迹也可用于避障,本项目采用避障。
图7 4路循迹模块实物图
7、软件设计流程图智能小车上电后,各传感器不断的采集预定轨迹信息,并将采集结果送至单片机,单片机只有对I/0口进行不间断的扫描才能检测端口电平的变化,如果其输入/输出口电平发生变化,则单片机调用相关服务程序进行数据处理,并把处理结果反馈给智能小车的相应模块。对应于智能小车的各个模块根据反馈的结果做出判断,选择设计好的指令正常运行,以达到设计功能实现的结果。软件设计流程图如图8所示:
8、对智能小车方向的控制
智能小车的方向控制也就是对智能小车的旋转角度进行控制,不同的控制方法适用于不同的场景和需求,根据自身需求来选用和应用。在实际应用中,控制方式的选择要综合考虑小车的转向精度、反应速度等多种因素,并结合使用环境的特点,从而取得最佳的效果。
要让智能小车顺利地沿着规定好的路径运动,除了要求小车的转向系统具备稳定、顺畅的性能,还需要小车在直线方向上平稳前行。同时,在转向时能够基于电机设定好的不同速度,及时、准确地调整方向,以实现平滑转向。方向控制函数如下图所示:
9、开发制作与调试
智能小车的测试任务遵循“先部分后整体”的原则进行测试,首先对智能小车的基本组成部件进行分别测试,对测试结果不理想的部件及时进行调试或者更换,以保证各组成部件的精度达到要求,最后对整个智能小车进行功能上的最终测试。
在硬件调试的过程中,首要步骤是完成元器件实物板的焊接工作。紧接着应使用万用表对未焊接板子的电源部分进行仔细测量,其中最重要的问题是电源方面,是特别需要检查和确认的关键环节,以防止出现电源短路或正负极错误的问题。在确保电源部分无误后,接下来的任务是详细检查电路的连接情况。这包括检查是否存在虚焊或漏焊的情况,并核对元器件的安装是否符合规定要求。通过这些步骤,我们能够确保电路的连接和元器件的安装都是准确无误的,从而方便后续的调试工作。
在软件调试的过程中为了确保测试过程的顺利进行,应该对调试环境进行合理安排,并在各个测试点清晰地做好标记。根据传感器与电机控制的对应关系,分别测试出智能小车的循迹功能、精确定位功能、360度转身等功能是否能够满足设计要求。
调试完后,其后续功能可进一步补充、拓展和开发。