北航计控试验-飞思卡尔小车试验报告_第1页
北航计控试验-飞思卡尔小车试验报告_第2页
北航计控试验-飞思卡尔小车试验报告_第3页
北航计控试验-飞思卡尔小车试验报告_第4页
北航计控试验-飞思卡尔小车试验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机测控系统》实验报告院(系)名称自动化科学与电气工程学院专业名称自动化学生学号学生姓名指导教师董韶鹏指导教师2018年06月同组同学实验编号03组一、实验目的.了解计算机控制系统的基本构成和具体实现方法。.学会使用IAR软件的基本功能,掌握K60单片机的开发和应用过程。.学会智能小车实验系统上各个模块的使用,掌握其工作原理。二、实验内容1、了解各模块工作原理,通过在IAR环境编程,实现和演示各个模块的功能2、编写程序组合各个模块的功能,让小车能够沿着赛道自行行使。三、实验原理小车的主板如下图所示:正文gT驾柒口1电弹Ied电帆I正之愤呜青融口2主板上包括FreescaleMK60DN512ZVLQ1修心板,J-Link下载调试接口,编码器接口,电机驱动接口,舵机接口,CC阴构等主要功能模块接口,无线模块接口,蓝牙模块接口,OLE娠口等主要功能模块和相应的辅助按键和电路。在本次实验中我们主要使用的接口为编码器接口,CCDS口,舵机接口,电机驱动接口,OLEDS口来控制小车运行,采用7.2V电池为系统供电。我们采用512线mini编码器来构成速度闭环控制,采用OV7725来进行赛道扫描,将得到的图像二值化,提取赛道信息,并以此控制舵机来进行转向。

四、实验步骤车架及各模块安装小车整体车架结构车模的整体结构如上图所示,包含地盘,电机等,为单电机驱动四轮车。车模为但电机驱动,电机安装位置如下:

4.1.2摄像头的固定和安装摄像头作为最重要的传感器,它的固定和安装对小车的影响是十分巨大的,摄像头的布局和安装取决于系统方案,反过来又会影响系统的稳定性与可靠性以及软件的编写。我们的车模为四轮车,所以摄像头架在车子的中间部分,介于电池和舵机之间,这样节省空间而且也不会让重心偏移太大,而摄像头的角度也很有讲究,角度低的时候能看到很远的赛道信息,但是图像较为模糊,不适合图像处理的编写,角度较高是,能看到的图像信息较少,但是分辨率明显更好,在程序的编写中,我们发现摄像头视野的宽广往往直接影响赛道信息提取的精准度。摄像头的安装如下图:摄像头与支撑杆之间的安装能否稳定是整个采集图像是否可靠地重要原之一。考虑到CCD摄像头本身就比较笨重,要尽量减轻附加固定结构的重量。我们采用比较轻便的碳棒为支架进行安装,除了摄像头与支撑杆之间的连接会影响摄像头

采图之外,支撑杆与底盘之间的固定也同样重要,本届车模为四轮车,在车子跑动时,受到速度变化或者打脚影响,车子会有左右倾的状态,因此底盘需要特别的结实才可以的具体安装如下图所示:编码器的安装为使整个控制形成闭环,当前速度反馈是必须的。为了测出当前速度,我们用了两个512线mini编码器。在安装编码器的时候要保证有合适的齿轮咬合。咬合完美的原则是:两个传动齿轮轴保持平行,齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力;传动部分要轻松、顺畅,容易转动。判断齿轮传动是否调整好的一个依据是,听一下电机带动后轮空转时的声音。声音刺耳响亮,说明齿轮间的配合间隙过大,传动中有撞齿现象;声音闷而且有迟滞,则说明齿轮间的配合间隙过小,咬合过紧,或者两齿轮轴不平行,电机负载加大。调整好的齿轮传动噪音小,并且不会有碰撞类的杂音。安装好的编码器如下图所示:舵机安装舵机是另一个重要的功能模块,用来控制小车的前进方向,它根据摄像头二值数

据的处理结果来进行一定角度的打角控制小车的前进方向,具安装部位和方法如下图所示:4.1.5主板安装主板上包含各个功能模块的接口电路以及单片机核心板,是整个系统的控制中心,十分重要,用螺丝将其紧固在支架上,方便各模块的连接。具安装效果如下图所示:4.2软件系统设计程序整体设计思路为在系统各模块初始化后,开始摄像头扫描,得到二值化数据,然后对得到的扫描数据进行运算得到下一时刻所需的舵机打角来控制方向,控制方向的同时单片机FTM模块/&出PW睐控制速度。主函数如下:voidmaiQ(void>[<iisnji|;OLED_Init。;OLED_Draw_Logo();DWk¥_MS(2O03);OLED_CLSU;uart_init(UARTC,15JOJCO1;”注意/报据实诟的波特率来修改fcainera_iQiu(>;白et_veetojhmndler(PORTJVESIORnfPO£lTC_IRQH.antller);get_veexor_handler(DMAO_VECTORn,DK^O_LR^HarLdler);j-L_vector_handl-r?(UARIQ_RX_TX_VE:CTDRiirURRT0_RX_IRQH*ndler|;uart_ri_irx_^nitTiRT^I;M71C_SerPriorit(UARTO_RK_TX_IRgnfQ);whiled)(l£lEL£H_ijng){-new_imj=3;Z/filtsr0;//lirse。」Spacefilteif);Searchf);Send_Begin。;Send_Variatle(j;aeadima0;"发送到上位机=ing_extrac七(imgFimgrbuff^procesmfCAMERZi_SIZE>;OLED_Draw_caroera();)]接下来介绍各个模块的控制程序原理。图像采集与处理摄像头的主要工作原理是[8]:将摄像头的像素点从上到下,从左到右逐个输出,虽然部分芯片可以配置输出顺序,但是对于智能车来说,正常输出即可,有些摄像头将一帧图像分成奇偶两场,ov7725并没有这项配置。摄像头工作时序如下图所示:⑴行中断时序首先需要明确的是HREF和HSYNC均为行中断信号,它们共用一个管脚,由寄存器配置HREF在上升沿就会马上输出图像数据,而HSYNC则需要等待一段时间再输出,如果行中断里需要处理事情再开始采集,则显然用HREF的上升沿是很容易来不及采集第一个像素。PCLK是整个控制摄像头指令的时序,在上升沿时MCU会采集图像,下降沿时摄像头输出图像。行消隐区:如果不按照时序来采集,便会采集到值为0的消隐区,即黑色。行与行之间,场与场之间,都是存在消隐区的。(2)场中断时序图4,2场中断时序图场中断信号VSYN球了,便可以开始采集每帧的数据,可以在程序里选择上升沿或者下降沿触发中断。场中断和行中断的时序关系必须处理好,否则将出现异常,DMA简要介绍DM册直接内存存取技术,它允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。DMA传输将数据从一个地址空间复制到另外一个地址空间。

当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。在实现DMA专输时,是由DM馈制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA专输前,CPU®把总线控制权交给DMA空制器,而在结束DMA传输后,DMA空制器应立即把总线控制权再交回给CPU一个完整的DMA专输过程必须经过DMA青求、DMA向应、DMA专输、DMA吉束4个步骤。(4)图像采集由于图像处理是路径识别的基础,也是控制策略能否发挥作用的重要影响因素,因此,本文将对此部分进行详细介绍。ov7725数字摄像头在硬件上做了二值化处理,所以阈值作为程序底层中一个十六进制的数值来体现。如果想要获得效果明显清晰的图像,当环境改变时,阈值要做相应的调整来适应光线场地,这个是运行上层采线函数获得正确赛道信息的首要条件。采集图像思路如下,图像采集的方案是不使用行中断信号,直接DMA奠块计数来完成一场结束的判断。需要采集图像时,开场中断,场中断来了,初始化DMA传输,并启动DMA传输,每个PCLK上升沿来了都触发DMA传输,把摄像头输出的值读取到内存数组里。当触发n次(廿图像像素数目)后就停止DMA传输。场中断服务程序如下:球中断版务函教&sinc*vS.Q/FORTJ工R口日Mid(uinuSn=0:,,弓i脚号=PORTC_IEFIi;〃清中断标志住"宜00触盘中断门〃清中断标志住"宜00触盘中断门清空部端志性门恢复地址//性能通道点4硬件淮求n-13;t{L《口,)=I*1113;-旧工口2司工工井正士MiA_EN(DHR_CHO);DMA停止传输时触发中断,中断里关闭场中断,图像采集完毕。DM冲断服务程序如下:/*/•如工匕工池2中断龈条函数:&SsinGGvS,0Vvoid弧口_工双三曲山灯。(DMa_IRQLd^(DfiA_GH0^;门君跺通道转程中断标志国:new_img=l;memcp^((uint5\Lngbuff_praces3,(uintE+Jimgbuffsizeof(imjhuff})r(5)图像处理图像处理采用了赛道边沿提取的方法,基本思想如下:多扫描得到的二值化数据解压后数据进行逐行扫描原始图像,根据设定的阈值提取黑白跳变点;赛道宽度有一个范围,在确定的赛道宽度范围内提取有效赛道边沿,这样可以滤除不在宽度范围内的干扰;利用赛道的连续性,根据上一行白块的位置和边沿的位置来确定本行的边沿点;在弯道的时候赛道有回拐的情况,所以提取本行边沿之前还要向前搜索回拐的边沿点;在弯道行进过程中,保持系统搜索最远有效行,为未来进一步打角做出判断,尤其是在速度比较快的时候,获取较远赛道信息变的非常重要。解压函数如下:*terief二S像解三rvoidImg-eKTract(u,int3*口3匚,uinte*src.uintSSsrclen)=l-r11;tmps^c;while(axelen(tmpsrc-+arc++j*dsr++=to-Lour:(CtnpSEC»T)t。茗口工]4d曰t—+=colour"(tznpsrc»□)wOhOI]♦d号七十+=go-1our"{tmparc»5)*。耳。1]((tmpmreCkQI]=CQ10QJ:[(trnparc»3J4OkOI]*d3X++=tcrlaur[(tmparc»2)4OkOIJ*]31一十=Gblour;(Unparc»1)4口1]*13T+f=colour!(tmp-src»0)&0x01]把得到的二值化数组由十六进制转化为二进制程序如下:voidSpacefilterU{intL门」=匚:for(i=j;{fcuffer_3pace[Jc+--j]=j_irgbuff[i]}¥+3获取赛道边界和中心线的算法如下:voidSeatiliu(intifjrJc;//intf<r(i-0;{2二;f©r(j-o;j<e2;j-i-+){if(buff;r_apaceL-^*1){middle[i]+=];k++;}middle1由摄像头数据计算出舵机所需打角的算法如下:3iiuanjia3=3;for(i=30;i<€0;i++){shuanjiao+=mddle[1]:zhudEijiao/-30;zhudnjlao-=(zhuanjLao-}*5r4.2.2舵机模块控制程序舵机采用FTM1的CH0通道来驱动。在PWM勺占空比为15%寸,舵机保持中立,

占空比在10%-20脸间变动时,舵机摆角在最左到最有来回摆动。实际中需要根据具体情况修正舵机中立时的占空比。测试后我们发现当占空比为14%寸舵机保持中立。具体的舵机初始化和驱动程序如下所示:voiddjDjz.(xntzhuar.1二mu)4Ini.4eed:“而始lilt加ty-C'lag;iftzhuaaiiao>2EIZh'JmElJLAC=2S;Lr(ZhLidnjldl>C-j5)ilwemjiao="2-;ifIQ.1671-SJ5gHM3独力钊/11!|>=0.Q')(85Deedi=-lf*(l-dte(mijenjleo|/10:Jclac◎peed一一,;di*njnaps«dii1白35sz前:nM_FTOLiE・L《nML.rT!ia(t,m.K”E_jiiddle+2hMidLBC]1:FIM辕出.雅幸为磨湖为LED_REDTUHT:)程序中为了防止舵机摆角过大烧坏舵机,我们对其输出进行了限制,可以防止其

因为大幅摆动造成的损坏和其他机械不稳定性。电机模块控制程序电机模块采用FTM0勺CH(ff口CH2®道进行控制,电机的驱动电路采用典型的H桥驱动,电机转速与占空比成正比。具体的初始化和驱动程序如下图所示:voidclian]i(intx)ixitduty=.,^laj;ixitduty=.,^laj;ledinit0;FTM_PWM_init(F7M0,FIM_WHQ,11*1:旧33;//电机F硒FTG旁印.频率为1讲5工KETM_PWM_iQit(FTMO.FIM_CHlr10*1000,?);电机PIMFK2球印一搠■为1口雄工.F7M_PWM_init(F7M0,FTM__CH2,10*1003,3);//电机FMMprej号名廓■为1加6工.F7M_EKM_init{FIM口1rmi__CH3r10*l:i0:F1);〃电机P9MPTC43ti&r阪工.motorl_out=dut:y*D.Dl;门舞《上为实玩占空庄meto12_out=duty*3.31;Matcr_Out(\;///编码器模块控制程序编码器采用512线mini编码器,即可输出表示转速的脉冲波又可输出正反转信息。程序中我们使用FTM2的正交解码功能来读取编码器脉冲数得到小车速度。初始化程序如下:void后工鬣=且与1±ntshuAJi5siu]iUftrt_Ln±t|皿泣1"盯2式打〃皿»先期者抚*而[?”工白北日就历卬1日_二口门fWIBJEWMW#ULEDLlnlLO://*7纣加破印怒』"3MIE"的二Wk*“:?商差应上映板曲超表圻?OLED_Draw_Lofs(>$ErXJkTJ®(20O0>;OIED^CLSCH0ZED_P6Ke5tr口1ZJH工犯JEPCO口ER.TE5丁1二八意行第1列开蛤3示&LELP亘KEELr(2JB4/b?ulae1="|;0LEI?_PSh£2tr{20P£r*m葭=1;ETN_Q'JA2_InLt(ETEI);//初蛉化五文解将产装速遣rMjflnMJ_inir(rou):化正安理蜀NKM潼whila(Pj1i«2<it{E-uLl-F™_57JU:_g»T{FIMl);。.奈成行为高新fu二讦4ftw一口e二.q产二(yir,);。塞吊故飞;:•妄轰aprin^f"td",?ulael);Si寻嗪羲g^ss:装系总字普丰甫里面aprintf函数aLEE^PSJiEJtrtZD+E6,4,tHLTr):”转效嚏震录在斌=屏/广或O木星故个空拮盼正显示塞建星下刷株?sprincr(isurrF*wH,,sniaej);。寿苑理或为¥后#旃血urr里H彦Si■孙>二工"匡亵二;匚二三E三:二;;一,:一一一l:二,:,播敷工二示在次品注具」OLEp_Mi^Clur(r,J:S放手空格SS止工壬错漫弋乐《手曲轴》ti^nL£("FuL3rl-4dF^ulstE-tdirXt1'rFilialrPulaci);,/挎拿敷&K在土畦蜗里)\4.2.5OLED模块控制程序实验中我们采用OLED夜晶屏来显示摄像头扫描得到的赛道信息。LED作为新一代显示技术,广泛用于各种仪器仪表的显示终端,实时显示字符、汉字、曲线等信息。OLED1286显示模块显示屏为128列、64行,使用1片有64行输出的行驱动器和2片列驱动控制器,其中每片列驱动器有64路输出。行驱动器与MCU没有关系,只要提供电源就能产生驱动信号和同步信号,模块的外部信号仅与列驱动器有关。列驱动器内置64X64位显示存储器,RAMK分为8页,每页8行;显示屏上各像素点显示状态与显示存储器各位数据一一对应,显示存储器的数据直接作为图形显示的驱动信号,为“1”显示,为“0”不显示。在本次实验中我们移植了OLED12864勺库,库中包含相应的管脚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论