智能车源程序+很详细

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

由于今年组委会光电管和摄像头分开比赛。所以传感器部分我们选择了光电管,比赛以小车的速度记成绩,为了让小车更快更稳得跑完全程,传感器的探测距离必须要远,既要有大的前瞻,普通的红外对管由于功率较小,探测距离增大时,干扰严重,所以我们自制了大功率对管,同时采用了程序控制脉冲发光的办法,有效的降低了发热,提高了系统的稳定性。系统采用采用了7.2V2000mAhNi-Cd蓄电池作为系统能源,并且通过稳压电路分出6伏,5伏已分别给舵机和单片机供电。直流电机驱动模块接收速度控制信号控制驱动电机运行,达到控制车速目的。转向伺服模块控制舵机转向,进而控制智能车转弯。速度测量模块实时测量智能车车速,用于系统的车速闭环控制,以精确控制车速。系统充分使用了MC9S12DG128单片机的外围模块,具体使用到的模块包括:ADC模拟数字转换模块、定时器模块、PWM脉冲宽度调制模块、中断模块、I/O端口和实时时钟模块等。系统调试过程中,使用了组委会提供的代码调试环境CodeWarriorIDE,同时使用了清华的Plastid2软件进行了仿真试验。图1.1系统结构框图第三届全国大学生智能汽车大赛13.1舵机部分为了使转弯更加灵活,对舵机相关部分作了部分改动。首先,我们将舵机力臂加长85mm。这样,对于同样的转弯角度值,只需更小的舵机转角,减小了舵机转弯时惯性带来的弊端。其次,我们将舵机反装,使舵机连杆水平,因为此时舵机提供的力全部用在转弯上。3.2前轮部分为了增加前轮转弯时的稳定性,对前轮相关部分进行了部分改动。首先,更改前后垫片的数量,使前轮主销后倾,这样,车轮具有更好的自动回正功能。其次,更改连杆的长度,使车轮外倾,车轮转弯时,前半部分重心上移,促使赛车转弯更加稳定。再次,我们通过更改舵机连杆的长度,增加前轮前束,同样增加了前轮的稳定性。3.3底盘部分为了提高赛车运行时的稳定性,对地盘相关部分作了部分改动。首先,前轮相关位置加垫片,降低了前轮重心。其次,更改后轮车轴处的调节块,使后轮重心升高,这样,车身前倾,一定程度上,增加了车的稳定性。3.4后轮部分首先,更换后轮轮距调节块,使后轮两轮之间间距加大。这样,车在转弯时不容易产生侧滑。其次,调节后轮差速,使赛车转弯更加灵活。4.1电源部分为了能使智能车系统能正常工作,就需要对电池电压调节。其中,单片机系统、车速传感器电路需要5V电压,路径识别的光电传感器和接收器电路电压工作为5V、伺服电机工作电压范围4.8V到6V(或直接由电池提供),直流电机可以使用7.2V2000mAhNi-cd蓄电池直接供电。考虑到由于驱动电机引起的电压瞬间下降的现象,因此采用低压降的三端稳压器成为必然。我们在采用lm7805,和lm7806作为稳牙芯片。经试验电压纹波小,完全可以满足要求。电池(7.2v)2000mAhNi-cd第三届全国大学生智能汽车大赛2图4.27805电路图图4.3电源模块示意图稳压电路电机图4.1系统电压调节图5V对管单片机舵机测速板Encoder6V7.2V第三届全国大学生智能汽车大赛34.2电机驱动电路电机驱动使用飞思卡尔专用电机驱动芯片MC33886。驱动电路如图4.4所示。为了增大驱动能力,减少单片发热量,电路采用两片MC33886并联的方案。系统使用PWM控制电机转速,充分利用单片机的PWM模块资源。电机PWM频率设定为8KHz。MC33886芯片的工作电压为5-40V,导通电阻为140毫欧姆,PWM频率小于10KHz,具有短路保护、欠压保护、过温保护等功能。电机驱动芯片安装在制作的电机驱动PCB板上,在PCB板设计时,考虑到芯片散热问题,在芯片腹部设计了方型的通孔,实际运行效果表明芯片散热均匀,设计合理。为了防止电动机突然停止时产生的电磁干扰,在电动机的两端焊接了一个0.1μF滤波电容。AGND1FS2IN13V+4V+5OUT16OUT17DNC8PGND9PGND10PGND11PGND12D213OUT214OUT215V+16Ccp17D118IN219DNC20U3MC33886AGND1FS2IN13V+4V+5OUT16OUT17DNC8PGND9PGND10PGND11PGND12D213OUT214OUT215V+16Ccp17D118IN219DNC20U5MC338861.3KR4Res21.3KR7Res247pFC12Cap47pFC14CapVCCPWM5PWM312P14Header2DS2LED21KR5Res2231S2SW-SPDT+7.2V1KR10Res21KR15Res2图4.4两片MC33886并联使用第三届全国大学生智能汽车大赛4图4.5两片MC33886并联使用的实物图在图中可以看到,我们使用PWM23和PWM45作为电机驱动PWM信号,两个PWM通道级联可以使其输出更加精确。在程序中,我们把PWM值直接转换成了以米/秒为单位的绝对速度,这样使智能车的速度更加直观切易于调试。4.3测速电路由于考虑到成本需要,我们采用了红外对管和黑白码盘作为测速模块的硬件构成。其中码盘为32格的黑白相间圆盘,如下图所示:图4.5码盘红外传感器安装在正对码盘的前方,虽然这样做精度比编码器要低很多,但是成本低廉制作容易,如果智能车速度较快,可以考虑再减少码盘上黑白色条的数量即可。当圆盘随着齿轮转动时,光电管接收到的反射光强弱交替变化,由此可以得到一系列高低电脉冲。设置9S12的ECT模块,同时捕捉光电管输出的电脉冲的第三届全国大学生智能汽车大赛5上升沿和下降沿。通过累计一定时间内的脉冲数,或者记录相邻脉冲的间隔时间,可以得到和速度等价的参数值。测速电路使用自行研制的红外反射式光电测速传感器。速度测量电路使用红外反射式光电对管RPR220,自行制作的编码盘,比较电路等组成。速度测量电路图2.8所示。红外反射式光电对管的光敏三极管信号通过比较器处理后输入单片机的计数器模块,利用单片机的输入捕捉功能,处理智能车速度信息。自制的编码盘有24道黑色条纹,电机旋转一周将产生24次输入捕捉中断。单片机记录两次中断的时间间隔T。两次中断对应于智能车前进的距离S为:16.5/24cm,即0.6875cm,其中16.5cm为智能车后轮实测周长[7]。智能车实时速度V(cm/s)的计算公式如下:scmTTTSV/6875.024/5.164.4红外对管检测电路由于我们采用了大功率对管,所以红外对管的电路是整个电路中要求最高的,不紧要保证对管正常工作,而且还要考虑整个电路的能耗和发热问题。经测试我们发现单个对管在通以100mA到170mA电流时可以。保证抬高20到30厘米的距离。此时每个对管的管压降为1.2到1.5伏。为了进一步加大发光量,我们采用了双发射管的办法,即一个接受管对应两个发射管。为了降低整体的能耗。我们让同一对的发射管串联,14对发射管再并联。同时使用了irf540进行开关控制。控制对管脉冲发光。开关频率为200HZ。这样既保证了大前瞻探测的需要,又降低了整体的能耗和对电源的冲击300VCC33K32184ALM35810K5.1KVCCVCC5.1KIOC0RPR220图4.6测速电路第三届全国大学生智能汽车大赛6图4.7先串联再并联的脉冲发光对管电路图。图4.8对管实物图反面图4.9对管实物图正面4.5拨码开关电路由于在智能车比赛开始后,不能够对智能车硬件及软件进行修改,在保证了硬件有效可靠的同时,软件有可能不能够适应新场地,所以设计拨码开关对智能车有关参数进行设置也是必要的。拨码开关电路如下图所示:第三届全国大学生智能汽车大赛712345678161514131211109S1SW-DIP8123456789R1Header9VCCSW0SW1SW2SW3SW4SW5SW6SW7图4.9拨码开关这是一个八段的拨码开关,我们把它成成上下连个部分,显然,每个部分都有16种状态,前四个来改变舵机参数,后四个改变直流电机参数,这样对于适应新的场地很有好处。5.1路径搜索算法对于本控制系统采用14对光电对管的方案,单排排列在车体头部10cm处。编号为6、7的光电对管处于正中央位置。利用14对传感器进行道路识别。传感器对白色的反射率比黑色的大。单片机ADC读入值相应也大。在程序中对传感器信号进行处理,判断传感器是否检测到黑色引导线。将单个传感器对白色和黑色路面的ADC值之差分为平均的两段,每次处理实时传感器信号时,判断本次采样的ADC值与黑色路面ADC值之差落在两段中的哪一段。如果在靠近黑色的一段,则判定该传感器检测到黑线,将该传感器对应的变量置为判定值1;如果在靠近白色的一段,则判定该传感器检测到白线,将该传感器对应的变量置为判定值1;为了增强判断的准确性,在对ADC值采样时,采用了中值滤波方法,以去除瞬间的干扰。路径检测完后,将测的的路径值暂时存储,然后将路径信息传递给舵机和电机控制部分,以选择给定合适的转角和速度。第三届全国大学生智能汽车大赛85.2舵机、电机的控制智能车的舵机和电机都采用了经典的PID控制方法。但是由于舵机和电机性能的不同要求,分别对其进行了不同的修改。PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。其输入e(t)与输出u(t)的关系为式中积分的上下限分别是0和t因此它的传递函数为:G(s)=U(s)/E(s)=kp(1+1/(TI*s)+TD*s)其中kp为比例系数;TI为积分时间常数;TD为微分时间常数比例KP用来控制当前,误差值和一个负常数P(表示比例)相乘,然后和预定的值相加。P只是在控制器的输出和系统的误差成比例的时候成立,KP能够快速的跟随变化量。及时的产生与之相关的调节作用。但是KP是有差调节,无法消除静态误差。积分KI来控制过去,误差值是过去一段时间的误差和,然后乘以一个负常数I,然后和预定值相加。I从过去的平均误差值来找到系统的输出结果和预定值的平均误差。一个简单的比例系统会振荡,会在预定值的附近来回变化,因为系统无法消除多余的纠正。通过加上一个负的平均误差比例值,平均的系统误差值就会总是减少。所以,最终这个PID回路系统会在预定值定下来。微分KD来控制将来,计算误差的一阶导,并和一个负常数D相乘,最后和预定值相加。这个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作出更快速的反应。这个D参数也是PID被成为可预测的控制器的原因。D参数对减少控制器短期的改变很有帮助。一些实际中的速度第三届全国大学生智能汽车大赛9缓慢的系统可以不需要D参数。舵机PID由于舵机是一个具有大的延迟的执行机构,所以在PID控制中不能加入积分环节。否则会导致小车震荡。所以小车采用PD控制。同时加入一个一阶惯性环节,构成不完全微分,给小车一个超前的调节。实际使用中,为了减少计算时间,将位置式PID转化为增量式增量式PID公式:电机PID控制小车行使过程中,随着跑道的不同,需要配合不同的速度值,因此对电机的PID是一个给定值不断变化的PID。小车的目标速度(Object_Speed)给定规则:1》小车在直道上,Object_Speed为最大值200。2》小车在大弯道上,Object_Speed为160。3》小车在小弯道或S型弯道上,Object_Speed为1204》小车冲出跑道,Object_Speed为70。5》小车由直道进入弯道,Object_Speed逐渐减小。第三届全国大学生智能汽车大赛106》小车由弯道进入直道,Object_Speed逐渐加大。在实验中发现,PID的超调量主要在第一个波形中起作用,也即单速度由很大到很小的时候,或由低速突然加到高速的过程中,会出现很大的超调。但是这个超调并不是有害的,因为,当速度要求突变的时候,往往是小车由直道入弯道,或者由弯道入直道的过程,这个过程往往需要很快的大加减速,而由于小车的惯性,一般的PID调节难以满足要求,这时使用大的超调量可以使小车有一个加速或刹车的过程,使之更好的达到要求速度。6.1Codewarrior开发环境在整个开发调试过程中,使用Metr

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功