ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:133.21KB ,
资源ID:8583150      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8583150.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(用C语言设计智能车的方案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

用C语言设计智能车的方案.docx

1、用C语言设计智能车的方案用C语言设计智能车的方案一、需求和设计目标1、 实现电动车的驱动模块功能2、实现传感器模块控制电动车的基本驱动功能3、实现显示模块功能4、实现语音控制模块功能5、合理设计实现电路,外观、布局、布线美观二、车体硬件功能设计方案1、成品电动车的外观改造2、电动车驱动模块设计3、传感器控制模块设计4、显示模块设计5、中心控制电路模块设计6、语音识别控制模块设计(备选功能)三、车体硬件功能实施方案1、车体介绍供电:电池(四节AA)工作电压:直流4-6V工作电流:200mA小车驱动结构:双侧履带驱动2、行走原理直行:两侧履带同时前进后退:两侧履带同时后退左转:右侧履带前进,左侧履

2、带后退右转:左侧履带前进,右侧履带后退3、系统方案选择和论证(1)电机的选择方案一:采用步进电机控制。步进电机的优点是步数可以精确控制;缺点是步进电机低转速时会产生振动,振动幅度过大则会影响车体的平衡,因此不适于此题过跷跷板的要求。方案二:采用左右双直流驱动电机控制。直流电机的优点是具有优良的调速特性,带负载能力强,便于电动车在有限的场地内灵活运动。考虑到用左右电机的转速差来控制电动车转向比步进电机有较大的优势且电路相对简单方便控制,本设计采用了方案二。(2)单片机的选择方案一:采用可编程逻辑器件CPLD。这种器件的功能强大,运算速度快、集成度高,但是其价格相对比较昂贵。因此这种器件比较适用于

3、较高级和传感器数量非常多的设计中。方案二:采用单片机。单片机已经发展了30多年,其技术已非常成熟,使用也非常广泛,从高端的嵌入式系统到我们生活中的日常家电都有它的身影。众所周知,单片机本身就是一个计算机系统,这对于实现本设计的各项功能都十分方便,并且其价格和CPLD相比要便宜许多,有很高的性价比。这两种方式各有特点,在目前的相关研究中都有广泛使用。鉴于电动车过跷跷板所实现的功能有限,规模较小,考虑到端口数量、所需的存储器的容量、成本等因素后,决定采用单片机作为本次设计的控制系统核心部件。最后选择了Atmel公司开发的AT89C51型单片机作为主控元件,AT89C51有32个可编程I/O口,有四

4、个I/O口P0P3,其中P0P2为普通I/O口,而P3口有其他功能,如外部中断(INT0,INT1)、记数(T0,T1)。AT89C51外型及引脚如图F-1所示。(3)显示系统方案一:采用LCD液晶显示器。从显示信息的容量来看比较理想,但是价格比较昂贵,大量的显示数据也不符合本设计的智能移动机器人的情况。方案二:采用LED数码管显示器。LED数码管亮度高、醒目,且性价比很好。基于上述讨论,我们采用了方案二。4、系统的设计和实现图F-2 系统硬件结构框图系统可分为三大部分,即信号检测部分(传感器电路),控制部分(控制电路)和执行部分(电机驱动电路)。其中信号检测部分通过传感器检测黑色轨迹,并将信

5、号传回控制器处理。控制部分的作用是接收并处理输入的控制信息以及检测信号,通过控制电机来改变电动车的行进方向和速度,并将电动车行使所用的时间实时显示出来。本设计基于单片机及传感器,完成了一个电动车跷跷板的制作。(1)使用单片机AT89C51作为系统控制核心,实现对电动车的智能控制。(2)采用直流电机作为驱动。(3)为了检测路面黑线,在车底安装了一组三个反射式光电传感器,在车尾安装了一个。利用该模块探测路面黑线的原理是:光线照射到路面并反射,根据黑线和白纸的反射系数不同,通过以光电传感器为核心的光电检测电路将路面两种颜色进行区分,转化为不同电平信号,将此电平信号传送至单片机,由单片机控制转向电机作

6、相应的转向,保证电动车沿引导线行驶。电动车工作在光源较充足的环境时,光电传感器就会受到很大影响,导致系统误动作,无法正常工作。为了减少环境干扰,应在光电传感器的发射管和接收管周围用黑胶布裹上,避免光照,而且应尽量让系统工作在光线较弱的场合。(4)通过LED数码管显示器分阶段实时显示电动车行使所用的时间。经试验测试表明,该系统各项功能都已满足题目的要求。从总的方面来考虑,传感器的使用数量应该尽量减少单片机的信号处理量,但是又必须能使电动车行使自如。控制电路要根据选用的电机和传感器来设计,主要考虑稳定性和抗干扰性。四、理论分析和计算1、测量和控制方法(1)传感器寻迹测量根据实际情况,选择在电动车底

7、部安装三个反射式光电传感器。分别将两个传感器对称置于电动车前端轴线的两侧,再将一个传感器安装在电动车前端轴线上,即前两个传感器的中间位置,这样,中间传感器将始终检测到黑线。如果除中传感器之外,左、右传感器中的任意一个检测到黑线,则该传感器将输出“有线”信号,根据信号来驱动电机改变电动车的运行方向,以次来达到校正行进方向的目的。(2)LED数码管显示控制显示部分的电路如图F-3所示。图F-3 共阴极数码管动态现实电路2、理论计算(1)电动机PWM驱动模块的电路设计和实现由四个大功率晶体管组成的H桥电路组成,四个晶体管分为两组,交替导通和截止,由于电机平均功率满足如下关系其中P为电机的平均功率,P

8、max为电机全速运转的功率。A为脉宽,可见,电机的平均功率和脉宽成正比。电动车行使后其平均功率:P=fv则 APmax=Af=fv式中 v=Avmax所以电动车的速度和脉宽成正比。单片机发出脉冲信号的宽度即可决定PWM放大器输出的电压平均值的大小。(2)跷跷板的处理根据题目的要求,我们选择了三合板加木梁的结构作为跷跷板。为了增大磨擦力,防止电动车行进时打滑,还在上面铺了一层素描纸。为使电动车能够自动驶上跷跷板,我们在1cm厚的板的两端,以距离地面5度倾角的位置锯掉些木板,使跷跷板任一端落地时可以和地面很好地贴合。另外,在保证跷跷板中心轴两端和支架圆滑接触、灵活转动的前提下,我们在支架底座钉上了

9、防滑橡胶垫来加大和地面的摩擦力,增强了跷跷板的稳定性。(3)角度传感器测试角度的计算根据题目给出的示意图及相关数据,可得到跷跷板半径AC长为800mm,又因为跷跷板中心点C距离地面的高度CD长为70mm,所以计算出直角三角形ADC中角的度数约为arcsin(70/800)5,即角度传感器的测试调整角度。3、电路设计(1)总体电路图本系统采用单片机作为控制核心,对控制信号和传感器送来的信号进行分析处理,然后电动车沿指定黑线运动,并通过LED显示器显示电动车行驶所用的时间。详细电路图如图F-4所示。图F-4 总体电路图(2)检测和驱动电路设计直流电机驱动电路使用最广泛的就是H型全桥式电路,这种驱动

10、电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。桥式电路以及电机原理图如图F-5所示。考虑到电机启动和制动时较大的电流会造成电源电压不稳定,从而出现电磁兼容性(EMC)问题,对单片机和传感器的工作产生干扰,所以,在单片机和电机驱动电路之间采用光耦隔离的措施来解决电磁兼容性问题。光耦的电路连接图如图F-6所示。 图F-5 桥式电路以及电机原理图 图F-6 4N25的连接示意图这极大地减小了系统可能受到的电磁干扰,为控制电路的可靠性及安全性提供了保证。两路电机的驱动电路图如图F-7所示。图F-7 电机驱动部分电路图五、模块报价清单和工具清单(1)模块报价1、车体及改

11、造费(150元)2、核心控制模块(50元)3、驱动电路模块(50元)4、显示模块(30元)5、传感器模块(300元)6、语音备选模块(待议)7、消耗性材料(焊锡、导线等,100元)合计:680元(2)设备和工具1、电脑(1台,有c语言编程软件)2、单片机试验箱(1部,5000-7000元,此设备借用,须经校方同意)3、烧录机(1台,700-1500元)4、焊接工具及材料(1套,包括电烙铁、螺丝刀、电钻、吸锡器、尖嘴嵌、拨线嵌、锉刀、剪刀等,500元,此设备借用,须经校方同意)软件设计#include #define uchar unsigned char#define uint unsigne

12、d intvoid zhu(); /主函数void zheng(); /正向前进函数void zuo(); /左转函数void you(); /右转函数void hou(); /反向倒退函数void ting(); /停车函数void daoche(); /倒车函数void delay(uint k); /延时函数void time();void init_timer();void shijian(); /时间函数unsigned int a;unsigned char y;unsigned char c;unsigned char v;unsigned char r; char DATA_7

13、SEG10=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,; uchar sec=0; uchar deda=0; bit d_05s=0; void delay(uint k);void conv(); void disp();void main() init_timer(); zhu(); /主函数void zhu() /主函数 unsigned char z; P3=0xff; while(1) z=(P3&0x07); if(z&0x01)=0x01) zheng(); /正向前进函数 else if(z&0x02)=0x02)

14、zuo(); /左转函数 else if(z&0x04)=0x04) you(); /右转函数 else gensui(); /正向跟随函数 void zheng() /正向前进函数 P1=0x05; for(a=0;a23;a+) time(); P1=0x00; for(a=0;a12;a+) time(); return;void zuo() /左转函数 P1=0x04; for(a=0;a23;a+) time(); P1=0x00; for(a=0;a12;a+) time(); return;void you() /右转函数 P1=0x01; for(a=0;a23;a+) tim

15、e(); P1=0x00; for(a=0;a12;a+) time(); return; void hou() /反向倒退函数 P1=0x0a; delay(150); P1=0x00; P2=0xff; sec=0; init_timer(); for(a=0;a1000;a+) time(); sec=0; P2=0xff; P3=0xff;while(1) r=(P3&0x0f); if(r&0x01)=0x01) daoche(); /倒车函数 else P1=0x0a; for(a=0;a23;a+) time(); P1=0x00; for(a=0;a12;a+) time();

16、 void ting() /停车函数 while(1) P1=0x00; P2=0x00; void daoche() /倒车函数 P3=0xff; while(1) v=(P3&0x0f); if(v&0x0fe)=0x0e) P1=0x05; delay(150); ting(); /停车函数 else if(v&0x08)=0x08) P1=0x0a; for(a=0;a23;a+) time(); P1=0x00; for(a=0;a12;a+) time(); else if(v&0x02)=0x02) P1=0x08; for(a=0;a23;a+) time(); P1=0x00

17、; for(a=0;a12;a+) time(); else if(v&0x04)=0x04) P1=0x02; for(a=0;a23;a+) time(); P1=0x00; for(a=0;a12;a+) time(); void init_timer() TMOD=0x01; TH0=-(2400/256); TL0=-(2400%256); IE=0x82; TR0=1; void T0_srv(void) interrupt 1 TH0=-(2400/256); TL0=-(2400%256); deda+; void conv() if(deda=200)sec+;deda=0; if(sec=60)sec=0; void disp() P0=DATA_7SEGsec/10;P2=0xfd;delay(1); P0=DATA_7SEGsec%10;P2=0xfe;delay(1); void shijian() /时间函数 init_timer(); while(1) time(); void time() conv(); disp(); void delay(uint k) /延时函数 uint i,j; for(i=0;ik;i+) for(j=0;j121;j+) ;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1