智能车入门知识要点解析.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智能车基础 LOGO 1.智能寻迹模型车的硬件部分以ATMEL公司生产的8位单片机AT89C52为核心控制器,主要包括: 1.1 1.2 1.3 1.5 1.6 主控制 电源管理 路径识别 转向舵机 电机驱动 车速检测 1.4 AT89C52 主控制 电源管理 道路检测 舵机转向 电机驱动 电机 速度检测 1.1?主控制模块? 智能车的控制核心为ATMEL公司生产的的8位单片机AT89C52。AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。 1.2?电源管理 电源是一个系统正常工作的基础,因此电源的设计至关重要。智能车中接受供电的部分包括:路径识别模块、转向舵机模块、电机驱动模块、车速检测模块。寻迹智能车使用8节5号电池作为系统主电源。由于系统各模块所需电压和电流容量不同,因此需要通过不同的电压转换电路实现电压调节。为防止电机和舵机等大功率器件在反复启动状态下对系统产生干扰,主要功能模块均采用单独供电。? 1.3?电机驱动模块? 寻迹智能车采用两轮驱动方式,由两个RC-260型直流电机分别对每个车轮进行独立驱动。在智能车行驶的过程中,由于四个车轮能够同时提供抓地力,因此智能车的动力性和行驶稳定性得到大大增强。对于电机的控制采用了基于“H”桥驱动电路的PWM控制。电机驱动模块选用L298。。系统对电机采用全桥驱动,因此可以在智能车速度过快时对电机实施反向制动,从而迅速降低车速。 1.4?路径识别? 智能车路径识别模块的设计是整个智能车设计中的重要的一部分,其作用相当于人的眼睛和耳朵。考虑到要使车辆的行驶过程稳定,寻迹智能车采用5对反射式红外传感器作为路径识别元件。每对传感器由红外发射管和红外接收管组成,水平均匀分布在智能车前部的传感器板上,传感器间距约为20mm。系统针对红外路径识别前瞻能力较弱的缺点,将传感器板前伸至距车头30cm处,使得智能车的“预判”性能大大增强。这样不仅能保证车有足够的前瞻性,还可以牢牢“钳”住白线,使车在跑直线时快速平稳,不会摇晃。 传感器连线 1.5?车速检测模块? 车速的检测是对车速进行闭环控制的基础,直接影响到将来控制的效果。本设计采用的是在后轴中点位置再增设一个均匀分布有黑白条纹的编码盘的测速轮的方法,根据光电反射原理,在车轮转动时,红外接收管接收到反射光强弱高低变化,通过传感器将车速信息传递到单片机相应接口。 1.6?转向舵机模块? 转向控制系统中最重要的部分就是舵机。舵机的主要作用是控制智能车的转向,而通过PWM技术又能对智能车的舵机进行适时的控制。   标准的微型伺服马达有三条控制线,分别为:电源、地及控制。电源线与地线用于提供内部的直流马达及控制线路所需的能源,电压通常介于4V—6V之间,该电源应尽可能与处理系统的电源隔离(因为伺服马达会产生噪音)。甚至小伺服马达在重负载时也会拉低放大器的电压,所以整个系统的电源供应的比例必须合理。 核心控制函数 void check_ss(int ss_val) { switch(ss_val) { case SS(0,1,1,1,1): duoji_turn(RIGHT,30);break; case SS(1,0,1,1,1): duoji_turn(RIGHT,60);break; case SS(0,0,1,1,1): duoji_turn(RIGHT,70);break; case SS(1,1,1,1,1): duoji_turn(RIGHT,0);break; case SS(1,1,1,1,0): duoji_turn(LEFT,30);break; case SS(1,1,1,0,1): duoji_turn(LEFT,60);break; case SS(1,1,1,0,0): duoji_turn(LEFT,70);break; default:break; } } PWM输出函数 #define PERIOD 200 // void duoji(int pulse) { while(1) { if(d_count < (PERIOD - pulse)) DUOJI_PWM = 0; else DUOJI_PWM = 1; if(d_count == PERIOD) { timeout +

您可能关注的文档

文档评论(0)

挺进公司 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档