标题:stc89c52驱动的小型清扫机器人系统设计

文档介绍:

1 绪论

1.1 研究背景

随着科学技术的不断发展和人们生活水平的不断提高,先进科技已经以一种无可抵挡之势走进千家万户,而智能家居产品也以前所未有的速度在普通家庭出现,智能家居产品目击目击目击目击益增多,扫地机器人使人们从繁琐的打扫地面卫生中解放出来,深受消费者欢迎。现在的扫地机器人越来越先进,拥有的功能越来越多,有路径规划,自动回充,虚拟墙,app遥控等,这类产品都是采用高性能处理器和控制芯片,结构复杂,成本高,不适宜初学者和电子爱好者理解与掌握其工作原理。单片机是电子信息类专业重要的技术基础课,广泛应用于工业控制、智能仪表、消费电子等领域。stc89c52单片机属于经典的51单片机,结构简单、指令系统完善、有成熟的开发工具、成本低,常用于高校教学和电子设计竞赛中常用的控制芯片。通过基于stc89c52单片机的项目开发,可帮助学习者掌握单片机的工作原理、接口技术、程序设计方法,为后续学习更复杂的嵌入式系统打下基础。鉴于扫地机器人产品先进且成本高,初学者不易理解其工作原理,单片机课程设计要求所设计项目具有相对明确的功能和结构,成本低,易于控制。

因此本设计选择stc89c52单片机为核心控制芯片,通过连接红外避障传感器模块、直流电机驱动模块、风扇驱动电路,设计一款功能明确、结构简单、成本低的小型清扫机器人系统,既可以作为智能清扫机器人的简易版本,又可以作为单片机课程设计的案例,具有实用性和教学参考价值。

1.2 系统功能概述

系统由stc89c52单片机、2个红外避障模块、2个按键、风扇驱动模块、l298n电机驱动模块和电池盒供电构成。系统工作流程如下:按下启动键后,小车开始向前行驶;当左侧的红外避障模块接收到障碍物反射回来的红外线时,小车右转,当右侧的红外避障模块接收到障碍物反射回来的红外线时,小车左转,在小车转向时,风扇驱动模块驱动风扇转动进行吸尘;按下停止按键后,小车停止行驶,风扇停止转动。单片机控制各模块协同工作,实现自动避障吸尘清扫的目的。

1.3 主要研究内容

本论文的主要内容如下:系统总体方案设计,确定了系统的功能需求以及实现方式,系统硬件模块和软件模块的划分;接着进行了硬件电路设计,包括stc89c52单片机最小系统电路、按键电路、红外避障传感器接口电路、风扇驱动电路、l298n电机驱动电路的设计与实现;然后进行了软件程序设计,在keil开发环境下使用c语言编写了主程序及相关子程序模块,实现了避障判断、电机控制和风扇启停等功能;最后进行了系统调试与功能验证,对系统功能进行测试,看是否满足设计要求,对测试结果进行分析。

第二章 系统总体设计

2.1 系统功能要求

要求该系统具备自动避障、吸尘的功能,是一个迷你型的扫地机器人。上电后待机;启动键,小车开始工作,进行避障;小车运行,左右两只红外避障器不断检测前方是否有障碍物;kp1左侧传感器检测到障碍物,系统判断左侧有障碍,小车向右转弯;kp2右侧传感器检测到障碍物,系统判断右侧有障碍,小车向左转弯;小车转弯同时启动风机电机开始吸尘;停止键,小车停止,风扇停转;快速响应,运行稳定,功耗低。

2.2 系统组成结构

根据功能要求,本系统由以下几个部分组成:

(1)控制核心模块:采用STC89C52单片机,负责接收输入信号、进行逻辑判断、输出控制信号。单片机最小系统包括复位电路、时钟电路和电源电路,确保单片机能够正常工作。

(2)输入模块:包括2路红外避障传感器和2路按键。红外避障传感器用于检测前方是否有障碍物,输出数字信号给单片机;按键用于输入启动和停止指令,实现人机交互。

(3)输出模块:包括L298N电机驱动模块和BD681风扇驱动模块。电机驱动模块控制两个直流电机的正转、反转和停止,实现小车的前进、左转和右转;风扇驱动模块控制吸尘风扇的启停。

(4)电源模块:由电池盒供电,为单片机、传感器、驱动模块等提供稳定的工作电压。各模块的工作电压均为5V,便于统一供电。

系统框图如图2-1所示,清晰地展示了各模块之间的连接关系和信号流向。

图2-1 系统框图

2.3 系统工作流程

初始化程序: 开机后单片机初始化,包括初始化io口、定时器等,然后单片机进入等待状态。按键检测程序: 单片机循环检测启动键和停止键,若启动键被按下,则进入运行程序;若停止键被按下,则单片机进入停止程序。运行程序: 单片机反复检测两个红外避障接收器的输出电平,根据输入信号控制小车前进后退以及风扇的转动。若左侧接收器检测到障碍物,则反向驱动电机使小车右转并启动风扇;若右侧接收器检测到障碍物,则反向驱动电机使小车左转并启动风扇;若两个接收器都没有检测到障碍物,则正向驱动电机使小车前进并关闭风扇。停止程序: 反向驱动电机使小车停止运动,风扇停止转动。单片机回到等待状态,等待下次启动。

第三章 硬件系统设计

3.1 STC89C52单片机核心电路设计

stc89c52rc是stc专门为需要低功耗、高性能cmos8位微控制器,系统可编程flash存贮器。stc89c52是具有传统mcs-51兼容性的低功耗,高性能cmos8位单片机。在单芯片上,包括了8位cpu,8k字节可编程flash快擦写存储器,是传统51不具备的。stc89c52在单芯片上把具有8位cpu和在系统可编程flash存贮器结合在一起,为众多嵌入式控制应用系统提供了高灵活,高经济性的解决方案。

stc89c52主要特征: 8k字节flash程序存储器 512字节ram数据存储器 32位i/o口线 看门狗定时器 内置4kb eeprom max810复位电路 3个16位定时器计数器 4个外部中断 一个7向量4级中断结构 全双工串行口。stc89c52允许逻辑操作和掉电运行。stc89c52通过内部振荡器在0hz和高于fosc12t周期内部逻辑操作。stc89c52支持2种软件可选节电模式: 空闲模式: cpu停机,而ram和定时器计数器pwm,串行口及中断系统仍旧工作。掉电保护方式: ram保存,振荡器停止振荡,单片机一切停止工作,直到下一个中断或硬件复位。stc89c52最高运作频率35m,6t12t可选。

stc89c52的特点: 8k字节的程序空间;512字节的数据空间;内置4k字节eeprom;可以通过串口直接下载程序。主要参数: 增强型8051单片机,6或12clock唯机器周期,指令与传统8051指令代码兼容,工作电压范围5.5v~3.3v,工作频率0~40mhz,通用io口32个,上电后p1p2p3口是准双向口,弱上拉,p0口是漏极开路输出,具有ispiap功能,可以通过串口直接下载用户程序,16位定时器计数器共有3个,外部中断4路。工作温度范围: -40~+85℃。

STC89C52单片机相关引脚说明如下:VCC为供电电压引脚,GND为接地引脚;P3.0为RXD串行输入口,P3.1为TXD串行输出口;P3.2为/INT0外部中断0,P3.3为/INT1外部中断1;P3.4为T0记时器0外部输入,P3.5为T1记时器1外部输入;P3.6为/WR外部数据存储器写选通,P3.7为/RD外部数据存储器读选通;RST为复位输入引脚,当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间;ALE/PROG为地址锁存允许输出;/PSEN为外部程序存储器的选通信号;/EA/VPP为外部程序存储器允许引脚;XTAL1和XTAL2为晶振输入输出引脚。单片机引脚图如图3-1所示。

图3-1 STC89C52单片机引脚图

stc89c52单片机的最小系统由三部分组成,复位电路、时钟电路、电源电路,只要有了这三部分,单片机就可以工作了。复位电路由按键s1、电解电容ec1、电阻r1组成,具有手动按键复位和上电自动复位,系统上电复位按键接口采集到两个高端信号后进行手动复位;当系统检测到的电压由低电平上升到高电平的一段时间后,系统通过电阻与接地之间形成一条通路,自动把高电平进行拉低,实现上电自动复位。时钟电路由振荡器y1、瓷片电容c1和c2,我们有了需要单片机自动发出系统时间,让控制芯片正常工作。给控制芯片正常工作的时钟信号,一般把这种工作方式称为"拍",为了让控制系统能正常工作,提高工作能力,采用11.0592mhz晶振和30pf的电容进行组合,电容帮助晶振起振,满足数字控制器正常工作。单片机最小系统原理图如图3-2所示。

图3-2 单片机最小系统原理图

3.2 按键电路设计

轻触按键与按键产品   轻触按键是按键的一种。一般可以把它当作电子开关,轻轻一压,开关接通,松开即断开。其主要原理就是轻触按键内的金属弹片受力弹动而达到接通与断开。在系统中,轻触按键是系统的输入,是人机交互的枢纽。 按键电路原理   按键的一端接地,另一端接单片机的io口,然后在io口和vcc之间接上一个上拉电阻。当按键没有按下时,单片机的io口通过上拉电阻连接到vcc,因此单片机接到的输入信号为高电平;当按键按下时,io口通过按键接地,因此单片机接到的输入信号为低电平。单片机是通过检测io口的电平来判断按键是否被按下的。 软件去抖动   由于按键在按下和释放时都存在机械抖动,因此电平会在短时间内变化数次,如果不进行处理单片机就会误判为按键多次动作。软件去抖动最简单的方法就是,在检测到电平变化后,延时20ms左右再重新检测,如果此时还是有效电平,则确认按键动作。

本系统设计了两个按键:一个用于启动系统,一个用于停止系统。按键的单片机控制引脚默认为高电平,当按键按下后,单片机的相关引脚则变成低电平,进而实现对系统的手动输入。按键电路原理图如图3-3所示。

图3-3 按键电路原理图

3.3 BD681风扇驱动电路设计

散热风扇其原理是: ①电能转化为电磁能;②电磁能转化为机械能;③机械能转化为动能,使风扇叶片旋转。

风扇工作电流比较大,一般在100ma以上,而单片机io口的驱动能力较弱,标准51的io口的驱动能力只有几毫安,直接用单片机驱动风扇是不行的,必须加电流放大电路才能驱动风扇。

本系统采用bd681达林顿三极管来驱动风扇。达林顿三极管是用两个三极管复合而成,有极大的电流放大倍数,可用小的基极电流控制大的集电极电流。电路连接如图所示:风扇的一端连接vcc,另一端连接三极管的集电极;三极管的发射极接地;三极管的基极通过一个限流电阻连接到单片机的控制口。

当单片机的控制口输出高电平时,三极管基极得到正向偏置电流后导通,风扇的电流形成回路,风扇开始转动。当单片机的控制口输出低电平时,三极管基极无偏置电流,三极管截止,风扇停止转动。电阻r为限流电阻,其作用是:限制基极电流,保护三极管。若单片机控制口为高电平时,没有限流电阻,过大的基极电流会把三极管烧毁。限流电阻把基极电流限制在一定范围内,保证三极管可靠工作。

这种驱动电路结构简单、成本低廉、可靠性高,适用于开关控制方式的直流风扇驱动。风扇驱动电路原理图如图3-4所示。

图3-4 风扇驱动电路原理图

3.4 E18-D80NK红外避障传感器模块设计

E18-D80NK-N发射和接收合一的光电传感器,发射光经调制发出,接收头解调接收反射回来的光输出。因为采用调制解的工作方式,所以能避免干扰可见光,提高抗干扰能力。由于透镜的应用,使传感器的光线更加集中,距离更远,最长能检测80厘米处的物体。但由于是利用红外光特性,不同颜色的物体反射红外光的系数不同,因此能检测的最大距离也不同,白色反射系数最大,检测距离最远,黑色吸收红外光最多,检测距离最短。

检测障碍物的距离可以根据要求通过尾部电位器旋钮调节。顺时针调节电位器,检测距离延长;逆时针调节电位器,检测距离缩短。用户可以根据要求设定合适检测距离。传感器探测距离远,受可见光干扰小、价格便宜、容易装配、使用方便,被广泛应用在机器人检测障碍避障、流水线计件等场合。

模块参数说明如下:工作电压5VDC,工作电流10-15mA,驱动电流100mA,感应距离3-80CM可调,响应时间小于2ms,检测物体包括透明或不透明体,工作环境温度-25℃~+55℃,外壳材料为塑料。输出类型为NPN常开型,即正常情况下输出高电平,当检测到前方有遮挡物时输出低电平。

模块接口说明如下:棕色线为电源正极,外接5V电压;蓝色线为电源负极,外接GND;黑色线为信号输出线,数字量输出接口,输出0和1电平信号。这种三线制接口设计简单明了,便于与单片机连接。E18红外避障传感器模块接口原理图如图3-5所示。

图3-5 红外避障传感器模块图

图3-6 红外避障传感器模块图

3.5 L298N电机驱动模块设计

L298N是一种双H桥电机驱动芯片,每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48V,逻辑部分5V供电,接受5V TTL电平。本系统采用的L298N驱动模块,性能稳定可靠,满足本设计要求。该模块可以直接驱动两路3-30V直流电机,并提供了5V输出接口,可以给5V单片机电路系统供电,方便控制直流电机速度和方向。

产品参数如下:驱动芯片为L298N双H桥驱动芯片,具有二极管续流保护功能,直流电机转速可以通过PWM方式实现调速,驱动部分端子供电范围VMS为+5V~+35V,驱动部分峰值电流为2A/桥,逻辑部分端子供电范围Vss为4.5-5.5V,逻辑部分工作电流范围为0~36mA,控制信号输入电压范围高电平4.5-5.5V、低电平0V,最大功耗20W,存储温度-25℃~+130℃。

使用注意事项如下:第一次上电时观察绿色电源指示灯L5是否点亮,如果不亮,请立即断电检查电源是否接反;驱动器为功率设备,请保持工作环境的散热通风,在连上电机后使其连续工作一段时间观察电机和驱动芯片的温升正常后方可进行后续使用。

接口说明如下:电机驱动电源输入接口VMS接正极,GND接负极;驱动器和控制端口的接口中,控制直流电机时IN1、IN2和ENA为一组,它们控制电机A,接在A+和A-,如果电机A不调速,则ENA悬空即可;如果电机A调速,则ENA接一路PWM输出。IN3、IN4和ENB为一组,他们控制电机B,接在B+和B-,如果电机B不调速,则ENB悬空即可;如果电机B调速,则ENB接一路PWM输出。

直流电机控制信号真值表如下(以电机A为例):IN1=H、IN2=L时电机A正转;IN1=L、IN2=H时电机A反转;ENA=H、IN1=IN2时电机A紧急停车;ENA=L、IN1=X、IN2=X时任意电平电机A自由停车。通过控制IN1、IN2的电平组合,可以方便地控制电机的转向;通过控制ENA的PWM占空比,可以调节电机的转速。

L298N电机驱动模块接口图如图3-7所示。

图3-7电机驱动模块图

图3-8电机驱动模块实物图

第四章 软件系统设计

4.1 编程语言选择

由于程序相对比较复杂,涉及到许多的输入输出信号的检测和控制,需要编写主要程序和几个子程序模块,程序的编写采用c语言。对于一般的单片机应用开发,使用c语言这样的高级语言与使用汇编语言相比有许多优点。1、使用c语言,就不必去研究处理器的指令集,不必去烦人地研究存储器结构,可以把精力集中在算法和逻辑功能部分的实现上。2、寄存器分配、地址的指定和寻址方式由编译器自动生成,编程时不再去费脑子考虑存储器的绝对地址,也不再去记忆和查找数据类型在存储器中的格式和存放地址,减轻了程序员的负担。3、指定某一个操作的变量选择组合,使得程序员更容易掌握,也使得程序更清晰,更便于后期的维护和修改。4、c语言使用类英文关键字和操作函数,更容易让人想起,使用也更简单。

5与汇编语言相比,c语言程序的编程和调试时间大为缩短。在keil等集成开发环境中,可以单步跟踪、设置断点、观察变量等进行调试,调试方便。6c语言提供了许多标准的库文件,如数学、字符串等常用程序已经编好,可以直接调用,不需自己编写,节省了编程时间。8c语言可移植性好,应用广泛 c语言编译器几乎适用于所有的目标系统,用c语言编写的程序很容易从一个系统移植到另一个系统。已编制好的程序模块可以通过修改或重新编写部分模块而方便地加入到新程序中,从而节省新程序的编制时间。7利用c语言可编制模块化编程技术,从而可将已编制好的程序模块方便地加入到新程序中,节省新程序的编制时间。9汇编语言不易学,不易用,功能不强,结构性、可读性差,可移植性、可维护性差。c语言有上述汇编语言的功能优势,有结构性、可读性好,易学易用,可移植性好,可维护性强等优点,因此,本系统选用c语言编程。

4.2 Keil软件设计思想

keil软件是单片机开发者常用的开发软件,比较简单的单片机系统就是使用这种开发软件进行开发的,可以减少开发周期,这样就可以减少很多成本,所以keil软件深受开发人员的喜欢和使用。本系统采用keil软件进行程序编写、编译和调试。

keil软件提供了丰富的使用环境和调用子程序库,在全体打开窗口中可以方便的调用和查看这些资源。keil软件的一个特点是提供了大量的集成代码,使用者可以知道其中的乐趣,会感觉到此keil软件非常好用,也正因为如此,keil软件越来越受到广大使用者的欢迎,其中最主要的原因就是它大多数代码都是集成的,调用非常方便,即使初学者也会感觉很好用,上手的门槛可以不高。

keil软件支持c语言和汇编语言的混合编程,具有强大的编译和调试功能。在开发较大的软件时,更能体现出高级语言的优越性。keil软件有多种调试方式:软件模拟调试和硬件仿真调试。软件模拟调试方式下,在没有硬件的情况下也能运行程序,观察程序执行流程和变量变化。在硬件仿真调试方式下,通过仿真器连接目标硬件,方便观察程序的运行情况,设置断点,单步执行,方便查找和解决程序中的问题。

本系统在keil uvision4环境下进行开发,利用其强大的编辑、编译和调试功能,完成所有程序的编写和测试。

4.3 主函数程序流程图

系统主程序采用循环扫描工作方式。上电后初始化,包括设置io口方向(输入或输出)、初始化定时器、初始化变量等。初始化完成后进入主循环,在主循环里面不断地检测按键输入、传感器输入,根据输入作相应的控制输出。

程序main流程如下: 第一步:初始化。设置各个io口工作模式。设置电机、风扇驱动引脚为输出模式,设置按键、传感器引脚为输入模式,初始化相关变量。第二步:检测启动按键。如果有启动按键按下,设置运行标志为1,即程序进入运行状态;否则,第三步:检测停止按键。如果有停止按键按下,清除运行标志,控制电机停,风扇停;否则,第四步:如果运行标志为1,读取左右红外避障传感器输入状态。如果左侧传感器检测到障碍物,控制小车右转并启动风扇,接着返回第三步;如果右侧传感器检测到障碍物,控制小车左转并启动风扇,接着返回第三步;如果两侧均未检测到障碍物,控制小车前进并关闭风扇,接着返回第三步;如果运行标志不为1,返回第二步,继续循环检测。

这种循环扫描的工作方式结构简单,逻辑清晰,能够满足本系统的实时性要求。主程序流程图如图4-1所示。

图4-1主函数流程图

4.4 子程序流程图

4.4.1 风扇控制子程序

散热风扇是按照电能转化为电磁能,电磁能转化为机械能,机械能转化为动能原理工作的。一般风扇电流比较大,电路上ttl电平是驱动不了风扇的,需要在中间加个电路,放大电流。这里采用达林顿晶体管三极管bd681,来放大通过风扇的电流。

风扇控制子程序是根据单片机当前状态和是否检测到障碍物,来控制风扇的启动和停止。单片机对应的控制引脚为高电平时,三极管导通,风扇的电流形成回路,风扇转动,进行吸尘。单片机对应的控制引脚为低电平时,三极管截止,风扇停止转动。在三极管基极串联一个限流电阻连接到电源,保护三极管,防止三极基极电流过大而损坏。

程序设计上,风扇控制子程序接受一个开关控制参数。单片机处于运行状态,且检测到障碍物时,调用风扇控制子程序,传入启动参数,子程序将单片机对应的控制引脚置高,三极管导通;单片机不处于运行状态,或者没有检测到障碍物时,传入停止参数,子程序将单片机对应的控制引脚置低,三极管截止。这样模块化的处理,使程序层次清晰,易于理解和维护。风扇控制流程图如图4-2所示。

图4-2风扇控制流程图

4.4.2 红外避障子程序

E18-D80NK红外避障传感器电路就是个开关量检测,工作原理其实就是对信号的高低电平检测。当传感器前方有遮挡物时,输出低电平;当传感器前方无遮挡物时,输出高电平。单片机I/O口检测到这些高低电平变化后,即可判断对应信息,执行相应的功能操作。

红外避障子程序的功能是读取左右两个红外避障传感器的输出状态,读取连接左右红外避障传感器的io口的状态,判断有没有障碍物,给相应的电机发送信号。从上面的程序可以看到,先读取左侧传感器连接的io口的电平,如果为低电平,那么左侧有障碍物,然后将方向控制字设置为"左障"。再读取右侧传感器连接的io口的电平,如果为低电平,那么右侧有障碍物,然后将方向控制字设置为"右障"。如果左右传感器都输出高电平,说明前方无障碍物,将方向控制字设置为"无障"。

读取传感器的电平后,为了防止信号不稳定造成的误差,进行了简单的去抖动,传感器连接的电压一般不会像按键连接的电压那样剧烈变化,按键需要去抖动,这里可以采用延时消抖,但是可以连续读取两次来确定变化。红外避障流程图如图4-3所示。

图4-3红外控制流程图

4.4.3 电机控制子程序

L298N电机驱动模块的控制程序非常简单,就是高低电平控制,只需要单片机给对应的高低电平就可以驱动模块工作了。即根据直流电机控制信号真值表即可程序控制电机。

电机控制子程序的功能是根据红外避障子程序判断的障碍物位置,控制左右两个电机的转向,实现小车的前进、左转和右转。以左电机和右电机的控制为例,具体控制逻辑如下:

当需要前进时,左电机控制引脚IN1=H、IN2=L,左电机正转;右电机控制引脚IN3=H、IN4=L,右电机正转,小车向前直行。当需要左转时,左电机控制引脚IN1=L、IN2=H,左电机反转;右电机控制引脚IN3=H、IN4=L,右电机正转,小车向左转弯。当需要右转时,左电机控制引脚IN1=H、IN2=L,左电机正转;右电机控制引脚IN3=L、IN4=H,右电机反转,小车向右转弯。当需要停止时,所有控制引脚均输出低电平,或者ENA/ENB引脚输出低电平,电机自由停车。

在本系统中,由于不需要调速,ENA和ENB引脚直接接高电平,使能电机驱动。电机控制子程序根据红外避障子程序返回的方向控制字,调用相应的控制函数,设置各控制引脚的电平状态。电机控制流程图如图4-4所示。

图4-4电机控制流程图

4.4.4 按键电路软件设计

按键电路有四个脚,一般对角焊接四个即可。它在电路中只需要连接两个脚就可以了。按键电路就是一个简单的信号高低电平检测部件。当按键被按下时,单片引脚的i/o口检测为低电平;当按键释放时,i/o口恢复为高电平。这些io口电平特性的改变,控制着一些相应动作。

按键处理子程序就是用来检测程序启动按键和程序停止按键的状态,从而按键去抖动,使按键动作被cpu正确识别。机械按键在按下和释放的瞬间,会产生抖动,抖动的时间一般为5-10ms,如果不进行处理,单片机会将一次按键误判为多次按键。

按键处理程序的流程是:程序不断检测按键连接的io口电平,当检测到电平由高变低时,认为可能有按键按下,程序启动一个20ms的延时,延时过后,再次检测该io口的电平,如果电平仍为低电平,程序认为是有效按键按下,继续执行程序;如果电平已经恢复为高电平,程序认为这是干扰信号,不予处理。确定按键为有效按键后,程序根据按键的编号,执行相应的动作:如果是启动按键,修改系统运行标志;如果是停止按键,清除系统运行标志,并控制电机和风扇停止。检测按键释放的方法也是一样,保证一次按键只响应一次。按键处理流程图如图4-5所示。

图4-5按键电路控制流程图

第五章 实验论证

5.1 硬件调试

硬件调试主要是检查电路是否正确,各部分是否能正常工作的实验。本系统的硬件调试,也是从电源开始,由电源部分到核心部分,由输入到输出部分。先调试电源部分。用万用表测量电池盒输出电压,电压应该在5v左右。符合本系统供电电压。然后将电源部分接到各模块供电部分。用万用表测量各模块电源引脚对地电压,确认本系统各模块已经正常供电。注意:l298n驱动模块,逻辑电源和功率电源都接到11v供电电压,共地。再调试单片机最小系统。给系统上电。用示波器接到单片机晶振引脚,应该有稳定的正弦信号,频率为11.0592mhz。测量单片机复位引脚,单片机正常工作时该引脚应该为低电平。如果系统工作正常,可以下载一个简单的测试程序,例如:让单片机某个io口输出方波信号,用示波器接到单片机该io口,观察信号波形,来验证单片机是否能正常工作。如果单片机不能正常工作,应该查找原因。

然后进行输入模块调试。对于按键电路,用万用表测按键时,所对应io口的电压是否由高变低,低变高,松开后是否恢复。对于红外避障传感器,给传感器上电,传感器前放上障碍物,用万用表测输出引脚的电压是否由高变低,移走障碍物后恢复高电平。调节传感器尾部的电位器,观察检测距离的变化,测试传感器灵敏度是否可调。接着进行输出模块调试。对于风扇驱动电路,给单片机烧写测试程序,控制引脚写高,风扇是否转动,写低,风扇停止转动。对于l298n电机驱动模块,按控制真值表给各控制引脚施加相应的电压,测电机转向是否符合要求。分别测试电机正转,反转,停止,确保驱动模块工作正常。最后进行联调。将各模块按系统框图连接起来,检查各连接是否正确,尤其是电源线,不要导致短路,接反。硬件调试完毕,软件调试就开了基础。

5.2 软件调试

软件调试在Keil开发环境下进行,采用分模块调试、逐步集成的方法。首先调试各个子程序模块,确保每个模块功能正确;然后将各模块集成到主程序中,进行整体功能调试。

按键处理子程序的调试:编写测试程序,将按键状态通过LED或串口显示出来。按下按键,观察是否能够正确识别按键动作,是否有抖动引起的误触发。调整延时消抖时间,找到最佳参数。

红外避障子程序的调试:编写测试程序,读取左右传感器的状态并通过LED显示。在传感器前放置障碍物,观察传感器状态是否正确变化,响应是否及时。调节传感器灵敏度,确保检测距离合适。

电机控制子程序的调试:编写测试程序,分别测试前进、左转、右转、停止四种状态。观察电机转向是否符合控制逻辑,左右电机转速是否一致。如果出现转向偏差,可以调整电机接线或修改控制程序。

风扇控制子程序的调试:编写测试程序,手动控制风扇的启停,观察风扇响应是否及时,驱动电路工作是否稳定。

主程序的调试:将所有子程序模块集成到主程序中,进行系统联调。模拟各种工作场景,观察系统是否能够正确响应。例如:上电后按下启动键,小车是否开始前进;左侧放置障碍物,小车是否右转并启动风扇;右侧放置障碍物,小车是否左转并启动风扇;移开障碍物,小车是否恢复前进且风扇停止;按下停止键,小车是否停止运行且风扇停止。通过反复测试,发现并解决程序中存在的问题。

5.3 功能验证

经过调试硬件系统和调试软件系统之后,整体检验系统是否满足设计要求。

验证1:启动功能测试。系统上电后,当小车处于停止状态时,踩下启动键,看小车是否开始向前运行。由测试结果可知,当踩下启动键时,小车立即启动,运行方向为前进,启动功能满足要求。验证2:左转避障功能测试。当小车前进方向的右方放上障碍物,看小车如何应对。由测试结果可知,当右侧传感器检测到障碍物时,小车立即左转,从而避开障碍物,在左转的同时,风扇启动开始转动,即进行吸尘。左转过后,小车继续前进,风扇停止转动。左转避障功能满足要求。验证3:右转避障功能测试。当小车前进方向的左方放上障碍物,看小车如何应对。由测试结果可知,当左侧传感器检测到障碍物时,小车立即右转,从而避开障碍物,在右转的同时,风扇启动开始转动,即进行吸尘。右转过后,小车继续前进,风扇停止转动。右转避障功能满足要求。验证4:连续避障功能测试。当小车前进方向上连续放上若干障碍物,看小车是否可以连续避障。由测试结果可知,小车可以避开每一个障碍物,前进连续,没有出现卡死和失控的现象。

验证五:停止功能。在小车运行时,踩下停止按键,看小车能否及时停止。测试结果如下:踩下停止按键后,小车立即停止,风扇也停止转动。再踩下启动按键,小车又开始运行。停止功能合格。验证六:长时间运行测试。让小车连续运行三十分,看系统是否稳定。测试结果如下:系统运行三十分钟后,没有出现死机、失控等情况,电机和驱动芯片温升正常,稳定性良好。通过上述几个功能验证,可以得出结论:本系统功能满足要求,运行稳定,可以实现自动避障吸尘清扫。

第六章 总结与展望

6.1 总结

abstract: 本文设计并实现了基于stc89c52单片机的简易清扫机器人系统。系统采用stc89c52单片机作为控制模块,e18-d80nk红外避障传感器进行自动避障,l298n电机驱动模块驱动直流电机使小车运动,bd681风扇驱动电路驱动小车上的风扇进行吸尘清扫,按键输入模块接收用户指令。当用户按下启动键后,小车开始运动,遇到障碍物后自动避让并启动小车上的风扇进行吸尘清扫;当用户按下停止键后,小车停止运动,小车上的风扇也停止转动。关键词:单片机;stc89c52;清扫机器人;e18-d80nk;l298n;bd681 1 引言 本设计主要由stc89c52单片机最小系统电路、按键电路、e18-d80nk红外避障传感器接口电路、bd681风扇驱动电路、l298n电机驱动电路组成,如图1所示。各模块电路简单,元器件价格低廉,成本低,适合制作和调试。利用c语言,在keil环境下,编写出主程序以及各个子程序模块,程序结构合理,功能明确,采用模块化设计思想,方便后期维护和修改。先调试单片机最小系统,再连接各个外围模块电路,最后调试整个程序,保证系统各项功能正常,运行稳定。通过本次设计,更加深入的了解单片机控制系统开发的全过程,了解硬件电路设计,编程,调试的基本方法。加深了对红外传感技术,直流电机驱动技术,嵌入式c语言编程的理解。该系统也可以作为智能清扫机器人的原型,也可以作为单片机课程设计的案例,有一定的参考价值和实用价值。

6.2 展望

虽然本系统实现了基本的自动避障和吸尘功能,但仍然存在一些不足之处,有待在今后的工作中进一步改进和完善。

在硬件方面,可以考虑增加电池电量检测电路,实时监控电源状态,当电量不足时发出提示或自动停止工作,避免电池过度放电。可以增加防跌落传感器,在小车底部安装红外对管或超声波传感器,检测是否有悬崖或楼梯,防止小车从高处跌落损坏。可以优化电机驱动电路,采用更大功率的驱动芯片或增加散热片,提高驱动能力和可靠性。可以增加充电电路,实现自动充电功能,提高系统的自动化程度。

在软件方面,可以增加路径规划算法,改变目前的随机避障模式,实现系统的清扫路径规划,提高清扫覆盖率和效率。可以增加PWM调速功能,实现转弯时的速度平滑控制,使小车的运动更加平稳自然。可以增加记忆功能,记录已清扫区域,避免重复清扫。可以增加定时功能,实现预约清扫,在设定的时间自动开始工作。

在功能扩展方面,可以增加蓝牙或WiFi模块,实现手机APP远程控制,用户可以随时随地控制清扫机器人的工作状态。可以增加灰尘传感器,实时检测地面的灰尘浓度,实现智能启停,只在有灰尘的地方启动吸尘,节约能源。可以增加语音模块,实现语音控制,用户可以直接通过语音指令控制机器人工作。可以增加摄像头模块,实现视觉识别和智能导航,进一步提高机器人的智能化水平。

随着传感器技术、控制技术和人工智能技术的不断发展,相信未来的清扫机器人将会更加智能、高效、便捷,更好地服务于人们的生活。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐