单片机竞赛报告(智能小车)
- 格式:docx
- 大小:1.55 MB
- 文档页数:27
电子设计大赛C题——只能小车智能小车摘要本智能小车以MSP超低功耗单片机系列MSP430F149为核心,完成在规定场地内实现两车交替超车领跑的功能。
在机械结构上,本智能小车选取大功率RP5坦克车体,具有动力性能强、底盘稳定性高、可原地转圈、转弯灵活等特点。
选用L298N驱动芯片控制电机,反射式红外发射-接受器作为黑线检测模块的传感器,nRF905作为无线通信模块,组成智能小车系统。
基于可靠的硬件设计和稳定的软件算法,实现题目要求,而且附加实现显示两车距离、行驶时间等扩展功能。
关键词:MSP430;检测黑线;超车;智能小车。
一、系统方案1、总体方案描述本系统以MSP超低功耗单片机系列MSP430F149为核心,由12V电池供电,选用L298N驱动芯片控制直流电机,反射式红外发射-接受器ST168作为黑线检测模块的传感器,NewMsg_RF905作为无线通信模块,LCD液晶显示模块作为显示模块,组成智能小车系统,如图1所示。
图1 总体系统框图2、方案设计与比较(1)电机驱动模块方案一:采用大功率三极管,二极管,电阻,电容等元件。
采用上述元件搭建两个H桥,通过对各路信号放大来驱动电机,原理简单。
但由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,很难精确控制。
方案二:采用L298N驱动芯片。
L298N芯片是较常用的电机驱动芯片。
该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性能,可用单片机的I/O口提供信号。
其优点是集成度高,电路简单,控制方便可靠,体积小,效率高,具有较高的性价比。
综合分析:方案一虽然原理简单,但是实际操作性不大,运行不稳定,而方案二则具有电路简单,控制方便,效率高等多处优点,符合本系统要求,因此选用L298N驱动芯片作为电机驱动模块。
(2)黑线检测模块方案一:采用可见光发光二极管和光敏二极管采用普通可见光发光管和光敏管组成的发射-接收电路。
其缺点在于易受到环境光源的影响,即便提高发光管亮度也难以抵抗外界光的干扰。
智能寻迹小车总结报告08电本3袁坤朱昊汪武杰1.设计任务:设计并制作了一个智能电动车,通过车前方的感光模块引导小车沿黑色路径运行,并记录小车整个运动过程的时间。
(1)感光模块引导小车运动:小车黑色轨迹白色背景图1如图1,小车运行在以白色背景的黑色轨迹上。
小车在整个运行过程中沿黑色轨迹运动,当黑色轨迹向左转时,小车能够自动左转弯,左转弯灯亮;当黑色轨迹向右转时,小车能够自动右转弯,右转弯灯亮。
(2)小车能记录整个运行过程的时间:在小车开始运行时,单片机控制计时,当小车收到停止指令后,计时器停止计时,并通过小车上的数码管显示小车整个运行过程的时间。
2.程序框图寻迹小车的主程序如下3.系统的具体设计与实现根据设计任务要求,并且根据我们自己的需要而附加的功能,该电路的总体框图可分为几个基本的模块,框图如(图2)所示:红外传感模块3.1设计中选用红外传感器来准确检测黑色寻迹线。
共设置2个传感器,传感器检测到黑色的寻迹线时,输出逻辑电平1,检测不到黑色寻迹线时,输出逻辑电平0。
在小车正前方中间安装两个标号是1号和2号的传感器用于定位寻迹线中心线,如图。
实物图:由电路图可以看出,在整个运行过程中,红外线发射管一直工作,发出红外线,由于黑色对红外线的反射量很小,而白色背景对红外的反射量很大,这样经过红外接收管的电压值的不同,可以判断出小车的运行情况。
当小车在黑色轨迹上正常运行时,1号和2号传感器输出1,当小车右偏时,2号由输出1转变为0,此时单片机驱动电机模块,调控小车左右两轮的转速,调整车身向左转;当小车左偏时,1号由输出1转变为0,单片机调控小车车身向右转。
传感器部分是小车的“眼睛”,只有通过它的引导小车才能正常在轨道上运行。
在小车的调试过程中,遇到了一些问题。
第一,两个传感器中的红外管有时一直感光,有时感光很差;第二,在黑线上运行时,在一些弯路传感器可以判断出来,一些反应迟钝,并且恢复直行的时候,传感器却依然保持上一状态运行。
一、实验背景随着科技的不断发展,智能车竞赛已成为我国大学生科技创新的重要平台。
本次实验旨在通过设计、搭建和调试智能车,培养学生的创新思维、团队协作和实际操作能力。
实验以第十六届全国大学生智能汽车竞赛为背景,旨在让学生了解智能车的结构、原理和控制方法,提高学生在实际工程中的应用能力。
二、实验目的1. 理解智能车的基本结构和工作原理;2. 掌握智能车控制系统的搭建和调试方法;3. 学习智能车传感器、执行器和控制算法的应用;4. 培养学生的创新思维和团队协作能力。
三、实验内容1. 智能车基本结构设计本次实验所使用的智能车采用C型车模平台,主要由以下部分组成:(1)车体:采用铝合金材料,轻便且坚固;(2)控制器:选用恩智浦半导体公司的MIMXRT1064芯片作为控制核心;(3)传感器:包括摄像头、编码器、陀螺仪、红外测距模块等;(4)执行器:包括电机驱动器和舵机;(5)电源:采用锂电池供电。
2. 智能车控制系统搭建(1)硬件搭建:根据设计图纸,将各个模块连接到控制器上,包括摄像头、编码器、陀螺仪、红外测距模块、电机驱动器和舵机等;(2)软件搭建:编写程序,实现传感器信号采集、数据处理、电机和舵机控制等功能。
3. 智能车控制算法设计(1)摄像头图像处理:采用图像处理算法对摄像头采集到的赛道图像进行处理,提取赛道信息;(2)速度控制:根据编码器采集到的电机转速,通过PID控制算法调整电机转速,实现速度控制;(3)方向控制:根据陀螺仪采集到的车辆姿态角速度,结合赛道信息,通过PID控制算法调整舵机角度,实现方向控制;(4)出赛道保护:利用红外测距模块检测车辆与赛道边缘的距离,当距离过小时,通过电机驱动器控制电机停止,保护车模。
4. 实验调试与优化(1)参数调整:通过调整PID参数,使车辆在赛道上稳定行驶;(2)算法优化:针对实际问题,对算法进行优化,提高车辆行驶的稳定性和速度;(3)硬件测试:对各个模块进行测试,确保硬件系统正常运行。
全国大学生智能汽车竞赛技术报告设计概览2.1整车设计思路智能车主要由三个部分组成:检测系统,控制决策系统,动力系统。
其中检测系统采用CMOS数字摄像头ov7620,控制决策系统采用S128作为主控芯片,动力系统主要控制舵机的转角和直流电机的转速。
整体的流程为,通过视觉传感器来检测前方的赛道信息,并将赛道信息发送给单片机。
同时,通过光电编码器构成的反馈渠道将车体的行驶速度信息传送给主控单片机。
根据所取得的赛道信息和车体当前的速度信息,由主控单片机做出决策,并通过PWM信号控制直流电机和舵机进行相应动作,从而实现车体的转向控制和速度控制。
2.2车模整体造型我们车模的整体设计简洁,轻便,可靠美观。
如下图:2.3智能车软件设计系统硬件对于赛车来说是最基础的部分,软件算法则是赛车的核心部分。
首先,赛车系统通过图像采样处理模块获取前方赛道的图像数据,同时通过速度传感器模块实时获取赛车的速度。
然后S128利用边缘检测方法从图像数据中提取赛道黑线,求得赛车于黑线位置的偏差,接着采用PID 方法对舵机进行反馈控制,并在PID算法的基础上,整合加入模糊控制算法,有利于对小车系统的非线性特性因素的控制。
最终赛车根据检测到的速度,结合我们的速度控制策略,对赛车速度不断进行恰当的控制调整,使赛车在符合比赛规则情况下沿赛道快速前进。
第三章小车的机械设计良好的机械结构将直接影响小车的结构稳定,和车模的高速时的性能。
模型车的机械机构和组装形式是整个模型车身的基础,机械结构的好坏对智能车的运行速度有直接的影响。
经过大量的实验经验可以看出,机械结构决定了智能车的上限速度,而软件算法的优化则是使车速不断接近这个上线速度,软件算法只有在精细的机械结构上才能够更好的提高智能车的整体性能。
3.1 舵机安装舵机转向是整个控制系统中延迟较大的一个环节,为了减小此时间常数,通过改变舵机的安装位置,降低舵机的中心,将舵机的安装尽量低,而并非改变舵机本身结构的方法可以提高舵机的响应速度。
以自动循迹智能车为载体的“单片机应用系统设计实践”1、设计目标小车能自己识别道路,自主导航跑过指定道路。
2、总体方案设计整体控制流程图:单片机控制器识别磁场信号,比赛中用的是通过信号发生器产生的变化磁场。
我们需要通过电感采集到信号,再通过运算放大电路将信号放大,继而形成识别道路的信号,最后将信号通过单片机的ADC采集管脚输入到单片机。
在单片机中处理后(在此过程中运用不同算法整理信号数据,减少误差)向舵机和电机发出指令,使小车的转角和速度做出相应改变,小车的前进方向和前进速度就会做出相应变化。
系统全部包括:汽车动态分析车速控制模块方向控制模块赛道检测模块电子控制模块策略规划模块行为决策模块路况记忆模块数据传输模块3、硬件电路设计小车硬件设计结构图人机接口模块:电感传感器原理根据电磁学相关知识,我们知道在导线中通人变化的电流(如按止弦规律变化的电流).则导线周围会产生变化的磁场,且磁场与电流的变化规律具有一致性,如果在此磁场中置一个电感,则该电感上会产生感应电动势,且该感应电动势的大小和通过线圈回路的磁通量的变化率成正比。
由于在导线周围不同位置,磁感应强度的大小和方向不同,所以不同位置上的电感产生的感应电动势也应该不同。
据此,则可以确定电感的大致位置。
采用ADC采集管收集信号:一般会采集一个周期采集多次求取平均值的方法来稳定信号。
在放大器输出端加上检波的电路,把交流信号变成直流。
信号波动很小,噪声可以忽略。
每次采集5次,求个平均。
对偏差数据的处理,这里用的是差比和,目的是为了在把偏差放在自己想要的范围之类,在不同环境下也可以得到有效偏差。
相关识别类代码有:void ADC_init(){adc_init(ADC_IN8_B0);adc_init(ADC_IN9_B1);// adc_init(ADC_IN4_A4);// adc_init(ADC_IN6_A6);}void ADC_GET(){left_ad = adc_convert(ADC_IN8_B0 ,ADC_8BIT);right_ad = adc_convert(ADC_IN9_B1 ,ADC_8BIT);}void ADC_Error(){int16 ad_difference=0;int16 ad_sum=0;ad_difference=left_ad-right_ad;ad_sum=left_ad+right_ad;ad_error=(ad_difference*30)/ad_sum;}磁传感器信号处理电路确定使用电感作为检测导线的传感器,但是其感应信号较微弱,且混有杂波,所以要进行信号处理。
智能循迹小车队长:黎建峰队员:江福家章春金赛前辅导老师:吴桔生张荣刚林章文稿整理辅导老师:吴桔生摘要设计分为五个模块:单片机最小系统、电机驱动电源、电机驱动电路、红外循迹模块、显示模块。
电机驱动电路用于转向控制;红外循迹模块利用四个光电管,对黑色轨道进行循迹;电机驱动电源利用两个7805提供三路5v电压,一路供给最小系统,一路供给电机驱动电路,一路供给循迹模块。
本设计中为了简化电路,减少小车的负载,利用软件编程的方法控制电机的转速从而控制小车的行驶速度,这是本设计的一大特色。
一、方案论证与比较1、轨迹探测模块设计与比较方案一、使用简易光电传感器结合外围电路进行检测由于光电传感器对行驶过程中的稳定性要求非常高,而且容易受到光线环境和路面介质的影响,误测的几率非常大。
在使用中极易出现问题,给检测和调试造成很大的困难,容易因为检测的失误导致整个系统的不正常工作,所以最终并未采用此方案。
方案二、使用两只stl198光电管把两只光电管分别排列在黑色轨迹的两侧,根据其接收反射光的多少输出高低电平来控制小车的转向,以达到循迹的目的。
但是调试表明,如果两只开关的距离很小,则以约束了小车的速度来达到检测轨迹的目的,如果两只开关的距离太大,则同时传来同一电平信号的几率很大,容易使小车的行驶路线偏离轨道,达不到循迹的目的。
方案三、使用四只stl198光电管分左右两边各两只光电管一排排列,里面的两个距离靠的较远,外面的两个靠的比较近。
当小车脱离轨道时即里面的两个光电管中有一个或者两个都偏离了轨道,等待外面的那两个光电管的任何一个检测到黑线时,做出相应的转向调整。
直到中间的两个开关管的任何一个检测到黑线为止(即回到轨道上)再恢复正向行驶。
现场调试表明,小车在行驶中虽然出现摇摆(各个光电管间的距离达到1厘米),但是基本上能准确地达到循迹目的。
综合考虑实际中光电管的安装,考虑小车的行驶速度和循迹准确性,我们最终选择了方案三。
1.1. 系统分析智能车竞赛要求设计一辆以组委会提供车模为主体的可以自主寻线的模型车,最后成绩取决于单圈最快时间。
因此智能车主要由三大系统组成:检测系统,控制系统,执行系统。
其中检测系统用于检测道路信息及小车的运行状况。
控制系统采用大赛组委会提供的16位单片机MC9S12XS128作为主控芯片,根据检测系统反馈的信息新局决定各控制量——速度与转角,执行系统根据单片机的命令控制舵机的转角和直流电机的转速。
整体的流程如图1.1,检测系统采集路径信息,经过控制决策系统分析和判断,由执行系统控制直流电机给出合适的转速,同时控制舵机给出合适的转角,从而控制智能车稳定、快速地行驶。
图2.11.2. 系统设计参赛小车将电感采集到的电压信号,经滤波,整流后输入到XS128单片机,用光电编码器获得实时车速,反馈到单片机,实现完全闭环控制。
速度电机采用模糊控制,舵机采用PD控制,具体的参数由多次调试中获得。
考滤到小车设计的综合性很强,涵盖了控制、传感、电子、电气、计算机和机械等多个学科领域,因此我们采用了模块化设计方法,小车的系统框图如图2.2。
第五届全国大学生智能汽车竞赛技术报告图2.21.3. 整车外观图2.31.4. 赛车的基本参数智能车竞赛所使用的车模是东莞市博思公司生产的G768型车模,由大赛组委会统一提供,是一款带有摩擦式差速器后轮驱动的电动模型车。
车模外观如图3.1。
车模基本参数如表3.1。
图3.1表3.1车模基本参数1.5. 赛车前轮定位参数的选定第五届全国大学生智能汽车竞赛技术报告现代汽车在正常行驶过程中,为了使汽车直线行驶稳定,转向轻便,转向后能自动回正,减少轮胎和转向系零件的磨损等,在转向轮、转向节和前轴之间须形成一定的相对安装位置,叫车轮定位,其主要的参数有:主销后倾、主销内倾、车轮外倾和前束。
模型车的前轮定位参数都允许作适当调整,故此我们将自身专业课所学的理论知识与实际调车中的赛车状况相结合,最终得出赛车匹配后的前轮参数[6]。
智能小车报告制作人:许晓建、林文舜制作时间:2010年11月13日星期六摘要(关键词:智能小车 AT89S52 单片机红外线发射/接收管 TIP41/42c)智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。
智能电动车就是其中的一个体现。
本次设计的简易智能电动车,采用AT89S52单片机作为小车的检测和控制核心;采用红外线发射/接收管来检测路上黑线,从而把反馈到的信号送单片机,使单片机按照预定的工作模式控制小车在各区域按预定的速度行驶,并且单片机选择的工作模式不同也可控制小车顺着S形黑线行驶;采用tip41/42c三极管作为电机的控制机构;采用lm340t5作为稳压机构。
本设计结构涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科,具有高度的智能化、人性化,是机电一体化技术的产物。
制作智能小车为机电一体化专业学科的学生学习和掌握机电一体化技术有很大的帮助,对机电一体化专业学科的学生进一步巩固已学知识加深已学知识起到促进作用,引导和激励学生实事求是、刻苦钻研、勇于创新、多出成果、提高素质,发现和培养一批在学术科技上有作为、有潜力的优秀人才。
目录▪车模结构介绍▪研究项目介绍▪赛道及比赛规则▪电源及稳压机构介绍▪关于电机驱动▪关于舵机驱动▪关于赛道检测方式▪最佳路线问题▪单片机模块及最小系统介绍▪智能车系统程序▪致谢▪参考文献▪附录车模结构介绍车模调校的主要参数:后倾角、外倾角、前束、减震弹簧预紧力研究项目介绍•汽车动态分析•车速控制系统•方向控制系统•赛道检测系统•电子控制系统•策略规划系统•行为决策系统•数据传输系统赛道及比赛规则赛道材料: KT板、高密度、白色、0.5厘米厚。
中心黑线:为黑色即时贴经过裁减而成。
用指定车模沿黑线跑两圈取单圈最快者为胜。
电源及稳压机构介绍电池:电压:1.2×6=7.2 v、容量:2000mAh放电曲线(在3A的大电流放电条件下得到的结果)正确充电:推荐使用比赛选配的充电器。
全国电子设计大赛智能小车(C题)设计报告中文摘要:采用C8051F020单片机为控制芯片控制小车的速度及转向。
其中小车驱动由L298N 驱动电路完成,速度由单片机输出的PWM波控制以实现小车在超速区的超速行驶,利用红外对管检测黑线和障碍物以实现小车的正常行驶和转弯,避免在行驶过程中越界和碰撞。
关键词:智能小车;STC89C52单片机; L298N;红外对管目录第一章方案设计与论证 (3)主控系统 (3)电机驱动模块 (3)信号检测模块 (3)两车通信模块 (4)电源模块 (4)第二章硬件设计 (4)总体设计 (4)车体设计 (5)驱动电路 (5)信号检测与控制 (7)两车通信模块 (7)第三章软件设计 (8)主程序模块 (8)信号检测模块 (9)超车区域 (10)第四章测试与结果分析 (10)结束语 (11)参考文献 (11)一、方案设计与论证、主控系统根据设计要求,我认为此设计属于多输入量的复杂程序控制问题。
据此,拟定了以下两种方案并进行了综合的比较论证,具体如下:方案一:选用一片CPLD(如EPM7128LC84-15)作为系统的核心部件,实现控制与处理的功能。
CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。
但CPLD在控制上较单片机有较大的劣势。
同时,CPLD的处理速度非常快,而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高,在这一点上,MCU 就已经可以胜任了。
若采用该方案,必将在控制上遇到许许多多不必要增加的难题。
为此,我们不采用该种方案,进而提出了第二种设想。
方案二:采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。
充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。
这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。
吉林省大学生电子设计竞赛智能电动小车方案设计报告2012.9.6摘要本题目是采用MC9S12XS128单片机为智能小车的核心,坦克车体模型为载体,该智能小车具有红外循迹,光电对管避障,L298电机驱动等功能。
首先是由单片机产生周期性的PWM波,控制全桥驱动芯片L298N驱动2个直流电机来控制智能小车的转速和方向。
小车给电后,首先执行声音口令让小车启动,并进行语音提示,然后通过利用红外对管对一区黑线进行检测,进入二区与进入三区时对标志线1、2进行捕捉,信号通过单片机分析与处理后,输出PWM波控制小车行驶轨迹,进而实现小车的前进、后退、左转、右转,并安全倒库;进入三区时用光电开关检测障碍物,当光电开关对障碍物进行扫描之后有一个返回值时,并通过调节PWM的占空比进行转弯避障。
对于小车的制作主要有硬件的焊接组装(红外对管循迹模块,电源模块,语音芯片外接电路等)、软件编程和调试(CodeWarrior Development Studio for S12(X) V5.0),整个过程中涉及到焊接工艺、单片机接口知识和C语言编程,飞思卡尔MC9S12XS128芯片外设电路等。
小车的最终效果能够在行车道上行驶一圈,实现定点停车(不超过3秒)、能进行声光提示,整个规定动作的时间不大于4分钟。
关键字:MC9S12XS128 L298N驱动红外检测无线通信细分器激光引言随着传感器技术和自动控制技术的飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。
作为机械行业的代表产品---汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。
第三届单片机综合应用设计竞赛参赛题目智能小车专业电信信息工程技术,电子信息工程班级1406142,140201Z姓名朱思东,柏秋利2016年12 月摘要本设计是基于STM32主控制芯片的智能小车。
该小车主要实现以下功能:小车在自动行驶的过程中,能够灵活地避开有障碍物和车底下有悬崖的地方且能够被遥控。
电源模块是通过7.4V锂电池实现;避障模块是通过超声波传感器和红外传感器实现;遥控模块是通过HC05蓝牙主从一体模块和手机APP实现;电机驱动模块是通过L298N实现;编程软件为MDK5。
整体系统结构简单,可靠性高。
关键词:单片机,传感器,避障,遥控1.总体设计方案及论证1.1 系统组成原理根据功能,确定如下方案:在现有车模底盘的基础上,加装超声波传感器,红外避障传感器模块检测小车周边障碍物的实时情况。
然后,把数据返回给单片机,单片机发送相应的指令实现对电动小车的自动避障、运行状况的实时测量,从而达到利用单片机对小车智能控制,自动避障的目的。
这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。
(1)STM32作为主控芯片核心,ARM 32位的Cortex-M3™CPU,36MHz,1.25DMIPS/MHz(Dhrystone2.1),0等待的存储器访问,单周期乘法和硬件除法。
存储器,从 32K字节至 128K字节闪存程序存储器,从 6K字节至 16K字节SRAM。
时钟、复位和供电管理。
2.0至 3.6伏供电和 I/O管脚。
上电 / 断电复位(POR / PDR)、可编程电压监测器(PVD)内嵌 4至 16MHz高速晶体振荡器。
内嵌经出厂调校的 8MHz RC振荡器。
低功耗,睡眠、停机和待机模式,VBAT为 RTC和后备寄存器供电。
调试模式,串行线调试(SWD)和JTAG调试接口。
DMA,7通道DMA 控制器,支持的外设:定时器、ADC、SPI、I2C,USART。
多达 80个快速 I/O口,6/37/51/80个多功能双向 5V兼容的 I/O口,所有 I/O口可以映像到 16个外部中断。
多达 6个定时器,多达 3个 16位定时器,每个定时器有多达,4个用于输入捕获 / 输出比较 / PWM或脉冲计数的通道,2个 16位看门狗定时器(独立的和窗口型的)等。
图1-1 STM32F103C8T6原理图(2)直流电机驱动芯片对于直流电机驱动芯片的选择首先我要考虑它的输出功率能不能很好的驱动小车的四个直流电机。
然后,考虑它的外围电路是否简单。
还有就是考虑它的价格是否相对比较便宜。
综合这些我最终选择以前用过的大家都比较熟悉的电机驱动芯片L298。
电机驱动部分主要采用一片L298N和单片机直接相连够成驱动电路。
L298N 芯片直插式的15个引脚,其中有两个使能端ENA和ENB,两个反馈端SA和SB,四个输入端IN1、IN2、IN3和IN4,四个输出端OUT1、OUT2、OUT3和OUT4,一个接地端GND,一个VSS(5V时性能最好)逻辑电源电压输入端和一个VS(最大承载电压46V,鉴于7805和电机电压,选取12V电源供电)功率电源电压输入端。
L298N可同时驱动两个电机,最大输出电流为2A,鉴于它的良好性能和价格,选取L298N作为电机驱动芯片,L298N芯片如图2-2。
AT89C52的P1.6端口作为pwm脉冲输出,同时与L298N的两个使能端ENA、ENB相连,达到控制小车速度目的。
P1^2~P1^5端口分别与L298N的引脚IN1、IN2、IN3、IN4相连通过电平变化控制电机在持续高速状态下的转向。
L298N的四个输出端直接与两个电机相连驱动电机。
图1-2 L298N芯片实物图和引脚图(3)超声波传感器超声波测距原理:超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2这就是所谓的时间差测距法。
超声波传感器结构如图2-3所示。
共振板电板图1-3超声波传感器结构超声波在本设计中的原理分析:由于自己用分立元器件焊接比较麻烦,所以本设计采用现成的US-100超声波模块,US-100 超声波测距模块可实现0~4.5m 的非接触测距功能,拥有 2.4~5.5V 的宽电压输入范围,静态功耗低于 2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。
US-100模块如图2-4所示。
US-100正面图US-100背面图图1-4超声波实物图超声波探测模块US-100的使用方法为:IO口触发,给Trig口至少10us的高电平,启动测量;模块自动发送8个40Khz的方波,自动检测是否有信号返回;有信号返回,通过IO 口Echo 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*340)/ 2,单位为m 。
程序中测试功能主要由两个函数完成,即measure()负责计算一次测量小车障碍物的距离,然后shouldTurn()确定前方有障碍物采取避障措施,根据车体大小及系统的反应,经过测试,取20cm 的反应距离效果较为明显。
另外,US-100超声波探测模块探测的间隔周期推荐值是64ms (图2-5),但经过试验,我们发现在我们的小系统中取800ms 较为适宜,使主程序有足够的时间来驱动小车前进,而不至于出现前进不流畅的现象。
触发信号10uS 的TTL循环发出8个40KHz 脉冲模块内部发出信号输出回响信号回响电平输出与检测距离成比例图1-5 超声波检测原理(4)红外传感器模块避障传感器基本原理,利用物体的反射性质。
在一定范围内,如果没有障碍物,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。
如果有障碍物,红外线遇到障碍物,被反射到达传感器接收头。
传感器检测到这一信号,就可以确认正前方有障碍物,并送给单片机,单片机进行一系列的处理分析,协调小车两轮工作,完成一个漂亮的躲避障碍物动作 。
(5)遥控模块蓝牙模块BT-HC05模块是一款高性能的蓝牙串口模块。
1、可用于各种带蓝牙功能的电脑、蓝牙主机、手机、PDA 、PSP 等智能终端配对。
2、宽波特率范围4800~1382400,并且模块兼容单片机系统。
3、当主从模式两个蓝牙模块配对成功后,可以简单的,更改为无线的蓝牙,让您的设备或者产品更高级,更时尚。
4、您可以很容易的使用提供的蓝牙手机软件来等。
2.硬件设计2.1.系统设计总框图本系统采用STM32单片机进行智能控制。
按下开始键启动小车,当小车上的超声波检测到前方20CM内有障碍物的时候就左右扫描,如果20CM内仍有障碍物,小车停止前进。
当小车底部悬空,电机反转,500ms后右转。
小车在整个行驶过程中,可被遥控。
通过单片机控制小车避障、转弯等一系列动作;系统的自动避障功能通过超声波传感器正前方检测,由单片机控制实现;在小车行进过程中,采用单片机驱动L298实施PWM脉宽调制技术,以提高系统的静动态性能。
图2.1 系统总体框图2.2避障子系统设计框图图2.2 系统总体框图2.3遥控子系统设计框图图2.3 系统总体框图3.软件设计3.1软件设计流程本设计系统软件采用模块化结构,由主程序、定时子程序、电机驱动子程序、中断子程序、显示子程序、算法子程序构成。
定时器完成对超声波探测器发出的超声波在小车和障碍物之间往返运行的时间,然后在算法子程序中计算出小车距障碍物的距离,小车根据距障碍物的距离决定是继续前进还是转弯,主程序流程图如图3-1所示图3-1 主程序流程图3.2超声波探测模块实现中采用定时器进行定时测量,超声波探测程序流程图如图4-2所示。
超声波测距部分程序分析:在while循环中不断的对前方数据扫描检测周边障碍物。
其中给TRIG脚先置高电平,这样超声波发出8个40HZ的方波信号,稍作延时,再把TRIG脚置低电平。
当检测有信号返回时IO口就输出高电平。
这样就可以通过公式计算出障碍物距小车的距离。
部分程序如下:图3-2 超声波探测流程/******************************************************************** *******程序部分********************************************************************* ******/3.3直流电机驱动部分软件设计#define GPIO_MOTOR_PORT GPIOB#define GPIO_IN1 GPIO_Pin_6#define GPIO_IN2 GPIO_Pin_7#define GPIO_IN3 GPIO_Pin_8#define GPIO_IN4 GPIO_Pin_9void MOTOR_GPIO_Config(void)//初始化{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 |GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_ResetBits(GPIOB, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 |GPIO_Pin_9);}void motor_go_forward(void)//前进{GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN1);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN2); GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN3);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN4); }void motor_go_back(void)//后退{GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN2);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN1); GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN4);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN3); }void motor_stop(void)//停止{GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN2);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN1); GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN4);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN3); }void motor_go_left(void)//左转{GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN2);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN1); GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN3);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN4);}void motor_go_right(void)右转{GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN1);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN2); GPIO_SetBits(GPIO_MOTOR_PORT,GPIO_IN4);GPIO_ResetBits(GPIO_MOTOR_PORT,GPIO_IN3);}3.4 pwm控制舵机部分软件设计void TIM3_Configuration(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能TIM3TIM_TimeBaseStructure.TIM_Prescaler = 72-1;TIM_TimeBaseStructure.TIM_Period = 20000-1;TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);TIM_ARRPreloadConfig(TIM3, DISABLE);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能//占空比=(TIM_Pulse+1)/(TIM_Pulse+1)-(TIM_Period+1)=10000/20000=0.5=50%TIM_OCInitStructure.TIM_Pulse = 10000-1;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高TIM_OC2Init(TIM3, &TIM_OCInitStructure); //根据TIM_OCInitStruct 中指定的参数初始化外设TIMxTIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIMx在CCR2上的预装载寄存器TIM_CtrlPWMOutputs(TIM3,ENABLE); //设置TIM2的PWM输出为使能TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIMx在ARR上的预装载寄存器TIM_Cmd(TIM3, ENABLE); //使能TIMx外设}4.软硬件调试4.1系统调试由于US-100对于障碍物的反射面有一定要求,即不能凹凸不平,应尽量平滑,否则测量不会很准确。