您当前的位置:五五电子网电子知识电子知识资料机器人-智能车基于89C51智能电动车的简易设计 正文
基于89C51智能电动车的简易设计

基于89C51智能电动车的简易设计

点击数:7981 次   录入时间:03-04 11:54:00   整理:http://www.55dianzi.com   机器人-智能车

  智能电动车的基本模型就是我们普通的电动玩具车,由于我们更换了电动玩具车内部的电机和驱动电路,并增加了控制系统,使整个电动车具有智能化,能够按照既定路线行驶。
  
  这种电动车,在多种传感器的配合下,具有自动寻线、障碍物探询、前进、后退、左右转弯等功能。
  
  按照下图所示由起跑线出发,沿着引导线途径B、C两点。在沿着引导线到B点过程中,不断检测铺设在白纸下的薄铁片,当检测到时发出声光指示信息,并显示薄铁片数目。
  
  电动车到达B点以后进入“弯道区”,沿圆弧引导线到达C点,当检测C点下正方形薄铁片,停车5s,发出断续的声光信息。之后继续行驶,在光源的引导下,进入停车区并到达车库。

  根据系统中用到的传感器不同,可以把任务分为两个区域:直道区+弯道区和停车区。
  
  直道区、弯道区主要用漫反射型光电传感器和电感式接近开关。漫反射型光电传感器主要用于循迹,按照黑线指示的路径行驶。电感式接近开关主要用于探测铁片的数目。在停车区考虑车库放置了光源,因此选择了光敏电阻。根据系统功能,整个硬件电路可划分为循迹电路、铁片检测电路、光源检测电路、显示电路及报警电路等。整体电路如下图所示。
  
  循迹电路电路主要使用了3只漫反射型光电传感器。安装时,一只对着黑线,另外两只在黑线两侧对着地面。正常行驶时,中间那只传感器始终对着黑线,光线无法返回,传感器输出低电平。另外两只有光线返回,输出高电平。当小车脱离轨道时,即中间那只光电传感器脱离轨道时,等待其他任意一只传感器检测到黑线后,再做出相应的转向调整,直到中间的光电开关重新检测到黑线再恢复正向行驶。

智能电动车系统方框图

  铁片检测电路使用XM-PO-10N电感式传感器。当没有测到铁片时,传感器输出高电平,当检测到铁片时,输出低电平。因此将XM-PO-10N直接接Tl计数输入端,每当检测到铁片时,T1计数值便加1。
  
  为了检测光线的强弱,在小车左前方、正前方、右前方安装3只光敏电阻。当照射在它上面的光线的强度发生改变时,阻值发生变化,输出电压随之变化,再通过ADC0809A/D转换后,得到相应的数字量,从而引导小车向光源靠近。
  
  小车控制模块采用专用控制模块,系统只需要发送相应信号就可以控制小车前进、后退、左转和右转等功能。



www.55dianzi.com

  系统使用车子前端的3个光电传感器识别黑色路径,并沿其行驶。使用电感式接近开关识别出埋藏在路径下面的铁片,并计数。使用光敏电阻识别光源,并引导小车进入车库。因此,整个程序设计主要包括4部分:路径识别、铁片计数、光源识别及主程序。
  
  路径识别程序主要控制小车沿着黑色路径行驶,当中间传感器输出为高电平时,小车直行;当中间传感器输出低电平时,小车脱离当前路径,左转还是右转取决去其他两个传感器。
  
  当左侧传感器输出为低电平时,控制小车右转;当右侧传感器输出为低电平时,控制小车左  转,程序代码如下:

  函数displayLED()用于在LED数目管上显示检测到的铁片数目。由硬件连接图可以看出,串口工作于方式0,先传送显示低位,再传送显示高位。代码如下:

  光源检测程序负责寻找光源,并引导小车进入车库。安装在小车前面的3个光敏电阻感受光照后,电阻发生变化,光照越强,电阻越小。由ADC0809进行A/D转换,根据转换结果控制小车转向及行驶。
  
  程序Read_Adc0809()控制ADC0809对指定通道进行A/D转换,并返回转换结果,代码如下:

  程序findlight()用于控制小车朝着光源方向前进。程序调用Read_Adc0809读取3个光敏电阻的阻值,找出阻值最小的一个。采用前面循迹介绍的方法控制小车左转、右转或前行。
  
  代码如下:

  函数stopcar()用于停止小车行驶。当小车进入车库后,中间的光敏电阻受光照射最强,电阻值最小,该值可由实验得出。当A/D转换后的数值比设定值小时,表明小车已到达停车位置,可以停车。程序代码如下:

  Timer0()是T0的中断服务函数。T0用于定时,基本定时时间是50ms。代码如下:

  Timerl()是Tl的中断服务函数。Tl用于记录检测到的铁片数目,因此Tl工作于计数方式,每记录一次要产生一次中断,因此计数初值为0XFFFF。函数代码如下:

  inisystem()用于系统初始化。T0用于定时,方式l。Tl用于计数,方式1。系统允许T0及Tl中断。程序代码如下:

  alarm()用于报警。当在C点检测到铁片后,小车要报警5s。程序代码如下:

  主程序main()通过调用相关子程序实现系统功能。在路径B段之前,主要按照黑色路径行驶及检测铁片数目并显示。在B到C段时,沿着半圆形路径行驶,并检测C处的铁片。过C点后,主要是寻找光源和控制停车。整个程序代码如下:

  整个系统可以分为两个个区域:直道区+弯道区和停车区。为每个区域选择合适的传感器是至关重要的。直道区、弯道区选用漫反射型光电传感器用于循迹,电感式接近开关主要用于探测铁片的数目。在停车区选择光敏电阻用于寻找光源和控制停车。由于采用了小车专用控制模块,所以不用考虑小车驱动问题。软件方面,因为传感器在检测到某物体时,输出信号会发生变化,此时让单片机对信号进行处理,从而加快了系统的反应速度。
  




本文关键字:智能  电动车  机器人-智能车电子知识资料 - 机器人-智能车