2012科技创新与实践期末小组报告 第八组 动手实践,小车实验 作者:5120109029许诗祎、5120109028林易、5120309702武治宸、5121209021陈昱仲 一、引言 (一)课程简介 本课程名称为科技创新与实践,以动手实践为主要形式,希冀藉由本小车实 验,认识基础程式语言改写与电路板焊接,了解从计画到实践的过程,不只要学 习如实详记实验报告与多次尝试,更要培养小组合作精神,本组活动名称即反应 本课程最主要核心与实验主体内容。 (二)任务说明 Stop Start 图1-小车任务示意图 1.蓝色区域外围任一点出发(如图1所示) 2.由蓝色区域内任一黑点切入(如图1所示) 3逆时针转一圈,经过八个黑点,过程必须在蓝色区域进行(如图1所示) 4经过八个黑点后,以任一路线使小车停入绿色圆圈内,且车头车尾方向有限 制(详见备注) (三)备注 <45° 1.AB线段长3米,BC线段长2米(如图1所示) 2.蓝色区域为黑色往外延伸0.5米的环状带 3.绿圈大小为半径0.5米 4.车头车尾连线与纬线夹角必须小于45度(如图2所示) 图2-夹角小于45度为成功
动⼿实践,⼩⻋实验 作者:5120109029许诗祎、5120109028林易、5120309702武治宸、5121209021陈昱仲 ⼀、引⾔ (⼀)课程简介 本课程名称为科技创新与实践,以动⼿实践为主要形式,希冀藉由本⼩⻋实 验,认识基础程式语⾔改写与电路板焊接,了解从计画到实践的过程,不只要学 习如实详记实验报告与多次尝试,更要培养⼩组合作精神,本组活动名称即反应 本课程最主要核⼼与实验主体内容。 (⼆)任务说明 1.蓝⾊区域外围任⼀点出发(如图1所⽰) 2.由蓝⾊区域内任⼀⿊点切⼊(如图1所⽰) 3.逆时针转⼀圈,经过⼋个⿊点,过程必须在蓝⾊区域进⾏(如图1所⽰) 4.经过⼋个⿊点后,以任⼀路线使⼩⻋停⼊绿⾊圆圈内,且⻋头⻋尾⽅向有限 制(详⻅备注) (三)备注 2012科技创新与实践期末⼩组报告 第⼋组 1 1. AB线段⻓3⽶,BC线段⻓2⽶(如图1所⽰) 2.蓝⾊区域为⿊⾊往外延伸0.5⽶的环状带 3.绿圈⼤⼩为半径0.5⽶ 4.⻋头⻋尾连线与纬线夹⾓必须⼩于45度(如图2所⽰) 图1-⼩⻋任务⽰意图 图2-夹⾓⼩于45度为成功
2012科技创新与实践期末小组报告 第八组 二、智能小车系统(组成与软件) (一)智能小车的组成:(如下图3所示) 1.金属车身*1 2.塑料车轮*4 3.带变速箱的直流电机*2 4.电路板: (1)车头触碰检测板 (2)车尾触碰检测板 (3)充电板 (4)电机驱动板 (5)行进控制板 事头检测板 塑料车轮 电机驱动板 塑料车 行进控制板 金属车身 塑料车轮 充电板 一料车 車尾检测板 图3-小车组成 5.AA镍氢充电电池1.2V*4 6.AC/DC转换器*1(50Hz变压器型,输出12VDC,500mA) 7.零组件: (1)EH连接线*1条 (2)螺丝、螺杆、螺柱丶垫片*1套 (3)电子元器件*1套 (二)软件: 1.Keil程序编写软件 2.STC程序烧写软件 3.Silicon Lab小车连接电脑驱动程序软件
⼆、智能⼩⻋系统(组成与软件) (⼀)智能⼩⻋的组成:(如下图3所⽰) 1.⾦属⻋⾝*1 2.塑料⻋轮*4 3.带变速箱的直流电机*2 4.电路板: ! ! (1)⻋头触碰检测板 ! ! (2)⻋尾触碰检测板 ! ! (3)充电板 ! ! (4)电机驱动板 ! ! (5)⾏进控制板 5.AA镍氢充电电池1.2V*4 6.AC/DC转换器*1(50Hz变压器型,输出12VDC,500mA) 7.零组件: ! ! (1)EH连接线*1条 ! ! (2)螺丝、螺杆、螺柱、垫⽚*1套 ! ! (3)电⼦元器件*1套 (⼆)软件: 1.Keil程序编写软件 2.STC程序烧写软件 3.Silicon Lab⼩⻋连接电脑驱动程序软件 2012科技创新与实践期末⼩组报告 第⼋组 2 图3-⼩⻋组成
2012科技创新与实践期末小组报告 第八组 三、路线设计与行进过程分解 刚开始我们的设想是让小车从直道进入,在U型弯处通过左右轮的速度差来实现转 弯,直接转过180度,再直行·走完一圈后进入圈中。但是经过反复试验,发现无论 在程序中如何改变小车左右轮的速度,小车的速度始终没有改变,两轮只能以全速旋 转。为了实现转弯,只能使左轮停转,经过测速,计算,我们发现小车在左轮停转的 状态下做圆周运动的半径小于1米,无法转过U型弯,走过的路线只能如下图4所示。 0.5米 图4 图5 为了能够完成任务,我们经过反复讨论和思考,最后决定把U型弯再次细分,分成3 个部分,先使小车左轮停转,转弯,车头转过90度后,两轮一起全速转动,直行一 段距离,左轮再次停转,转弯,转过90度后进入直道,经过反复的实验与测量最终 测算出了中间直行以及转弯的时间,确定了绕跑道跑的路线,也成功地把误差控制在 了0.5米以内,如上右图5所示。 最后为了让小车能够停在跑道的中心,并使车头平行于直道,我们起初想让小车在最 后一次转弯后,延长转弯时间进入跑道内部,然后再使小车改变转弯方向,右转走到 跑道中心位置,同时车头方向也能平行于跑道。然而经过实验我们发现,突然改变转 弯方向会使小车打滑·经过思考,我们决定在左转和右转之间加一段直行来进行缓 冲,最终达到相同的目的。 经过多次实验,我们最终确定了路线,从直道外0.5米处进入直道,走完直道后小车 左转,转过90度后,直行,再左转90度进入第二条直道,直行,走完直道后按第一 个U型弯的过程重复一遍,延长最后一段转弯时间,是小车进入直道,然后直行,接 近中心时,右转,使车头与跑道平行,停车。最终路线如图6所示。 直行 图6
三、路线设计与⾏进过程分解 刚开始我们的设想是让⼩⻋从直道进⼊,在U型弯处通过左右轮的速度差来实现转 弯,直接转过180度,再直⾏,⾛完⼀圈后进⼊圈中。但是经过反复试验,发现⽆论 在程序中如何改变⼩⻋左右轮的速度,⼩⻋的速度始终没有改变,两轮只能以全速旋 转。为了实现转弯,只能使左轮停转,经过测速,计算,我们发现⼩⻋在左轮停转的 状态下做圆周运动的半径⼩于1⽶,⽆法转过U型弯,⾛过的路线只能如下图4所⽰。 ! ! ! ! 为了能够完成任务,我们经过反复讨论和思考,最后决定把U型弯再次细分,分成3 个部分,先使⼩⻋左轮停转,转弯,⻋头转过90度后,两轮⼀起全速转动,直⾏⼀ 段距离,左轮再次停转,转弯,转过90度后进⼊直道,经过反复的实验与测量最终 测算出了中间直⾏以及转弯的时间,确定了绕跑道跑的路线,也成功地把误差控制在 了0.5⽶以内,如上右图5所⽰。 最后为了让⼩⻋能够停在跑道的中⼼,并使⻋头平⾏于直道,我们起初想让⼩⻋在最 后⼀次转弯后,延⻓转弯时间进⼊跑道内部,然后再使⼩⻋改变转弯⽅向,右转⾛到 跑道中⼼位置,同时⻋头⽅向也能平⾏于跑道。然⽽经过实验我们发现,突然改变转 弯⽅向会使⼩⻋打滑,经过思考,我们决定在左转和右转之间加⼀段直⾏来进⾏缓 冲,最终达到相同的⺫的。 经过多次实验,我们最终确定了路线,从直道外0.5⽶处进⼊直道,⾛完直道后⼩⻋ 左转,转过90度后,直⾏,再左转90度进⼊第⼆条直道,直⾏,⾛完直道后按第⼀ 个U型弯的过程重复⼀遍,延⻓最后⼀段转弯时间,是⼩⻋进⼊直道,然后直⾏,接 近中⼼时,右转,使⻋头与跑道平⾏,停⻋。最终路线如图6所⽰。 2012科技创新与实践期末⼩组报告 第⼋组 3 图4 图5 图6
2012科技创新与实践期末小组报告 第几组 四丶程序设计 小车行进路程为两条直线加两个半圆加一条弧线(到达轨迹中心点)。 在直线设计上,只要简单地使用$=V*t就能解决问题。通过在地面上5秒试跑通过 的瓷砖数乘以每块瓷砖的宽度我们得到了小车全速行进时的大致速度。再结合两段直 线的长度我们就得到了各自所需时间。 在半圆路线设计上,我们起初的想法是通过改变两只前轮的速度来实现。不过可 能因为小车某些功能故障,仅仅改变程序中的速度参数对实际速度影响微乎其微。之 后我们改变想法,直接将转弯时内侧轮速设为0(由于地面运行时外轮转动带动小车 从而带动内轮,所以当内轮速度为0时小车并不会原地打转)。可此设定太过极端 (形成的半圆半径太小),不能完成半径为1米的半圆轨迹。经过思考,我们将半圆 拆分成两个四分之一圆加上一小段直线,从而实现小半径半圆向大半径半圆的转换。 经过多次改变时间参数,两个半圆路线均成功。 在弧线设计上,我们也遇到了一个困难。因为最后停止时小车方向要与轨道直线 平行,而纵向距离只有一米,所以调整位置时不能有过大的弧线半径。一开始,我们 将小车左转到差不多位置时把右轮设为逆向旋转,结果竟然因为抓地力不够外加电量 不足导致小车原地不动,于是只能把右轮设为0速度,而小车始终不能到达理想方 向。然后我们想到了通过改变上半圆轨迹的方法来达到理想位置。我们在第一个半圆 当中添加多一小段弧线使得第二条直线与第一条直线不平行从而略微缩小第二的半圆 的半径。到了第二个半圆我们取消了原本设定的一小段直线并增长转向时间从而到达 起点后继续想圈内左转。通过这个方法我们增大了最后调整方向时的缓冲,使得右转 的时间变大,于是恰当地到达终点。如下图所示
四、程序设计 ⼩⻋⾏进路程为两条直线加两个半圆加⼀条弧线(到达轨迹中⼼点)。 在直线设计上,只要简单地使⽤s=v*t就能解决问题。通过在地⾯上5秒试跑通过 的瓷砖数乘以每块瓷砖的宽度我们得到了⼩⻋全速⾏进时的⼤致速度。再结合两段直 线的⻓度我们就得到了各⾃所需时间。 在半圆路线设计上,我们起初的想法是通过改变两只前轮的速度来实现。不过可 能因为⼩⻋某些功能故障,仅仅改变程序中的速度参数对实际速度影响微乎其微。之 后我们改变想法,直接将转弯时内侧轮速设为0(由于地⾯运⾏时外轮转动带动⼩⻋ 从⽽带动内轮,所以当内轮速度为0时⼩⻋并不会原地打转)。可此设定太过极端 (形成的半圆半径太⼩),不能完成半径为1⽶的半圆轨迹。经过思考,我们将半圆 拆分成两个四分之⼀圆加上⼀⼩段直线,从⽽实现⼩半径半圆向⼤半径半圆的转换。 经过多次改变时间参数,两个半圆路线均成功。 在弧线设计上,我们也遇到了⼀个困难。因为最后停⽌时⼩⻋⽅向要与轨道直线 平⾏,⽽纵向距离只有⼀⽶,所以调整位置时不能有过⼤的弧线半径。⼀开始,我们 将⼩⻋左转到差不多位置时把右轮设为逆向旋转,结果竟然因为抓地⼒不够外加电量 不⾜导致⼩⻋原地不动,于是只能把右轮设为0速度,⽽⼩⻋始终不能到达理想⽅ 向。然后我们想到了通过改变上半圆轨迹的⽅法来达到理想位置。我们在第⼀个半圆 当中添加多⼀⼩段弧线使得第⼆条直线与第⼀条直线不平⾏从⽽略微缩⼩第⼆的半圆 的半径。到了第⼆个半圆我们取消了原本设定的⼀⼩段直线并增⻓转向时间从⽽到达 起点后继续想圈内左转。通过这个⽅法我们增⼤了最后调整⽅向时的缓冲,使得右转 的时间变⼤,于是恰当地到达终点。如下图所⽰。 2012科技创新与实践期末⼩组报告 第⼋组 4
2012科技创新与实践期末小组报告 第八组 五·参数调整过程 直线1部分:全速14.0秒(无需调整) 半圆1部分:右轮全速左轮静止10.0秒; (改为)右轮全速左轮静止5.5秒+全速4.0秒+右轮全速左轮静止5.5秒; (改为)右轮全速左轮静止6.0秒+全速3.5秒+右轮全速左轮静止6.0秒 直线2部分:全速11.0秒; (改为)全速12.5秒 半圆2部分:右轮全速左轮静止10.0秒; (改为)右轮全速左轮静止5.5秒+全速4.0秒+右轮全速左轮静止5.5秒; (改为)右轮全速左轮静止6.0秒+全速3.5秒+右轮全速左轮静止6.0秒; (改为)右轮至速左轮静止10.5秒 弧线部分:右轮全速左轮静止5.0秒+全速2.0秒+右轮倒转3.0秒+全速2.0秒; (改为)右轮全速左轮静止3.0秒+全速2.0秒+左轮全速右轮静止4.0秒+全速1.5秒 源代码: if(CAR_RunTimeCnt <=140) PWMOSoft NextDutyVal 255: PWM1Soft NextDutyVal =255: } else if(CAR RunTimeCnt <=200) PWMOSoft NextDutyVal =0; 2 else if(CAR_RunTimeCnt <=235) { PWMOSoft_NextDutyVal 255; } else if(CAR_RunTimeCnt <=295) PWMOSoft_NextDutyVal =0; else if(CAR RunTimeCnt<=420) PWMOSoft NextDutyVal 255; else if(CAR_RunTimeCnt <=555) PWMOSoft_NextDutyVal =0; else if(CAR_RunTimeCnt<=575) PWMOSoft_NextDutyVal 255; else if(CAR_RunTimeCnt<=625) PWM1Soft NextDutyVal =0; else if(CAR RunTimeCnt<=640) PWM1Soft NextDutyVal 255;
五、参数调整过程 直线1部分:全速14.0秒(⽆需调整) 半圆1部分:右轮全速左轮静⽌10.0秒; (改为)右轮全速左轮静⽌5.5秒+全速4.0秒+右轮全速左轮静⽌5.5秒; (改为)右轮全速左轮静⽌6.0秒+全速3.5秒+右轮全速左轮静⽌6.0秒 直线2部分:全速11.0秒; (改为)全速12.5秒 半圆2部分:右轮全速左轮静⽌10.0秒; (改为)右轮全速左轮静⽌5.5秒+全速4.0秒+右轮全速左轮静⽌5.5秒; (改为)右轮全速左轮静⽌6.0秒+全速3.5秒+右轮全速左轮静⽌6.0秒; (改为)右轮全速左轮静⽌10.5秒 弧线部分: 右轮全速左轮静⽌5.0秒+全速2.0秒+右轮倒转3.0秒+全速2.0秒; (改为)右轮全速左轮静⽌3.0秒+全速2.0秒+左轮全速右轮静⽌4.0秒+全速1.5秒 源代码: ! !! ! if(CAR_RunTimeCnt <= 140) { ! ! ! ! ! PWM0Soft_NextDutyVal = 255; PWM1Soft_NextDutyVal = 255; ! ! ! ! } ! ! ! ! else if(CAR_RunTimeCnt <= 200) ! !! ! { ! ! ! ! PWM0Soft_NextDutyVal = 0; } ! ! ! ! else if(CAR_RunTimeCnt <= 235) ! !! ! { ! ! ! ! PWM0Soft_NextDutyVal = 255; } ! ! ! ! else if(CAR_RunTimeCnt <= 295) ! !! ! { ! ! ! ! PWM0Soft_NextDutyVal = 0; } else if(CAR_RunTimeCnt <= 420) ! !! ! { ! ! ! ! PWM0Soft_NextDutyVal = 255; } ! ! ! ! else if(CAR_RunTimeCnt <= 555) ! !! ! { ! ! ! ! PWM0Soft_NextDutyVal = 0; } else if(CAR_RunTimeCnt <= 575) ! !! ! { ! ! ! ! PWM0Soft_NextDutyVal = 255; ! !! ! } else if(CAR_RunTimeCnt <= 625) ! !! ! { ! ! ! ! PWM1Soft_NextDutyVal = 0; ! !! ! } else if(CAR_RunTimeCnt <= 640) ! !! ! { ! ! ! ! PWM1Soft_NextDutyVal = 255; ! !! ! } 2012科技创新与实践期末⼩组报告 第⼋组 5