智能小车(C题)
摘 要
本智能小车以MSP超低功耗单片机系列MSP430F149为核心,完成在规定场地内实现两车交替超车领跑的功能。在机械结构上,本智能小车选取大功率RP5坦克车体,具有动力性能强、底盘稳定性高、可原地转圈、转弯灵活等特点。选用L298N驱动芯片控制电机,反射式红外发射-接受器作为黑线检测模块的传感器,nRF905作为无线通信模块,组成智能小车系统。基于可靠的硬件设计和稳定的软件算法,实现题目要求,而且附加实现显示两车距离、行驶时间等扩展功能。
关键词:MSP430;检测黑线;超车;智能小车。
1
一、系统方案
1、总体方案描述
本系统以MSP超低功耗单片机系列MSP430F149为核心,由12V电池供电,选用L298N驱动芯片控制直流电机,反射式红外发射-接受器ST168作为黑线检测模块的传感器,NewMsg_RF905作为无线通信模块,LCD液晶显示模块作为显示模块,组成智能小车系统,如图1所示。
图1 总体系统框图
2、方案设计与比较 (1)电机驱动模块
方案一:采用大功率三极管,二极管,电阻,电容等元件。
采用上述元件搭建两个H桥,通过对各路信号放大来驱动电机,原理简单。但由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,很难精确控制。
方案二:采用L298N驱动芯片。
L298N芯片是较常用的电机驱动芯片。该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性能,可用单片机的I/O口提供信号。其优点是集成度高,电路简单,控制方便可靠,体积小,效率高,具有较高的性价比。
综合分析:方案一虽然原理简单,但是实际操作性不大,运行不稳定,而方案二则具有电路简单,控制方便,效率高等多处优点,符合本系统要求,因此选用L298N驱动芯片作为电机驱动模块。
(2)黑线检测模块
方案一:采用可见光发光二极管和光敏二极管
采用普通可见光发光管和光敏管组成的发射-接收电路。其缺点在于易受到环境光源的影响,即便提高发光管亮度也难以抵抗外界光的干扰。
方案二:采用反射式红外发射-接收器ST168
采用反射式红外发射-接收器ST168,直接用直流电压对发射管进行供电。其优点是可以实现实时控制,而且灵敏度可调,受外界干扰比较小。
方案三:采用脉冲调制的红外发射-接收器
在方案二的基础上采用脉冲调制发射。由于环境光干扰主要是直流分量,因此如果采用带有特定交流分量的调制信号,则可在接收端采用相应的手段来大幅度减少外界干扰。缺点是实现复杂﹑成本高。
2
综合分析:根据本题目中对探测地面的要求,由于传感器可以在车体的下部,发射、接收距地面都很近,外界光对其的干扰都很小。因此在基本不影响效果的前提下,为了简便起见,选用反射式红外发射-接受器ST168作为黑线检测模块的传感器。
(3)无线通信模块
方案一:采用2262发送芯片,2272接收芯片。
通过编码芯片PT2262发出编码信号,解码芯片PT2272接收到信号后,进行数据处理。但由该芯片所做成的无线模块不稳定,所需的电压大,功耗高,抗干扰能力差。
方案二:采用nRF905无线传输模块
NewMsg_RF905无线传输模块接收发送功能合一,收发完成中断标志。它在室内有良好的通信效果,抗干扰性能强,有很强的扰障碍穿透性能。另外它内置硬件8/16位CRC校验,数据传输可靠稳定,降低系统开发难度。
综合分析:方案一中的2262、2272芯片所需电压大,功耗高,抗干扰能力差。而方案二中的nRF905接收发送功能合一,抗干扰性能强,数据传输可靠稳定,符合本系统要求,因此选用nRF905无线传输模块作为无线通信模块。
二、理论分析与计算
1、信号检测与控制
本系统中的信号处理主要是对黑线信号检测与控制,使小车能检测到黑线,判断不同种类的黑线,并做出相应的反应,使小车达到相应要求指标。因此本系统中利用多个反射式红外发射-接受器按一定方式排列,使其能检测黑线,把信号传给单片机,通过算法控制小车产生相应反应。
(1)反射式红外发射-接受器的安装
根据跑道分析所得,跑道中的黑线可以分为两类,其中一类为跑道四周的2cm边界黑线,另一类为跑道中的1cm转弯标志黑线和超车标志黑线。因此在小车最前端并排装两个ST168,用于检测转弯标志线和超车标志线,小车两边分别各装一个ST168,用一根小木杆(长约5cm)延伸到小车两侧,用于检测跑道四周的边界黑线,ST168分布如图2阴影部分所示。
图2 ST168分布图
(2)黑线信号的检测与处理
当小车在木板上行驶时,装在小车上的红外发射管发射红外线信号,经木板反射后,被接收管接收,一旦接收管接收到信号,输出端将输出低电平;当小车行驶到黑线时,红外线信号被黑色吸收后,将输出高电平,从而实现了通过红外线检测信号的功能。将检测到的信号送到单片机的I/O 口,当I/O口检测到的信号为高电平时,表明红外线被地上的黑线吸收了,表明小车处在黑线附近;同理,当I/O口检测到的信号为低电平时,表明小车行驶在木板上。
当小车前端检测到黑线时,则表明小车正在通过转弯标志线或者超车标志线,则通过单片机的相应算法,控制小车转弯或者超车,并且在一定时间内屏蔽两侧的ST168,防止出现错误。
当小车左边检测到黑线时,表明小车左边处于边界处,相应的I/O口检测的信号为高电平,则小车向右拐(左边电机转动,右边电机不动)一定幅度;同理,当小车右边检测到黑
3
线时,小车向左拐(右边电机转动,左边电机不动)一定幅度。
因此小车通过将多个反射式红外发射-接受器按一定方式排列,并根据单片机的相应算法协调工作使小车完成相应功能,达到最好的效果。
2、两车之间的通信方法
本系统为了使两辆小车能更准确的完成交替超车领跑功能,在两辆小车上分别装有无线通信模块,使两车之间能互相通信,其中无线通信模块为nRF905无线传输模块。
nRF905有两种工作模式,分别是ShockBurstTM接收模式和ShockBurstTM发送模式。nRF905的工作模式由TRX_CE,TX_EN和PWR_UP三个引脚决定。nRF905管脚图详见附录图1,nRF905管脚功能说明表见附录表1。 (1)ShockBurst TX 发送流程
①当微控制器有数据要发送时,通过SPI接口,按时序将接收机的地址和要发送的数据传给nRF905,SPI的速率在通信协议和器件配置时确定。
②微控制器置高TRX_CE和TX_EN,激发nRF905的ShockBurstTM发送模式。
③nRF905的ShockBurstTM发送:
a、射频寄存器自动开启;b、数据打包(加字头和CRC校验码);c、发送数据包;d、当数据发送完成,数据准备引脚被置高;
④AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低。 ⑤当TRX_CE被置低,nRF905发送完成,自动进入空闲模式。
注意:在ShockBurstTM发送中,一旦发送数据过程开始,无论TRX_CE和TX_EN是高或低,发送过程都会被处理完。只有前一个数据包发送完,nRF905才会接受下一个发送数据包。 (2)ShockBurst RX 接收流程
①当TRX_CE为高,TX_EN为低时,nRF905进入ShockBurstTM接收模式。 ②650us后,nRF905不断监测,等待接收数据。
③当nRF905检测到同一频段的载波时,载波检测引脚被置高。
④当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校位,然后把DR引脚置高。
⑤微控制器把TRX_CE置低,nRF905进入空闲模式。
⑥微控制器通过SPI口,以一定的速率将数据移入微控制器内。 ⑦转移完毕,nRF905将DR和AM引脚置低。
⑧nRF905此时可以进入ShockBurstTM发送模式、ShockBurstTM接送模式或关机模式。 注意:当正在进数据包接收时,TRX_CE或TX_EN引脚状态发生变化,nRF905立即改变其工作模式,数据包会丢失。当微处理器接收到AM引脚的信号后,就可以判定nRF905在正在接收数据包,可以决定让其继续接收数据包或进入另一个工作模式。
3、节能方案
本系统按题目要求,小车必须用电池供电,不能使用外接电源,因此为了能使小车按规定跑道行驶数圈,必须采取一定的节能方案。为了达到节能效果,小车的核心控制芯片采用了TI公司生产的MSP430单片机,它是一个特别强调低功耗的单片机系列,尤其适用于采用电池供电的长时间工作的场合。
MSP430降低功耗最重要的因素是应用MSP430时钟系统,最大化LPM3(低功耗模式3:CPU、MCLK、SMCLK被禁止,DCO被禁止、直流发生器被禁止,ACLK活动)的时间。当实时时钟功能和所有中断被激活时,典型的LMP3电流消耗少于2uA。32KHz晶振用于ACLK的时钟,DCO用于CPU激活后的突发短暂运行,因此达到低功耗的效果,从而使小车更节能增加电池的使用时间。
三、电路与程序设计
4
1、电路设计
(1)黑线检测模块
采用 ST168反射式红外光电传感器,连接图如下图3所示。当检测到黑线部分时,接收管不能接受到反射光,接收管截止,则输出端为高电平。当检测到白色部分时,接收管能接受到反射光,接收管导通,则输出端为低电平。寻迹模块输出端接到单片机的I/O口作为输入信号,Vcc接+5V。一共有4个传感器,所以有4个输入I/O口,分别为P4.3~4.0。
图3 反射式红外光电传感器连接图
(2)电机驱动模块
电机的驱动芯片选用 L298N 作为驱动芯片。工作稳定电机驱动信号由单片机提供,信号经过光耦隔离后,传至PWM控制芯片L298N,通过L298N的输出脚与两个电机相连,见图4。
图4 L298连接方法
2.程序设计
(1)系统软件的简单介绍
系统的软件设计分为对双直流电机的控制、对传感器信号的处理,无线通信的处理和显示控制。其关键部分在于对直流电机的控制,前轮电机的正转和反转分别决定小汽车方向的左拐弯、右拐弯及直线行驶。在检测黑线过程中,单片机始终使用增量控制的方案,即在调整拐弯或速度控制以及纠偏的过程中,路面信号采样速度、行驶速度、方向调整幅度等都是需要随时调整的,而且都是以一定步进值连续增加或者连续减少这些参数值的。传感器部分的控制主要负责从外界采集信息,不同的信息对应不同的处理方案。无线通信部分的控制主要负责接收和发送相关信息,并控制小车采取相应的处理方案。液晶部分的控制主要负责实时显示相关有效信息。
(2)系统软件的简单结构和流程图
本系统软件设计采用原子模块循环法,原子模块循环法的原理简述为:整个程序体即为最小循环体,不断进行循环执行,直至任务结束。
程序体分为采集模块、处理模块、判断模块、存储模块、输出模块。①采集模块通过模拟开关采回传感器的输出值。②处理模块对采集模块采回的值进行处理。③判断模块是程序
5
流程的核心,通过不同的策略对数据进行一系列运算,判断出当前小车的状态及下一步的运动方案,产生运动的指令。④存储模块可将处理过的采集值及判断模块发出的指令按次序进行记录,方便历史数据回调。⑤输出模块作用是将判断模块产生的指令送入各种执行模块。系统流程图如图5所示。
图5 系统流程图
在每一个采样周期内程序将按流程运行一遍,直到判断模块发出结束指令,程序结束。这种程序具有很强的通用性。对于题目中不同的区段要求,只需改变判断模块中的策略.传感器的个数改变时可相应改变判断模块的输入的数据即可,且这种方法使程序可靠,策略执行效率较高。基本算法流程图见附录图2。
四、测试方案与测试结果
1.测试方案及测试条件
(1)按仪器道具清单表准备相关仪器和道具,见表1所示。
表1 仪器道具清单列表
名称 秒表 模拟跑道 要求 精确0.01秒 根据题目要求定制 功能 测试时间 提供赛道 (2)测试基本要求:①把一辆小车放在规定位置起跑,观察小车是否独立绕跑道跑一圈而不掉落,再按相同方法测试另一辆小车;②把两辆小车放在跑道规定位置(甲车在前,乙车在后),让它们同时起跑并开始计时,观察两辆小车是否在规定区域超车,当甲车到达终点线时,停止计时并记录时间;③重复以上操作3次,记录相关数据。
(3)测试发挥部分:①把两辆小车放在跑道规定位置(甲车在前,乙车在后),让它们同时起跑并开始计时,观察两辆小车是否在规定区域超车,当乙车第一次达到起点/终点标志线时,记录时间并让两辆小车继续行驶,②在第二圈时同样观察两辆车是否在规定区域超车,当乙车第二次到达起点/终点标志线时,记录时间并让两辆小车继续行驶,如此重复操作,记录甲车第三次到达起点/终点标志线的时间以及乙车第四次到达起点/终点标志线的时间,并观察是否在规定区域超车,做好记录。③从新设定甲车起始位置(离起点/终点标志线前进方向40cm处),乙车不变,让两辆小车同时起跑并开始计时,让它们按跑道行驶四圈,观察两辆小车每圈是否在规定区域超车并记录,最后记录乙车第四次到底起点/终点标志线时的时间。
2.测试数据 (1)基本要求:
①观察甲车和乙车分别从起点标志线开始,在行车道是否能各正常行驶一圈。
②甲、乙两车按跑道规定位置同时起动,观察乙车是否通过超车标志线后在超车区内实
6
现超车功能,并先于甲车到达终点标志线,完成第一圈乙车超过甲车功能。
③记录甲、乙两车的行驶时间,记录见表2。
表2 基本部分数据记录表 次数 1 2 3 两车能否行驶正常一圈 能否在超车区超车 能 能 能 能 能 能 行驶时间 25.45s 24.67s 26.22s (2)发挥部分: ①在完成第一圈超车后,甲、乙两车继续行驶第二圈,要求甲车通过超车标志线后要实现超车功能,并先于乙车到达终点标志线,即第二圈完成甲车超过乙车,实现了交替超车领跑。记录甲、乙两车在第二圈行驶的时间。
②甲、乙两车继续行驶第三圈和第四圈,并交替超车领跑;记录两车行驶的时间。 ③重新设定甲车起始位置(在离起点标志线前进方向40cm范围内任意设定),实现甲、乙两车四圈交替超车领跑功能,记录行驶时间,记录见表3。
表3 发挥部分数据记录表 次数 1 2 3 行驶二圈的时间 53.76s 55.33s 57.92s 行驶四圈的时间 改变甲车位置后行驶四圈的时间 108.32s 114.46s 110.92s 113.71s 109.12s 111.43s 3.测试结果分析 (1)基本部分
①甲、乙两辆车分别能从起始标志线开始,在行车道正常行驶一圈,完全达到要求。 ②乙车基本能在超车区完成超车,并先于甲车到达终点标志线。
③行驶时间每次均不相等。由于小车机械结构的不完全稳定、木板表面的摩擦和电池电压的不稳定,使小车每次行驶时路线不一致,产生一定误差,导致每次时间不一致,但基本稳定在一定范围内。
(2)发挥部分
①在第二圈时,甲车能在超车区完成超车,并先于乙车到达终点标志线。
②在第三圈和第四圈时,甲车和乙车基本能在超车区完成交替超车领跑。但是在第四圈时,甲车超车会产生一定误差,如不能完全进入超车区,与乙车相互摩擦。首先由于在长时间的行驶后,电池电压不稳定,对小车速度产生影响使其产生误差;其次小车内部机械结构的不稳定,在长时间行驶后也会使其产生误差;最后由于每圈行驶路线都不可能完全一致,使小车行驶一圈就产生一定误差,随着行驶圈数的增加,误差不断堆积,使其在最后存在较大误差。
③重新设定甲车起始位置(在离起点标志线前进方向40cm范围内任意设定),基本实现甲、乙两车四圈交替领跑功能,但是在最后一圈存在一定的误差,原因见结果分析发挥部分②。
五、结束语
该设计通过单片机控制PWM直流电机驱动以及与多个传感器的配合应用,实现了两辆小车按规定跑道进行交替领跑功能。在经过多次实验后,基本达到了预期的效果。但是其智能化程度还远远不够,车体设计以及程序设计方面都有待于继续完善,以使两辆小车行驶速度更快,更平稳。
7
附录
1、nRF905管脚图见图1。
图1 nRF905管脚图
2、基本算法流程图见图2。
图2 基本算法流程图
8
3、nRF905管脚功能说明表见表1。
表1 nRF905管脚功能说明表 管脚 名称 管脚功能 说明 1 VCC 电源 电源+3.3V—3.6V 2 TX_EN 数字输入 TX_EN=1 TX模式 TX_EN=0 RX模式 3 TRX_CE 数字输入 使能芯片发射或接收 4 PWR_UP 数字输入 芯片上电 5 uCLK 时钟输出 本模块该脚废弃不用,向后兼容 6 CD 数字输出 载波检测 7 AM 数字输出 地址匹配 8 DR 数字输出 接收或发射数据完成 9 MOSI SPI接口 SPI输出 10 MISO SPI接口 SPI输入 11 SCK SPI时钟 SPI时钟 12 CSN SPI使能 SPI使能 13 GND 地 接地 14 GND 地 接地 9
因篇幅问题不能全部显示,请点此查看更多更全内容