基于51单片机智能小车的设计与实现转弯避障_基于单片机的智能小车设计

基于51单片机智能小车的设计与实现转弯避障_基于单片机的智能小车设计0引言学习智能小车系统,有助于提高搭建系统的能力和对自动控制技术的理解。智能小车是一个较为完整的智能化系统,而智能化的研究已成为我国追赶世界科技水平的重要任务。智能小车有它特有的特点:成本低,涉及的知识面广,易于拓展[1]。整个智能小车系统作为一个完整的系统,从它的原理图的实现到实物的完成的过程,不仅需要深厚的电子方面的知识,还有对电路实现的良好掌握,对于培养学生的实践能力都有重要的意义。智能小车…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

0引言

学习智能小车系统,有助于提高搭建系统的能力和对自动控制技术的理解。智能小车是一个较为完整的智能化系统,而智能化的研究已成为我国追赶世界科技水平的重要任务。智能小车有它特有的特点:成本低,涉及的知识面广,易于拓展[1]。整个智能小车系统作为一个完整的系统,从它的原理图的实现到实物的完成的过程,不仅需要深厚的电子方面的知识,还有对电路实现的良好掌握,对于培养学生的实践能力都有重要的意义。智能小车的竞赛在我国各大高校中都受到了重视,吸引了大批的高校学生的兴趣,而且取得了很多优异的成果,为我国推进智能化的进程做出了巨大的贡献,也为智能汽车的发展提供了理论依据[2-3]。只有当把理论和模型应用到实践中,这样的创新才用意义,我们国家这几年在智能化方面的进步越来越快,也推动了我国在国际社会上在智能化方面的话语权。智能小车是智能化的一部分,它的系统里的避障、循迹、红外遥控的技术用到了智能化,将智能化应用到传统技术上是21世纪发展的趋势。我国虽然从改革开放以来大力发展科技创新,但是在智能化的创新水平与国外较发达的国家相比还有巨大的差距,智能竞赛在高校越来越流行,也证明了我国教育在这方面很快会赶上世界上的发展水平。本次设计是以单片机为CPU,通过编程和一些外围电路的设计来实现红外遥控,避障,循迹等功能。最重要的是把模型上的研究应用到实际生活中,智能车辆便做到了这一点[4-6]。在实际应用中比如在倒车的过程中实现的红外警报系统是以智能小车为模型而研发出来的。对于电子知识的热爱与钻研有利于研发更多智能车辆,使我们的生活更加便利、智能化。

1. 系统的整体框架和工作原理。

1.1系统的整体框架

智能小车以STC89C51为主芯片,使用两轮驱动,另外还需要一个万向轮,起到支撑和平衡小车的作用。主要包括电机模块,电源模块,循迹模块,红外遥控模块,超声波模块,LED显示模块等组成,系统的整体设计设计框图如图1所示。

                图1 系统的整体设计框架组成图

1.2系统的工作原理

智能小车以STC89C51为主芯片,使用两轮驱动,用两个电机分别驱动左轮和右轮。通过电机来调节车轮的转速从而可以实现控制转向的功能,另外还需要一个万向轮,起到支撑和平衡小车的作用[7]。在小车的车体左右分别安装红外线光电传感器,通过黑白线来检测循迹的功能:当黑线的边界被小车左侧的传感器检测到的时候,会向单片机发送一个信号,当单片机接收到信号的时候,会控制左轮电机,小车开始向左调整方向;同理当小车的右边传感器检测到黑线时,主控芯片开始控制小车右轮的电机,使其减速,小车开始向右修正。在小车的前部分安装了一个红外线光电开光来实现避障,当障碍物被传感器检测到的时候,车轮开始转动,小车避开障碍物继续行驶[8-10]。

红外遥控部分是由发射和接收两部分组成,采用红外遥控器的2,4,6,8键来控制小车的前进,后退,左转,右转,当红外遥控器的数字键按下的时候,经过发射端的编码和调制,再通过电转换放大器,发送给接收端的红外接收头,通过一系列的过程来完成红外遥控的这个过程。

通过轻触按键来选择小车的模式,本系统下小车共有三种模式,分为循迹模式、避障模式和红外遥控模式,分别用黄、绿、红这三个LED灯来代表,系统通入电源默认状态下是红外遥控。当轻触按键第一次按下的时候,绿灯亮,开始进入避障模式,再按一次按键开始进入循迹模式,此时红灯亮[11]。

2.系统各模块设计

2.1 红外循线模块

本次设计中将采用红外发光二极管作为反射式光电传感器。红外发光二极管的工作原理:发射管为无色透明的LED灯,它在接入电源之后能产生红外光,这种红外光人眼是看不到的。接收管为黑色的LED灯,红外光的多少会影响其内部的电阻的大小,它并没有固定不变的电阻。利用黑色吸光的原理,当小车行驶的过程中,遇到黑色物体,红外发射管发射回来的光比较少,因此接收管可接收到的红外光就比较少,它们之间成正比例关系,此时接收管内的电阻会变得较小,外围电路就可以读出到检测黑线的状态。用电平的高低来反应循迹过程,将信号发送给单片机的i/o口,就可以完成循迹功能[12-13]。

外部电路用到了LM393,它的内部集成了2路比较器集成电路,由于这2路比较器完全相同,所以我只要了解一路的原理即可,比较器共有3个端口,其中有2个输入端和1个输出端,其中同相输入端用“+”表示,反相输入端用“-”表示,它用作比较2个输入的电压时,2个输入端的任意一个的固定电压作为参考电压,剩下的一端只需要接需要比较的信号电压。含有LM393的红外循线模块原理图如图2所示[14]。

图2 含有LM393的红外传感器电路原理图

2.2避障模块

本次设计采用了HC-SR04超声波模块,源于它广泛应用与智能小车的避障原理中,考虑到它的特性和工作原理,本次实验将采用HC-SR04作为超声波模块的器件。它有4个引脚:1引脚接5V电源,2引脚为Trig端,接P2.4,3引脚为Echo端,接P2.5,4引脚为红色接地。HC-SR04电路连接如图3所示:

 

 

 

 

 

 

 

图3 HC-SR04电路连接图

3.软件设计

当硬件设计完成之后最重要的部分是进行软件设计,根据每个模块的不同来进行软件编程,共分为红外遥控、循迹和避障三个模块,这三个模块是通过一个按键来控制小车的状态,所有的软件设计都是以STC89C51单片机为中心,进行软件编程,智能小车系统中的软件部分是通过keil-uvision4进行程序调试,通过STC软件烧写到51单片机中,软件部分的关键是各个I/O口的连接,本次设计中将电机控制接线接到了P1的四个端口,传感器接到了P2端口,红外遥控信号接口接到了P3口[15]。考虑到红外遥控的程序以及循迹、避障的算法已经比较成熟,红外对管的原理也为固定内容,较为简单,而且需要调试程序的地方并不多,所以本次设计没有留USB 接口,而是选择直接把程序烧写到单片机中,将单片机与循迹,避障模块按照原理图进行焊接,通过原理图的设计,以及一些巧妙的走线方式简易了整个系统,使程序变的简单容易理解,节约了成本而且降低了整个系统的难度。整个智能小车系统可以分为数据处理和过程控制这两个部分,其中数据处理是整个系统的前提,它包括:模拟变化、对数据进行采集、数字滤波、距离计算等,只有这一步得到了合适的设计,才能保证过程控制的顺利完成。

3.1避障子程序流程图

避障模块的简单流程图如图4所示,当打开电源,小车的电源指示灯亮起,小车的默认状态下是红外遥控的方式,按一下模块控制键,开始进入避障模式的状态,小车开始匀速行驶,利用超声波模块进行避障,利用单片机输出一个触发信号,把触发信号输入到超声波测距模块,再由超声波测距模块的发射器向某一方向发射超声波,在发射的同时单片机通过软件开始计时,超声波在空气中传播,遇到障碍物返回,接收器接收到反射波产生一个信号反馈给单片机,此时停止及时。发射点距障碍物的距离为s,它的公式为s=time*1.8/100,其中time=TH0*256+TL0。当前方没有障碍物的时候,小车会继续行驶,此时线外线传感器会从低电平恢复为高电平,电机的转向保持不变[16]。

 

 

 

 

 

 

 

 

图4 避障模块流程图

3.2循迹子程序流程图

小车的循线模块流程图如图5所示。打开小车的电源开关,按下两次模式选择开关会进入循迹模式。小车进如循迹模式的状态下,小车会在提前设定的环境下进行测试,当左边的红外线接收管为高电平时,小车开始向左转;当右边的红外接收管为高电平时,小车开始右转,如果不是,小车则继续沿着黑线保持行驶。

 

 

 

 

 

 

 

 

 

 

 

 

图5循线模块流程图

4.调试与结果分析

4.1测试方法

(1)打开电源开关,将智能小车放置在平坦的地板路面,开始进行红外测试,使用红外遥控器的2,8,4,6键进行前后左右这四个方向的测试,先检查是否可以前进和后退,然后在检测是否可以转弯。注意这个过程中小车的速度都是匀速前进。在这个过程中需要记录多次数据,避免因为误差而导致测试结果的不准确性。

(2)通过按键选择避障模式,在小车直行的前方放一些障碍物,当小车接近障碍物是判断小车是否可以成功避开障碍物。小车避障的距离是确定好的,所以可以通过简单的障碍物来判断避障的结果。

(3)通过按键选择循迹模式,在设计的简易黑白线跑道上进行测试,判断小车是否能够成功完成循迹功能。

4.2测试结果

    将程序烧写到单片机中,进行了数次的实验,这里记录了6实验数据进行分析,结果如下表所示。

小车运行次数

成功循迹次数

成功避障次数

成功红外遥控次数

1

1

1

1

2

2

2

2

3

3

2

3

4

4

3

4

5

5

5

5

6

5

6

5

    通过数次的测试,小车能够较好的完成循迹、避障、红外遥控的功能,通过以上数据的分析,小车在循迹和红外遥控方面的成功率较高,在避障实验中会存在误差,后来经过仔细的分析发现误差的原因收到周围强光和跑道设计的不合理的影响,这些不足的方面还有待改进。

5.结束语

本系统是以STC89C51单片机为CPU,通过一些外围电路和软件编程实现循迹、避障和红外遥控的功能。整个设计过程中最大的特点是利用简单的原理图将避障,循迹,红外遥控这三个模块有效的结合起来,利用经典的H桥路作为小车前进、后退、左右转编程的理论基础,提高了效率,降低了编程的复杂度,本系统具有很强的研究的意义,智能化的发展促使了智能小车往功能更加强大的方向发展,将会在勘探危险建筑物的环境和检测有毒气体等领域发挥着重要意义。

参考文献

[1]陆蕊. 基于单片机的智能小车系统的设计[J]. 电子世界, 2017(8):166-166.

[2陈梦婷,胡白燕,黄璨.基于单片机的智能循迹避障小车的设计与实现[J].智能机器人,2016:47-51.

[3]陈海宴.51单片机原理及应用[M].北京:北京航空航天大学出版社.2010:62-65.

[4]高枫.基于ARM的智能寻迹小车的设计与实现[D].山西:中北大学,2012.6.

[5]陈海洋,李东京.基于单片机的智能循迹避障机器人小车设计[J].科技风,2014(20):99.

[6]钱栢霆,李娟.基于单片机的循迹避障智能小车系统的设计[J].电子制作,2015(6x).

[7]寸巧萍.基于Mega16单片机的智能小车循迹避障设计方案

[8].电子技术与软件工程,2015(18):258.

[9] 顾群,蒲双雷.基于单片机的智能小车避障循迹系统设计[J].数字技术与应用,2012(5):23.

[10]蔡莉莎, 曾维鹏. 基于人工智能路径规划系统的智能小车的设计与实现[J]. 电子世界, 2016(18):112-113.

[11]朱思敏. 自循迹智能小车控制系统的设计与实现[D]. 浙江工业大学, 2013.

[12]徐少朋. 基于Android开发的智能小车路径规划[D]. 天津大学, 2014.

[13]吕闪, 金巳婷, 沈巍. 基于STM32的循迹避障智能小车的设计[J]. 计算机与数字工程, 2017, 45(3):549-552.

[14]朱丹峰, 葛主冉, 林晓雷. 基于Android平台的无线遥控智能小车[J]. 电子器件, 2013, 36(3):408-412.

[15]俞文武, 程恒文, 金天宝,等. 基于STM32的智能跟踪小车的设计[J]. 山东工业技术, 2017(8):294-296.

[16]李娜, 杨春鹤, 王泽昊,等. 浅谈基于STM32单片机的智能车设计过程[J]. 数码世界, 2016(11):90-91.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180951.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Fvwm 笔记「建议收藏」

    Fvwm 笔记「建议收藏」Fvwm笔记 Fvwm笔记Fvwm的安装和启动透明效果的实现截图和配置文件http://learn.tsinghua.edu.cn:8080/2001315450/fvwm_frame.htmlFvwm的安装和启动首先安装fvwm2。然后将.Xinitrc文件中其他窗口管理器的启动命令…

  • 50个多线程面试题,你会多少?(一)[通俗易懂]

    50个多线程面试题,你会多少?(一)[通俗易懂]下面是Java线程相关的热门面试题,你可以用它来好好准备面试。什么是线程? 什么是线程安全和线程不安全? 什么是自旋锁? 什么是Java内存模型? 什么是CAS? 什么是乐观锁和悲观锁? 什么是AQS? 什么是原子操作?在JavaConcurrencyAPI中有哪些原子类(atomicclasses)? 什么是Executors框架? 什么是阻塞队列?如何使用阻塞队列来…

  • vue将时间戳转换成日期格式[通俗易懂]

    (1)创建一个处理时间格式的js,内容如下:exportfunctionformatDate(date,fmt){if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(date.getFullYear()+”).substr(4-RegExp.$1.length))}leto={…

  • opc服务器网站,OPC 服务器[通俗易懂]

    opc服务器网站,OPC 服务器[通俗易懂]OPC服务器OPC服务器,是指按照OPC基金组织规定的OPC规范群开发的软件驱动。OPC服务器作为中间媒介负责从数据源读取数据再跟另外一端的客户端通信。在OPC客户端/服务器的结构图中,通信的发起端是,也只能是OPC客户端。客户端和服务器的对话是双向的,也就是说,客户端既可以从服务器读出也可以向服务器写入。TOPC基金会定义了四种不同类型的OPC服务器。他们分别是:OPC数据访问服务器…

  • hduoj 1034「建议收藏」

    hduoj 1034「建议收藏」CandySharingGameTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):5890    AcceptedSubmission(s):3580ProblemDescriptionAnumberof

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号