单片机开发,方案定制开发

单片机软硬件开发:0755-8398,9709

智能吸尘器系统软件整合设计及开发

时间:2014-03-03 09:50点击:
智能吸尘器系统软件整合设计及开发

摘要

    根据智能吸尘器实时探测未知环境的要求,设计了基于陀螺仪、超声波传感器、接近开关传感器以及由DSP和MCU组成的双CPU控制系统软件。论述了智能吸尘器控制系统的程序设计思想及实现技术,完成了机器人吸尘器设计中的步进电机和吸尘电机控制模块、行走模块、躲避障碍物模块、主从控制模块、车体定位及姿态调整模块的划分和实现。调试结果表明,程序满足设计要求,可直接用于机器人吸尘器的控制系统。

    智能吸尘器是一种具有人工智能的吸尘器,其吸尘功能是建立在具有机器人特性的平台上。国外在智能吸尘器开发方面做了大量工作,并形成产品。如:日本松下公司已生产的智能型吸尘器,英国Dyson家电公司生产的DC06智能吸尘器,以及依莱克斯公司在国内投产的智能吸尘器等。国内在智能吸尘器方面的研究起步较晚,大多数研究尚处于某个单项研究阶段。目前国内研究机构多采用超声波传感器测距结合边沿走算法实现机器人的路径规划和自动避障功能…。由于智能吸尘器在实际工作中,需根据障碍物信息进行多次转弯,这时智能吸尘器的航向角将与其速度、转动惯量、重心位置、前后轮侧偏系数、两个驱动轮直径和摩擦力的差别以及实际道路情况等诸多因素有关,这就使智能吸尘器的行走定位变得十分困难-2J,导致出现清扫覆盖率降低等问题。智能吸尘器在工作中的精准定位以及自动避障功能是提高清扫覆盖率的关键。本研究基于自行设计的智能吸尘器硬件系统,设计其控制系统软件,包括吸尘器中的步进电机和吸尘电机控制模块、行走模块、避障模块、主从控制模块、车体定位及姿态调整模块等。

1 智能吸尘器控制系统总体方案

    智能吸尘器硬件结构如图1所示。其中DSP为上位机,根据采集到的数据信息进行逻辑判断,完成对吸尘器的控制AT89C51为下位机,控制和处理超声波传感器及接近式电容传感器,并将处理后的信息数据传送给DSP,此外还完成键盘及液晶显示部分的各项功能;系统中的双口RAM用来实现DSP与AT89C51之间的数据通信。系统中传感器包括:

    ①超声波传感器。用来测量房间长、宽值以及距墙或障碍物的距离。系统中共使用了4个超声波传感器,它们分别安装于吸尘器车体的前、后、左、右4个方向,依次标号为1、2、3、4。

    ②接近开关。用来探测障碍物的开关量。系统中共使用了8个接近开关,均匀分布在车体侧面上。位于车体正前方的传感器标号为1,其他按顺时针方向依次为2、3、4,…。

    ③陀螺仪。用来控制吸尘器转弯时的角度,并检测吸尘器是否偏离预定轨迹。陀螺仪将吸尘器车体的旋转角速度以电压形式表示出来,经ADC转换后提供给DSP,再由DSP进行积分处理,得出车体的偏转角度。控制系统软件设计采用TI公司提供的CodeComposer(CC)开发环境。

    

2 智能吸尘器控制系统软件设计

    智能吸尘器控制系统软件分为主要功能模块程序及主控程序两部分。主要功能模块包括电机控制模块、清扫区域基本参数测量模块、行走模块、避障模块及车体姿态调整模块。主控程序以逻辑控制为主,实现对各个子程序的逻辑调用,同时进行系统的初始化设置。

    2.1 步进电机及吸尘电机控制模块程序设计

    ①步进电机控制策略。步进电机的控制通过DSP输出步进脉冲信号cP和方向电平信号DIR实现。运用DSP内部事件管理模块(EV)输出脉冲波。考虑到两步进电机的运动状态可能会不同,采用EVA、EVB两个模块分别控制左、右两个步进电机。选用IOPF1和IOPF2两个I/O口输出电机驱动器所需的方向电平信号。主要设计程序包括PWM波形生成程序和DIR方向电平输出程序。

    ②吸尘电机控制策略。吸尘电机靠一个I/O口输出高、低电平来控制。选择IOPC0口为吸尘电机的控制口,通过设置L/O口复用输出控制寄存器B(MCRB)及端口c数据和方向控制寄存器(PCDADIR),使IOPC0口输出高电平,吸尘电机就开始工作。

    2.2 房间长、宽测量功能模块程序设计

    房间的长、宽值是吸尘器行走避障子程序中的必要参数。因此在吸尘器清扫工作开始之前先对其进行测量,同时调整车体方向,使车体与前方墙壁保持垂直。这时,超声波传感器1、2的值及车体长三者之和便是房间一边的长度,超声波3、4的值及车体宽三者之和便是房间另一边的长度。此模块程序主要通过分析、处理超声波传感器的测量结果来实现测距功能。房间长、宽参数测量方案:第1步,由于机身在初始状态下可能与其前方墙壁并不垂直,本设计中采用吸尘器右轮不动,左轮转,机身原地旋转180。的方法来测量两壁面问的垂直距离。第2步,受障碍物影响,第1步测得的长、宽值可能是障碍物到某一墙面的距离。为此,吸尘器还需行进到其他点进行测距,根据前后两次测距值的比较,确定障碍物的大致方位,保留正确的长、宽值。测距结束后吸尘器还需到达清扫起始点(房间的某一墙角)开始清扫工作。具体过程如下。首先判断起始点处吸尘器车体周围2m的范围内是否有障碍物。

    ①有障碍物:若车体前(后)方2m内有障碍物,用超声波传感器3、4判断车体左右两侧哪一侧到墙的距离近后,吸尘器就转90。,转向那一侧,此时超声波传感器1、2的和即为房问的长。然后吸尘器继续前进,遇墙停止。之后再次转向距墙近的一侧,此时超声波传感器1、2的和便是房间的宽。吸尘器继续行走至前方墙角,即到达清扫起始点,测距结束。整个过程如图2(a)所示。若车体左(右)侧2m内有障碍物,整个过程如图2(b)所示。

    

    ②无障碍物:记录下此时超声波传感器3、4之和。因为前方2m内无障碍物,所以吸尘器前进2m至第2点,求此时超声波传感器3、4之和,与起始点处超声波传感器3、4之和比较,分第2点处超声波传感器3、4之和大于、等于和小于初始点处值3种情况考虑。经过上述两步后房间长、宽参数便已确定,吸尘器到达丁清扫起始点。测距结束后,房间的长、宽值被测出,吸尘器位于清扫起始点,且其前方至少0.5m内无障碍物。根据以上方案,设计房间长、宽参数测量模块程序。

    2.3 行走功能模块程序设计

    系统选用了图3所示的行走方案。程序设计时要考虑:

    ①吸尘器在外圈行走时,为了避免接近开关中断对程序运行的干扰,应对接近开关的中断处理程序做相应处理。

    

    ②由于吸尘器两动力轮的中心与车体中心不重合,故采用以一轮为中心的旋转方式并通过检测转弯标志位(1或0)来判断转向。

    ③在墙角转弯时处,根据吸尘器外形的几何尺寸计算吸尘器遇墙停止后,后退再转弯的时间。

    ④吸尘器内圈行走时的转弯依靠转弯设定值实现。当超声波传感器1的值小于等于设定值时,吸尘器转弯。考虑到超声波传感器的最小量程为0.5m,第一圈内圈行走的转弯设定值设定为50em,以后每圈的转弯设定值递增30em。

    ⑤吸尘器单向行驶至转弯结束的过程称为一次单向清扫过程。若某次单向行驶结束后检测到超声波传感器1的值小于转弯设定值,则吸尘器原地再次转弯,然后前进至墙停止,整个房间清扫完毕。

    2.4 躲避障碍物功能模块程序设计

    避障总规则:利用超声波实测值与已测得的房间长(宽)值的比较,判断某次单向清扫途中是否有障碍物。若有障碍物:行走时若为左转,采用左避让规则;行走时若为右转,采用右避让规则。障碍物避开后按行走规则继续行进;若无障碍物:按行走规则继续行进,在转弯前应判断是否有足够的空间供机器人吸尘器转弯。若吸尘器可以转弯,则转弯,本次单向清扫完毕;若吸尘器不能转弯,说明下次单向清扫起始点处有障碍物,后退,避开障碍物后再转弯,前进至通过障碍物边线后,本次单向清扫完毕。

    避障功能是在行走功能基础上实现的,分为内圈避障程序设计和外圈程序设计。清扫完毕的判断方案:用外圈行走结束后清扫区域的精确长、宽值与内圈行走轨迹宽度30cm相除,商即为长、宽方向上各自所需的单向清扫次数,有余数则说明还有一块宽度小于30cm的矩形区域需要清扫。在执行内圈避障时,只要长或宽任意方向上的单向清扫次数达到所需的次数,即认为清扫完毕,剩余矩形区域的清扫在终止模块中完成。

    2.5 车体姿态调整功能模块程序设计

    为保证车体运行时不偏离轨道,采用陀螺仪传感器监视车体运动状况。当车体偏移量达到一定值时,通过控制行进方式调整车体姿态。当车体偏转角度大于10。时,开始调整车体姿态。首先判断车体偏转的方向并记录车体偏转角度。为使车体能最大限度地回到原位置,采用一个动力轮不动,另一动力轮倒转的方式实现车体姿态调整。使用该方案调整车体位置后,车体并不一定能恰好回到原位置,但误差已经很小,可以满足系统设计要求。车体姿态调整程序流程如图4所示。

    

    2.6 主控程序设计

    主控程序是吸尘器工作的主体逻辑。在主控程序中需要完成DSP的初始化设置,考虑各功能模块间的逻辑关系,实现对各子程序的调用,并要充分考虑到各级中断信号对程序运行的影响,做出正确的处理、协调。

    2.6.1主控程序设计

    主控程序流程如图5所示。

    用户操作键盘时接近开关可能会工作,这有可能导致程序

     

    运行出错,故DSP需在程序最开始首先屏蔽所有中断。键盘的检测由单片机实现,用户若想通过键盘设定吸尘器工作方式,则必须在开机后20s内开始操作,该208的延时由DSP提供,20s后若无键按下,则认为用户未设定吸尘器工作状态,系统按自动方式开始工作;20s后若有键按下,则将等待用户输入完毕后,按照用户设定要求工作。

    2.6.2 系统初始化程序设计

    系统的初始化程序是系统各功能实现的前提。给状态寄存器赋值,保证子程序调用或进入中断时实现CPU各种状态的保存;数据存储区配置;输出口的选择及功能设定;中断的相关寄存器处理;累加器的溢出方式选择及系统的时钟频率的选定等功能都在初始化程序中实现。

    2.7 系统中断处理

    系统设计中共有4路中断信号需要处理,其中8路接近开关和4路超声波传感器共用优先级为1级的外部中断XINT1;两个事件管理模块EVA和EVB在产生PWM波形时用到了优先级为2级的定时器1和定时器3的周期中断;此外,陀螺仪的测量值经ADC转换时用到了中断优先级为6级的ADC中断。

    2.7.1 外部中断XINT1的处理

    由于8路接近开关和超声波传感器共用XINT1中断,故在响应该中断时应首先判断是哪个外部设备产生的中断请求,然后进行相应的处理。若为接近开关中断,单片机向双口RAM8040h单元写0,若为超声波中断则写1,DSP通过读8040h单元内容来判断是哪个外设产生的中断:

    ①若为超声波传感器发出的中断,在其中断服务程序中只需重新开中断即可(这是因为进入中断服务程序时,系统自动关闭中断);

    ②若为接近开关中断,需判断该接近开关是否工作。若工作,则在中断服务程序中还要执行停止程序,否则只需开中断即可。是第几个接近开关工作,单片机就在双口RAM8033h单元中写几,若同时有多个接近开关工作,则单片机从8033单元的最低位起将其序号依次写入。DSP只需依照此规则便可根据8033h单元内容判断是哪个接近开关工作。

    2.7.2 ADC中断处理

    吸尘器在测距模块中车体旋转180。,左、右转及姿态调整的过程中都会响应ADC中断,故在执行上述功能的程序时分别向012Eh单元写0、1、2、3,功能实现后再向012Eh单元写4,这样,响应中断时便可在中断服务程序中通过查询012Eh单元的内容来判断车体的运动情况,从而执行不同的服务程序。

    2.7.3 定时器周期中断处理

    定时器周期中断的处理相对简单,只需在中断服务程序中将计数器1和计数器3重新设置计数初值并开中断即可。

3 结束语

    智能吸尘器控制系统主控及主要功能模块程序的调试和仿真表明,主控模块通过对各子程序的调用,按一定时序完成了对吸尘器的控制,各主要功能模块满足设计要求。如避障模块通过对采集到的超声波信号和接近开关信号的判断和处理,很好地完成了对障碍物的自动感知和自主躲避;步进电机及吸尘电机控制精度较高等。

 
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
推荐内容