博舍

智能小车的设计与制作 智能小车制作流程

智能小车的设计与制作

《智能电动小车》摘要:本课题组设计制作了一款具有智能判断功能的小车,功能强大。小车具有以下几个功能:自动避障功能;寻迹功能(按路面的黑色轨道行驶);趋光功能(寻找前方的点光源并行驶到位);检测路面所放置的铁片的个数的功能;计算并显示所走的路程和行走的时间,并可发声发光。作品可以作为高级智能玩具,也可以作为大学生学习嵌入式控制的强有力的应用实例。   作品以两电动机为主驱动,通过各类传感器件来采集各类信息,送入主控单元AT89S52单片机,处理数据后完成相应动作,以达到自身控制。电机驱动电路采用高电压,高电流,四通道驱动集成芯片L293D。其中避障采用红外线收发来完成;铁片检测部分采用电感式接近开关LJ18A3-8-Z/BX检测;黑带检测采用红外线接收二极管完成;趋光部分通过3路光敏二极管对光源信号的采集,再经过ADC0809转化为数字信号送单片机处理判别方向。由控制单元处理数据后完成相应动作,实现了无人控制即可完成一系列动作,相当于简易机器人。关键字:智能控制  蔽障 红外线收发 寻迹行驶 趋光行驶1.总体方案论证与比较    方案一:采用各类数字电路来组成小车的控制系统,对外围避障信号,黑带检测信号,铁片检测信号,各路趋光信号进行处理。本方案电路复杂,灵活性不高,效率低,不利于小车智能化的扩展,对各路信号处理比较困难。    方案二:采用ATM89S52单片机来作为整机的控制单元。红外线探头采用市面上通用的发射管与及接收头,经过单片机调制后发射。铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,黑带采用光敏二极管对光源信号采集,再经过ADC0809转化为数字信号送到单片机系统处理。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,能很好地满足题目的要求。    比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能达到题目的设计要求,因此采用方案二来实现。方案二的基本原理如图1所示。

避障部分采用红外线发射和接受原理。铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,产生的高低电平信号经过处理后,完成相应的记录数目,驱动蜂鸣器发声。黑带寻迹依*安装在车底部左右两个光敏二极管对管来对地面反射光感应。寻光设计在小车前端安装3路(左、中、右)光敏电阻对光源信号采集,模拟信号经过ADC0809转化为数字信号送到MCU处理。记程通过在车轮上安装小磁块,再用霍尔管感应产生计数脉冲。记时由软件实现,显示采用普通七段LED。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现。2.模块电路设计与比较1)避障方案选择    方案一:采用超声波避障,超声波受环境影响较大,电路复杂,而且地面对超声波的反射,会影响系统对障碍物的判断。    方案二:采用红外线避障,利用单片机来产生38KHz信号对红外线发射管进行调制发射,发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出TTL电平。外界对红外信号的干扰比较小,且易于实现,价格也比较便宜,故采用方案二。    红外线发射接受电路原理图如图2所示。    采用红外线避障方法,利用一管发射另一管接收,接收管对外界红外线的接收强弱来判断障碍物的远近,由于红外线受外界可见光的影响较大,因此用250Hz的信号对38KHz的载波进行调制,这样减少外界的一些干扰。接收管输出TTL电平,有利于单片机对信号的处理。采用红外线发射与接收原理。利用单片机产生38KHz信号对红外线发射管进行调制发射,发射距离远近由RW调节,本设计调节为10CM左右。发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出TTL电平。利用单片机的中断系统,在遇障碍物时控制电机并使小车转弯。由于只采用了一组红外线收发对管,在避障转弯方向上,程序采用遇障碍物往左拐方式。如果要求小车正确判断左转还是右转,需在小车侧边加多一组对管。外界对红外信号的干扰比较小,性价比高。。调试时主要是调制发射频率为接收头能接收的频率,采用单片机程序解决。发射信号强弱的调节,由可调精密电阻调节。

2)检测铁片方案选择    方案一:采用电涡流原理自制的传感器,取才方便,但难以调试,输出信号也不可*,成功率比较低,难以准确输出传感信息。    方案二:采用市面易购的电感式接近开关,本系统采用市面比较通用LJ18A3-8-Z/BX来完成铁片检测的任务。虽然电感式接近开关占的体积大,对本是可以接受,且输出信号较可*,稳定性好,受外界的干扰小,故采用方案二。    检测铁片电路原理图如图3所示。

3)声音提示    方案一:采用单片机产生不同的频率信号来完成声音提示,此方案能完成声音提示功能,给人以提示的可懂性比较差,但在一定程度上能满足要求,而且易于实现,成本也不高,我们出自经费方面考虑,采用方案一。    方案二:采用DS1420可分段录放音模块,能够给人以直观的提示,但DS1420录放音模块价格比较高,也可以采用此方案来处理,但方案二性价比不如方案一。4)黑带检测方案选择    方案一:采用发光二极管发光,用光敏二极管接收。由于光敏二极管受可见光的影响较大,稳定性差。    方案二:利用红外线发射管发射红外线,红外线二极管进行接收。采用红外线发射,外面可见光对接收信号的影响较小,再用射极输出器对信号进行隔离。本方案也易于实现,比较可*,因此采用方案二。黑带检测电路图如图4所示。    输出信号进入74LS02。稳定性能得到提升。当小车低部的某边红外线收发对管遇到黑带时输入电平为高电平,反之为低电平。结合中断查询方式,通过程序控制小车往哪个方向行走。电路中的可调电阻可调节灵敏度,以满足小车在不同光度的环境光中能够寻迹。由于接收对管装在车底,发射距离的远近较难控制,调节可调电阻,发现灵敏度总是不尽人意,最后采用在对管上套一塑料管,屏蔽外界光的影响,灵敏度大幅提升。再是转弯的时间延迟短长控制。

3)计量路程方案    方案一:利用红外线对射方式,在小车的车轮开一些透光孔来计量车轮转过圈数,从而间接地测量路程。    方案二:利用霍尔元件来对转过的车轮圈数来计程,在车轮子上装小磁片,霍尔元件*近磁片一次计程为车轮周长。此方案传感的信号强,电路简单,但精度不高。    如果想达到一定的计量精度,用霍尔传感元件比较难以实现,因为在车轮上装一定量的小磁片会相互影响,而利用红外线对射方式不会影响各自的脉冲,可达到厘米的精度,因此采用方案一来实现。计量路程示意图见图5。    通过计算车轮的转数间接测量距离,利用了霍尔元件感应磁块产生脉冲的原理,再对脉冲进行计数。另可采用红外线原理提高记程精度,其方法为在车轮均匀打上透光小孔,当车轮转动时,红外光透射过去,不断地输出脉冲,通过单片机对脉冲计数,再经过一个数据的处理过程,这样就可把小车走过的距离计算出来,小孔越多,计数越精密。

3)智能车驱动电路    方案一:采用分立元件组成的平衡式驱动电路,这种电路可以由单片机直接对其进行*作,但由于分立元件占用的空间比较大,还要配上两个继电器,考虑到小车的空间问题,此方案不够理想。    方案二:因为小车电机装有减速齿轮组,考虑不需调速功能,采用市面易购的电机驱动芯片L293D,该芯片是利用TTL电平进行控制,对电机的*作方便,通过改变芯片控制端的输入电平,即可以对电机进行正反转*作,很方便单片机的*作,亦能满足直流减速电机的要求。智能车驱动电路实现如图6所示。

小车电机为直流减速电机,带有齿轮组,考虑不需调速功能,采用电机驱动芯片L293D。L293D是著名的SGS公司的产品。为单块集成电路,高电压,高电流,四通道驱动,设计用来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达),和开关电源晶体管。内部包含4通道逻辑驱动电路。其额定工作电流为1A,最大可达1.5A,Vss电压最小4.5V,最大可达36V;Vs电压最大值也是36V,经过实验,Vs电压应该比Vss电压高,否则有时会出现失控现象。表1是其使能、输入引脚和输出引脚的逻辑关系。                                               表1 引脚和输出引脚的逻辑关系

    L293D可直接的对电机进行控制,无须隔离电路。通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转,停止的*作,非常方便,亦能满足直流减速电机的大电流要求。调试时在依照上表,用程序输入对应的码值,能够实现对应的动作,调试通过。3) 寻找光源功能    方案一:在小车前面装上几个光电开关,通过不同方向射来的光使光电开关工作,从而对小车行驶方向进行控制,根据光电开关特性,只有当光达到一定强度时才能够导通,因此带有一定的局限性。    方案二:在小车前面装上参数一致的光敏二极管或者光敏电阻,再通过A/D转换电路转换成数字量送入单片机,单片机再对读入的几路数据进行存储、比较,然后发出命令对外围进*作。对方案一、二进行比较,方案二硬件稍为复杂,但能够对不同强度的光进行采集以及比较,*作灵活,所以采用方案二。    寻找光源电路图如图7所示。

3)显示部分    方案一:采用LCD显示,用单片机可实现显示数据,但显示亮度和字体大小在演示时不尽人意,价格也比较昂贵。                    方案二:采用LED七段数码管,采用经典电路译码和驱动,电路结构简单,并且可以实现单片机I/O口的并用,显示效果直观,明亮,调试容易。故采用LED数码管显示。4)显示电路如图8所示。

3.系统原理及理论分析1)单片机最小系统组成     单片机系统是整个智能系统的核心部分,它对各路传感信号的采集、处理、分析及对各部分整体调整。主要是组成是:单片机AT89S52、模数转换芯片ADC0809、小车驱动系统芯片L293D、数码管显示的译码芯片74LS47、74LS138及各路的传感器件。2)避障原理   采用红外线避障方法,利用一管发射另一管接收,接收管对外界红外线的接收强弱来判断障碍物的远近,由于红外线受外界可见光的影响较大,因此用250Hz的信号对38KHz的载波进行调制,这样减少外界的一些干扰。接收管输出TTL电平,有利于单片机对信号的处理。3)计程原理    通过计算车轮的转数间接测量距离,在车轮均匀打上透光小孔,当车轮转动时,红外光透射过去,不断地输出脉冲,通过单片机对脉冲计数,再经过一个数据的处理过程,这样就可把小车走过的距离计算出来。4)黑带检测原理   利用光的反射原理,当光线照射在白纸上,反射量比较大,反之,照在黑色物体上,由于黑色对光的吸收,反射回去的量比较少,这样就可以判断黑带轨道的走向。由于各路传感器会对单片机产生一定的干扰,使信号发生错误。因此,采用一级射极输出方式对信号进行隔离,这样系统对信号的判断就比较准确。4.系统程序设计   用单片机定时器T0产生38KHz的方波,再用定时器T1产生250Hz的方波对38KHz方波进行调制。为了提高小车反应灵敏度,对红外线接收信号及黑带检测信号都采用中断法来处理。用定时方法对铁片检测、计量路程、倒车、拐弯及数码管动态扫描进行处理。   主程序流程图见图9,各子程序图见图10、图11、图12。

6.调试及性能分析    整机焊接完毕,首先对硬件进行检查联线有无错误,再逐步对各模块进行调试。首先写入电机控制小程序,控制其正反转,停机均正常。加入避障子程序,小车运转正常,调整灵敏度达最佳效果。加入显示时间子程序,显示正常。铁片检测依*接近开关,对检测信号进行处理并实时显示和发出声光信息,无异常状况。路程显示部分是对霍尔管脉冲进行计数,为了尽量达到精确,车轮加装小磁片。接着对黑带检测模块调试,发现有时小车会跑出黑带,经判断是因为红外线收发对管灵敏度不高,调整灵敏度后仍然达不到满意效果,疑是受环境光影响,利用塑料套包围红外线收发后问题解决。趋光电路主要由三个光敏电阻构成,调整三个光敏电阻的角度同时测试软件,以最佳效果完成趋光功能。    整机综合调试,上电后对系统进行初始化,接着控制电机使小车向前行驶,突然发现系统即刻进入外部中断1,重复多次测试,结果都是自动进入该中断。推断是由刚上电时电机起动所引起,为了避免上电瞬间的影响,在启动小车后延时几毫秒,再开外部中断,结果问题解决。允许的话应采用双电源供电,即电机和电路应分开供电,L293D与单片机之间采用隔离信号控制。这样就不会出现小车启动时程序出错和数码管显示闪动的问题。在计程精度上,可用红外线原理获得较高精度。7.结论   通过各种方案的讨论及尝试,再经过多次的整体软硬件结合调试,不断地对系统进行优化,智能小车能够完成各项功能到达车库。8.参考文献 《单片机应用技术》  《周立功单片机》 《单片机原理与应用》 《8051单片机程序设计与实例》 《MCS-51单片机实验指导》 

智能小车(四轮)制作

 智能小车的制作是学习51单片机中一个很重要的过程,下面是自己完成小车的一点心得,在这里和大家分享。

代码如下:

#include   //IO引脚定义:sbitkey1=P3^7;   //定义按键1sbitkey2=P3^6;   //定义按键2sbitkey3=P3^5;   //定义按键3sbitkey4=P3^4;   //定义按键4

sbitL_WXJ=P2^1;         //四路寻迹模块接口第四路,左外录迹         sbitR_WXJ=P2^3;         //四路寻迹模块接口第一路,右外寻迹

sbitIN1=P3^0;      sbitIN2=P3^1;sbitIN3=P1^2;sbitIN4=P1^3;sbitIN11=P2^6;                                 sbitIN22=P2^7;sbitIN33=P0^2;sbitIN44=P0^3;

sbitL_PWM=P1^4;    //左轮调速,接驱动模块ENA使能端,在这里输入PWM信号sbitR_PWM=P1^6;    //右轮调速,接驱动模块ENB使能端,在这里输入PWM信号sbitL_PWM1=P0^4;    //左轮调速,接驱动模块ENA使能端,在这里输入PWM信号sbitR_PWM1=P0^5;    //右轮调速,接驱动模块ENB使能端,在这里输入PWM信号

//宏定义#defineL_go   IN1=0;IN2=1;//左轮前进#defineL1_go   IN33=0;IN44=1;//左轮前进#defineL_back  IN1=1;IN2=0;//左轮后退#defineL1_back  IN33=1;IN44=0;//左轮后退  #defineR_go     IN3=0;IN4=1;//右轮前进#defineR1_go     IN11=0;IN22=1;//右轮前进#defineR_back    IN3=1;IN4=0;//右轮后退#defineR1_back    IN11=1;IN22=0;//右轮后退

#definecar_go            L_go;R_go;      //小车前进#definecar_go1            L1_go;R1_go;           #definecar_back         L_back;R_back   //小车后退#definecar_back1         L1_back;R1_back;#definecar_left         R_go;L_back#definecar_left1         R1_go;L1_back      //小车左转弯#definecar_right         L_go;R_back      //小车右转弯#definecar_right1         L1_go;R1_back#definecar_stop         L_stop;R_stop;L_stop;R_stop;   //小车停车

//数据定义unsignedcharl_tt=0;   //定时器计数用

unsignedcharl_Lpwm=0;   //左轮PWM占空比值,我们设计3个格,0-2,0为停止,2为全速unsignedcharl_Rpwm=0;   //右轮PWM占空比值,我们设计3个格,0-2,0为停止,2为全速unsignedcharl_Lpwm1=0;   //左轮PWM占空比值,我们设计3个格,0-2,0为停止,2为全速unsignedcharl_Rpwm1=0;   //右轮PWM占空比值,我们设计3个格,0-2,0为停止,2为全速

//TIMER0中断服务子函数产生PWM信号voidtimer0()interrupt1 using2{   TH0=0XFC;    //定时1毫秒,10格调速,为100HZ频率,此频率下效果比较好,过大有噪声,过小振动大   TL0=0X17;   l_tt++;   if(l_tt>3)l_tt=0;   //比较用,3格调速      if((l_tt)      R_PWM=0;      R_PWM1=0;   }}

voidXJmoto(void){      while(1){      //循环探测         if((R_WXJ==0)&&(L_WXJ==0))         {         car_go;         car_go1;         }         elseif((R_WXJ==0)&&(L_WXJ==1))          {         car_right;         car_right1;         }         elseif((R_WXJ==1)&&(L_WXJ==0))         {         car_left;         car_left1;         }         else{                                 car_go;         car_go1;  //如果写成后退,易出现问题                              }      }}

/***********主函数开始********************************************************/   voidmain(void){   TMOD=0x01; //定时器0方式1,16位计数器,用来计数时间,定时器1做为波特率发生器    TH0=(65536-100)/256;       TL0=(65536-100)%256;   TR0=1;   ET0=1;   EA=1;       l_Lpwm=0;   l_Rpwm=0;   l_Lpwm1=0;   l_Rpwm1=0;

   while(1){      //按键选择不同车速,以适应不同的赛道      if(key1==0){      //按下按钮S1启动寻迹功能         l_Lpwm=1;//设置速度         l_Rpwm=1;         l_Lpwm1=1;//设置速度         l_Rpwm1=1;         XJmoto();      }      if(key2==0){      //按下按钮S2启动寻迹功能         l_Lpwm=6;//设置速度         l_Rpwm=6;         l_Lpwm1=6;//设置速度         l_Rpwm1=6;         XJmoto();      }      if(key3==0){      //按下按钮S3启动寻迹功能         l_Lpwm=8;//设置速度         l_Rpwm=8;         l_Lpwm1=8;//设置速度         l_Rpwm1=8;         XJmoto();      }      if(key4==0){      //按下按钮S4启动寻迹功能         l_Lpwm=10;//设置速度         l_Rpwm=10;         l_Lpwm1=10;//设置速度         l_Rpwm1=10;         XJmoto();      }   }      

}

上面的代码可以实现按键调速,但因为自己只利用key1,所以占空比没改,5:5和1:1,占空比都是50%,但因为5:5加速时间更长,所以速度可能是更快的。

还有一个关于占空比设置的小细节,格数多会有个问题,就是如果你把运动时间设置的比较短,因为每个电机的灵敏性不同,容易导致轮子有的转,有的不转,就算都转动了,也容易有快有慢,导致小车转圈。

在连线时要注意L298N要和单片机共地,通过L298N的5V输出端给单片机供电,L298N的12V输入可由锂电池供电。

红外检测模块的高度设置是一个很重要的问题,通过实践总结的经验是可以在走的路线上实测,当红外模块在黑线上信号灯灭,在白板上信号灯亮时,说明高度合适。并不是很多人说的越低越好,这点很重要。 

当车轮打滑时,可以通过增加负重或减慢车速来有效规避。

以上是自己的一点拙见,希望对大家有用。

智能循迹小车设计报告(八篇)

智能循迹小车设计

专业:自动化

班级:自动化132

姓名:XXX

指导老师:

20XX年4月——20XX年6月

摘要:

本课题是基于STC89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以STC89C52单片机为系统控制处理器;

采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。

引言

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。

作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。

无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABUROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。

…………余下全文

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

上一篇

下一篇