欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    嵌入式探月车技术说明.doc

    • 资源ID:5021865       资源大小:4.24MB        全文页数:19页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式探月车技术说明.doc

    2嵌入式“探月车”技术总结报告濮阳职业技术学院濮阳职业技术学院嵌入式“探月车”技术说明队名: 队员:学院:濮阳职业技术学院专业:应用电子技术宣言: 我们相信自己!更相信队友! 2010年5月目 录1.摘要12.智能小车总体概况22.1.概述22.2.作品智能小车23.嵌入式探月车硬件设计33.1.硬件结构图33.2.TQ2440开发板简介33.3.主要I/O口说明43.4.直流电机驱动模块63.5.寻迹模块83.6.无线通讯模块103.7.摄像头模块104.嵌入式探月车软件设计114.1.软件整体设计114.2.驱动程序设计114.3.电机控制子程序124.4.循迹控制子程序134.5.无线通讯子程序144.6.摄像头控制子程序154.7.主程序流程图165.总结与体会166.参考书目171. 摘要本智能小车采用三星公司的S3C2440芯片作为主板的控制核心,在嵌入式linux环境下,编写GPIO 口的驱动,并编写智能探月车的应用程序。小车主板采用wifi无线方式与PC机相连,由PC机控制小车的运行与终止。通过光电发射接收组件能够实现小车的偱迹,利用PWM技术控制直流电机的前进速度和方向,此外还配有外置摄像头与主板cam接口相连可实现抓拍图像并识别,并将拍摄到的图像通过wifi方式发送给PC机。关键词:ARM 嵌入式 linux S3C2440 智能 探月车 循迹 wifi 摄像2. 智能小车总体概况2.1. 概述“探月车”采用以S3C2440为核心的天嵌TQ2440开发板和一块通用板为基础,经焊接相关控制芯片而成,无线通信则是利用PC机与无线路由器搭配环境平台共同实现的。具体请见软件控制电路。通过GPIO口检测信号,输出PWM信号控制直流电机的、前进、停止、左转和右转。与开发板cam接口相连的外置摄像头用来完成几个监测点处的抓拍图像。检测信号则利用五组红外发射和接收管,黑线时输出高电平,白线时输出低电平,从而最终实现智能小车的正确偱迹。2.2. 作品智能小车3. 嵌入式探月车硬件设计3.1. 硬件结构图3.2. TQ2440开发板简介TQ2440开发板基于三星S3C2440芯片,如下图所示:主要接口说明:电源接口:输入电压不能大于7伏电压,标准电源试配器为5伏。音频接口:红色为音频输入接口,另一个为音频输出接口。USB接口:主要用于传输数据。串口接口:串口接口主要是它能使PC机和开发板直接进行交换操作和数据传送,完成调试。SB网卡接口:在启动操作系统后,接上无线网卡,就可以对小车发送无线信号。J tag接口:J tag接口主要作用是当Nand Flash或 Nor Flash 中没有uboot时,使用J tag接口进行烧写。3.3. 主要I/O口说明主控芯片为三星S3C2440芯片,如图:主要用到的I/O口包括:1. 用EINT3、EINT4口用来检测红外寻迹传感器反馈的信号。2. 用nLED1、nLED2、nLED3、nLED4GPIO口输出PWM信号来控制电机运动3.4. 直流电机驱动模块 3.4.1. 电机驱动模块实物图驱动板主要采用了L298N芯片,它具有带载能力强的特点。 3.4.2. L298N驱动原理图驱动电路芯片外围电路主要用由二极管构成的电桥电路,两组电机并联而成。 3.4.3. H桥控制方案 小车通过采用L298N芯片可以达到目的,整体控制方案如图电机共有四4路PWM输出分别作为左右轮的驱动,而通过两路PWM输出可控制一个电机,两电机为并联即可。 L298N芯片内部结构如图真值表如下所示: 当使能信号 ENABLE 为高时 输出才随输入变化,否则为高阻态,所以焊接时,ENABLE及VS均接VCC。具体驱动过程为:1. 通过编程由控制芯片经PWM发出驱动信号,PWM输出作为L298N的输入,经L298N转换输出控制信号使电机转动,从而实现电动机的驱动。2. PWM输出信号的高低则可以控制直流电机转速,当占空比大时,转速高,占空比小时,转速低,所以当PWM信号输出占空比为0时可控制电机的停止。3. 当左轮停止,右轮转时,小车左转。 当右轮停止,左轮转动时,小车右转。而两路PWM输出的正负顺序转换则可控制电机的正反转,进而控制小车的前进和后退。3.5. 寻迹模块检测原理:路径检测采用红外光电传感器组件(白色为发射管,黑色为接收管)如图所示:根据不同颜色对红外光的反射率不同,白色很高,黑色很低。所以当发射管发出红外光线经白色线时,觉大部分都被黑色管接收,处于导通状态,输出低电平,而红外光经黑色线时,接收不足,黑色管无法导通,输出高电平。输出的高低电平经GPIO口接入8013ARM中,通过一定的算法即可判断,从而输出控制信号,控制小车的路径。   优点:结构简明,实现方便,成本低廉,反应灵敏,便于近距离路面情况的 检测,  红外线是波长为830nm950nm的电磁波,自然环境物理在该波段的辐射量是很微弱的,所以抗干扰能力强,不会因为周围环境的差别而产生不同的结果。   缺点:只能对路面情况做简单的黑白判别,检测距离和精度有限,传感器高 度位置的差异可能会对其检测造成干扰。另外,由于车模的总长不得大于40CM,所以前瞻距离受到很大的限制 3.5.1. 红外传感器电路如图a. 红外发射管为二级管,接收为三极管,当接收三级管导通时集电极输出低电平,断开时集电极输出高电平。b. 如图所示,接收管集电极输出接入比较器339正极,比较器负极则为滑动变阻器的输出,当正极高于负极时,比较器输出5V高电平,否则为0V低电平c. 比较器输出则接入ARM的GPIO口,通过读GPIO口的状态即可判断是黑线或白线 d. 光电传感器都接限流电阻,比较器输出接上拉电阻。3. 检测路径规划 本小车采用四组红外光电传感器,排列如图所示: 小车在画有黑线的白纸“路面”上行使,由于黑线和白线对光线的反射系数不同,可根据接收到的反射光的强弱来判断轨迹黑线。判断信号可通过开发板上的驱动模块利用GPIO口的状态即可判断是黑线或白线从而修正小车前进方向,以使其保持沿着黑线行进。 小车寻迹板中间两组用于辨识黑色线,使小车能沿着黑色线前进,且两组宽度要适当,太窄则同时感应到黑线或白区域,算法不好控制小车能沿着黑色线行走,即易偏离轨迹。当左组光电传感器检测到黑色线时,小车右转,当右组光电传感器检测到黑色线时,小车左转,否则小车前进,这样即可保证小车能沿着既定的轨迹前进而不偏路。3.6. 无线通讯模块通过无线网卡实现无线数据的传输。3.7. 摄像头模块摄像头的安装位置对小车的性能有很大的影响,主要体现在图像采样效果和对小车重心的影响两个方面。安装的低了,易导致视野不够广阔,影响寻线的有效范围;安装得高了,指引线在图像坐标上会变得过窄而无法被检测到。 若安装的太高,系统会因重心抬高而稳定性变差。若安装太靠前,则小车的重心会前移,进而在前行的过程中容易出现“点头”的不稳定情况,重心前移也易导致驱动轮即后轮对地的压力减小,容易出现驱动力不足或者打滑的现象。安装位置合适的一个原则就是:摄像头的安装,首先必须满足头像采样效果的需要。控制策略简单,则所需的拍摄范围就可较小;反之策略复杂,需获得的赛道信息较多,则拍摄范围应大一些。其次,摄像头的安装对小车重心的影响不能导致小车出现运动不稳定的现象。综合考虑后,我们选择如图3.3所示的安装方式。 4. 嵌入式探月车软件设计软件部分是小车的智能化的体现,它控制小车所有的运行状态。程序在RedHat 9环境下采用vi编辑器进行编写,用arm-linux-gcc交叉编译工具编译,在经过终端Sercurt-CRT通过串行口向小车烧入交叉编译后的程序。应用软件控制小车的循迹、拍照、发送文件等行为。此外,在主机端用3CDaemon软件架设FTP服务器,并建立无线局域网。这样,小车就可以循迹并到达指定地点拍照并发送图片,而PC机端就可以接收通过wifi传送过来的图片。4.1. 软件整体设计“探月车”软件部分整体设计如下图所示:4.2. 驱动程序设计驱动程序利用TQ2440开发板提供的例程进行改写,并编译进内核。4.3. 电机控制子程序通过将nLED1引脚、nLED2连成回路,nLED3、nLED4引脚连成回路,控制电平的 高低,从而控制电流的流向,达到控制电机正反转的目的,其主要函数如下:int back(int t,int fd)/后退 ioctl(fd,1,0); ioctl(fd,0,1); ioctl(fd,1,2); ioctl(fd,0,3); return(0);小车的左前电机后转,右前电机也向后转,小车前后电机联动,所以小车整体后退。int forward(int fd)/前进ioctl(fd,0,0);ioctl(fd,1,1);ioctl(fd,0,2);ioctl(fd,1,3);return(0);小车的左后电机正传,右后电机正转,小车前后电机联动,所以小车整体前进。int r(int fd)/右转ioctl(fd,0,0);ioctl(fd,1,1);/ioctl(fd,0,2);/ioctl(fd,0,3);return(0);小车的左侧电机正转,右侧电机的不转,所以小车整体右转。int fr(int fd)/ioctl(fd,1,0);ioctl(fd,0,1);return(0);小车左侧电机反转,右侧电机不转,小车整体向右后方向转。int l(int fd)/ ioctl(fd,0,0);/ ioctl(fd,0,1); ioctl(fd,0,2); ioctl(fd,1,3); return(0);小车左电机不转,右后电机正转,小车整体左转。int fl(int fd)ioctl(fd,1,2);ioctl(fd,0,3);return(0);小车左侧电机不转,右侧前电机转,小车整体向左后方向转。int stop(int fd)ioctl(fd,0,0);ioctl(fd,0,1);ioctl(fd,0,2);ioctl(fd,0,3);return(0);左右电机全停止工作,小车停止工作。4.4. 循迹控制子程序通过读取设备得到代表不同路况的返回值,从而做出相应的动作,基本代码如下:for(;)cmd=read(deteFd,NULL,NULL);if(cmd!=old_cmd)switch(cmd)case 3 :onR=5;onL=5;break;case 2 :onR=-2;onL=10;break;case 1: onR=10;onL=-2;break;case 0:onR=0;onL=0;break;old_cmd=cmd;if(cmd=0)break;time=(time+1)%10;if(time<onR)r(fd);if(time<onL)l(fd);if(onR<0)fr(fd);if(onL<0)fl(fd); 主要通过寻迹板上的光电器件控制,利用处于白布和黑布间的输出电压不一样来,GPIO口读入黑白线判断,从PWM口输出驱动信号来控制电机。具体如下a. 当小车接收到开始信号时,小车前进,并寻线。b. 小车上线后寻线并判断是否遇到断点,遇到断点,电机停止并对参考物拍照传送。c. 电机停止时,变量会对断点的个数进行累计。并判断是否<4,断点小于4时,继续循环寻线累计断点。d. 当变量>4时,则小车跳出循环,到达终点,电机停止。4.5. 无线通讯子程序此部分内容为socket编程,部分代码如下:int sendstring(char *addr,int port,char *sendchar) struct sockaddr_in s_addr; int sock; int addr_len; int len,i; if (sock = socket(AF_INET, SOCK_DGRAM, 0) = -1) perror("no socket"); exit(errno); else printf("create socket.nr"); s_addr.sin_family = AF_INET; if (port) s_addr.sin_port = htons(port); else s_addr.sin_port = htons(10001); if (*addr) s_addr.sin_addr.s_addr = inet_addr(addr); else printf("Send a message must have a receiver!n"); exit(0); addr_len = sizeof(s_addr); len = -1; for (i = 0;i<4;i+) if(len < 0)len = sendto(sock,sendchar, strlen(sendchar), 0,(struct sockaddr *) &s_addr, addr_len); else printf("send success!");return 0; printf("send error!"); return 0;4.6. 摄像头控制子程序摄像头控制程序cam2jpg由TQ2440开发板中的例程提供。4.7. 主程序流程图主程序寻黑线并上线沿黑线直走小车停并寻白线寻黑线并直走小车停并拍照并传送,变量+1是否遇到断点判断变量是否=2判断是否有断点小车右转避障程序结束判白线是否结束5. 总结与体会经过三周左右的时间,我们终于完成了小车的制作和程序的编写。在制作过程中,我们克服了许多困难,在指导老师的帮助下我们也找到了很多错误,并对其进行了纠正和改装。从中我们体会到前期规划的重要性,在焊接之前要仔细考虑一下元器件的焊接顺序和可能出现的问题,这样在焊接的时候才会比较流畅,布线也比较清楚,纠错也很容易。编程是整个小车制作的重点,我们通过对小车电路、比赛规则和比赛环境等情况的研究,在辅导老师的帮助下编写出了相应的程序,经过几次调试安装最终完成了小车应用程序。通过编写程序,我们感到了ARM开发板的功能的很多,虽然编写程序方面我们有所欠缺,但是在辅导老师的指导下最终完成了小车程序的编写。对于此次比赛,很感谢学校给了我们参与这次比赛的机会,也很感谢学长和指导老师的帮助,通过实际操作加深了我们对理论知识的理解和运用的能力,相信通过我们的努力能使我们取得好的成绩。6. 参考书目1:Luinx从入门到精通 2:C语言程序设计 3:电子电路设计与制作 4:Redhat 9 应用宝典5:TQ2440开发板使用说明书 - 17 -

    注意事项

    本文(嵌入式探月车技术说明.doc)为本站会员(yyf)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开