您的当前位置:首页正文

基于单片机的智能垃圾桶设计

来源:独旅网
1 前言

1 前言

1.1 研究背景与意义

在公共空间或家庭等场所,垃圾的收集和储存往往是一个不容轻视的问题。例如炎热天气下的餐厅不及时处理残渣,留在垃圾桶中就会发霉发臭;而公共空间流动人员很多,垃圾更需要及时清理。虽然国家长期以来一直在建议保护环境,不乱抛垃圾,加强回收和循环利用废物资源,但仍然屡屡发生。主要还是因为垃圾桶不够干净,一般人都想离脏东西远远地,所以有些人就会随手将垃圾扔在垃圾桶盖上或垃圾桶附近,甚至造成垃圾桶内没有垃圾桶外却垃圾满地的现象,这就加重了保洁人员的负担以及回收再利用资源的难度。垃圾是细菌和各种虫子的温床,为了生活健康,就要避免垃圾聚集不及时清理的情况发生。但现在销售的大多数有桶盖的垃圾桶,打开盖子时要么需要手动要么需要脚踏的操作方式,这种传统垃圾桶工作方式正是造成上述情况的原因。为了适应科技时代的潮流,并解决上述问题,本设计力求于实现凭借传感器检测自行打开垃圾桶盖且具有语音报警功能的智能垃圾桶。

1.2 研究现状

垃圾桶作为日常生活不可或缺的装置,按摆放地点可分为公用垃圾桶和家用垃圾桶,按制造材质可分为塑料垃圾桶和金属垃圾桶,近年来还出现桶身为透明以便于辨识桶内是否遭放置爆裂物或有毒物质的垃圾桶,也被叫做“反恐垃圾桶”。经过调研,目前生产的垃圾桶主要有下列有待改进的地方:

1、垃圾桶封闭性不佳或直接没有盖,既会向四周散发味道,又容易滋长蚊虫,对环境和人的影响都不好。

2、不能处理垃圾已装满的情况,即缺少报警的功能,不及时清理垃圾就会掉落在桶外,既不美观也不卫生。

目前在市场上各种类垃圾桶看起来令人目不暇接,使用上却只不外乎是用脚踩或没有盖的开放式垃圾桶。在这个传感器技术快速更新的时代,各式智能仪器仪表、自动化装置迅速融入大众的生活当中。各种智能设备节省了大量人力,财

1

1 前言

力,在可见的将来,智能化和自动化技术必将得到更为广泛的应用,所以智能垃圾桶垃圾也将会是是一个发展的趋势。除了传统的垃圾桶,现今市面上还有不同类型的智能垃圾桶。现在市面上已经出现了用红外线等感应装置的解决方案的智能垃圾桶,通过集成电路处理传感器的信号并控制垃圾箱的盖开合,以此达到智能的目标。除了红外检测垃圾桶外,还有语音提示垃圾桶,垃圾桶自身配置一个用来播放语音喇叭,安装在桶底或合适的地方,并可以通过开关手动控制。

垃圾桶作为人类社会不可缺少的一部分,必定会伴随着时代发展和需求向着小巧和智能的方向发展。虽然目前的垃圾桶在智能化方向已经初见端倪,但距离理想的形态还具有很长一段距离。

1.3 本文研究内容

本设计主要使用STC89C52单片机为基础设计并开发一个智能垃圾桶系统。该系统实现智能开盖,垃圾装满语音报警的功能。设计主要以单片机为控制中心,通过红外传感器检测探测范围内有人与否,如果有,经过单片机控制启动步进电机,打开桶盖,再经过延时设定时刻后,自动关闭垃圾桶盖。步进电机通过线的正反缠绕实现桶盖的开启与关闭。通过红外对管模块,检测垃圾桶内的垃圾高度超过限定高度与否,如果装满,单片机控制语音播放芯片,喇叭播放语音提示人们处理垃圾。

主要内容包括: 1. 人体检测功能

2. 步进电机驱动电路的设计 3. 垃圾高度检测功能 4. 语音播放报警功能

1.4 论文内容及其安排

本论文主要论述了基于STC89C52单片机的智能垃圾桶系统的方案论证、硬件系统设计、软件系统设计以及软硬件联调等内容。本次设计的内容可以分为三个部分:

第一部分是硬系统件设计,包含方案的论证、所需元器件的选择等。具体的硬件电路包括人体检测电路、电机驱动电路、垃圾高度检测电路、语音电路、稳

2

1 前言

压电路和单片机的最小系统设计。在各个小的电路调试好后将他们整体连接起来进行整体检查调试,符合硬件设计的要求,最后分析得出结论。

第二部分是软件系统设计,软件部分全部使用C语言进行编程,合理利用了C语言的特点,贯彻了模块化设计的理念,即把各个功能分离成小的子程序,在主程序中作为子程序加以调用,在调试时就可以方便定位出现问题的地方,然后测试各项子程序和主程序,分析结果能否满足预定的功能要求,并得出结论。

第三部分是进行软、硬件联调,这是整个设计的汇总整合也是整个设计的收尾,目标是要协调好硬件和软件之间的关系,得到正确的结果。

论文具体内容安排如下:第一部分简明扼要的介绍了本设计的研究背景与意义、研究现状、说明本设计研究的内容、论文内容及结构安排;第二部分是本设计系统的硬件方案和软件方案阐述;第三部分主要叙述了硬件部分的系统设计,内容有单片机最小系统设计、人体检测电路设计、超限检测电路设计、语音播放电路设计、步进电机驱动电路设计以及稳压电路设计;第四部分说明了软件设计部分的系统设计,内容有主程序设计、自动翻盖程序设计、检测电路程序设计;第五部分则对硬件调试、软件调试和软硬件一起调试的过程和结果进行具体阐述与解释并列举实验过程中遇到的问题和解决办法。

3

2 总体设计

2. 总体设计

2.1 总体方案设计

本方案由单片机系统、红外对管传感器模块、电机驱动模块、语音报警模块、稳压模块组成。两个红外对管传感器模块作为单片机主要的信号输入源,单片机处理输入信号后,将控制信号输出到电机驱动模块和语音模块,完成本系统的设计功能。稳压模块则是在使用非USB供电时,使系统的输入电压保持在5V,是保证工作时系统的稳定性所必须的模块。

通过人体检测模块中的红外对管传感器检测出有人,把此信号传输给单片机,单片机收到该信号处理后控制电机驱动模块进行开盖,人离开后经延时一段时间后自动关盖。当垃圾高度达到设定高度时,垃圾检测模块中的红外对管传感器发送信号至单片机,单片机接收处理后控制语音模块播放语音报警。结构框图如图2.1所示。

人体检测传感器模块单片机系统垃圾超限检测传感器模块电机驱动模块语音模块

图2.1 结构框图

2.2 硬件方案设计

1. 传感器模块

常用的用于检测判断移动物体的传感器有热释电传感器、红外对管传感器和超声波传感器。热释电传感器广泛应用人体检测,比如楼道感应灯,但对人体的移动方向有要求,平行于传感器方向移动灵敏度最高。和热释电红外传感器对比,红外对管传感器能够检测的最小距离相对小,反应灵敏,且不易受环境光干扰而产生误输出。而超声波测距模块价格较高且感应角度不大于15度,使用条件非

4

2 总体设计

常有限。本设计使用MH-B型红外距离传感器模块,额定工作电压3.3V~5V。该模块有一个红外发射管和一个接收管组成,发射管向外发射波长在850~940nm的红外线,当有效检测范围内遇到障碍物时,红外线反射后被接收管接收,经模块比较处理后,模块OUT引脚输出低电平信号。模块自带一个电位器,可以用来调节检测距离,有效检测距离范围2~20cm。该传感器具有调节检测距离快捷、抗噪声、安装使用便利等优点,普遍使用于智能设备循迹,装配线计数等许多场景。所以红外对管传感器最适合本设计的使用环境。

2. 语音模块

语音模块常用ISD系列产品,比如ISD1820和ISD4004。ISD4004模块需要扩展很多外围电路并需要使用额外单片机进行语音录制存储,增加了电路的复杂度。ISD1820是美国 ISD 公司推出一种单片 8~20 秒语音录制兼播放芯片,它的基本结构与1110、1420系列完全相同,只能录放一段语音。芯片采用互补金属氧化物半导体技术,内置振荡器、话筒前置放大器、自动增益控制、防混淆滤波器、扬声器驱动以及存储阵列,并可方便的使用LM386等芯片实现功率放大功能。相比ISD4004模块,ISD1820结构简单,配套软件程序编写也很容易,不用复杂的寻址功能,对于本设计的单条语音播放相当合适,且具有自动节电功能,非常适合智能垃圾桶的使用条件。

3. 电机及其驱动模块

由于本次设计需要控制垃圾桶的开盖及开盖角度,直流电机只能通过通电时间和电流极性来控制其工作,不适合搭配单片机使用,而步进电机可以很简单精确地控制其输出轴旋转角度以及方向。步进电机可分反应式、永磁式和混合式三种,永磁式步进电机输出力矩足够本设计所需且动态性能较好。所以本设计使用反应式来驱动垃圾桶开盖。

驱动模块ULN2003是由七个硅NPN Darlington晶体管组成的具有耐高压、耐大电流特点的Darlington系列产品。该模块的每两个Darlington晶体管都在基极串接一个2.7K欧姆的电阻,在5V的工作电压下它能与晶体管-晶体管逻辑电路或互补型金属氧化物半导体电路直接相连,无需标准逻辑缓冲器就能处理单片机发送的脉冲信号,配合单片机能够方便的控制步进电机的工作。使用单片机来控制步进电机,可以充分表现步进电机优良的可控特性,而且单片机的可扩展性强,比如通过使用键盘或串行口输入,后续可以实现手动控制步进电机调速、正反转等功能。

5

2 总体设计

4. 稳压模块

本次设计中单片机所工作电压为5V,其他模块也均可以在5V电压下运行,即需要将7.5V直流电源降压为5V输入电压。由于本次设计供电电源为7.5V,LM78系列压差不能小于3V,而且经查资料发现,AMS1117-5.0型号稳压芯片与LM7805相比在发热量上相比有很好的降低,所以本次设计选用AMS1117-5.0型号稳压模块。

5. 单片机

DSP适用于有大量数据需要快速处理的环境,且芯片成本略高,开发软件需要学习相应的语法,而单片机则廉价且性能对于处理智能垃圾桶信号流绰绰有余。本设计采用的STC89C52RC是深圳宏晶科技有限公司设计的具有高速度、低能耗、抗干扰特点的51单片机,具有 8K Byte可反复擦写的Flash存储器。STC89C52沿用了经典的MCS-51架构,系统指令集完整兼容传统8051 单片机,但在结构上进行了一些的改良使得它具有一些传统51单片机缺少的功能。该单片机结构经典,相关开发资料丰富,使用它设计最小系统方案成熟稳定,而且烧录程序方便,不需要专用的烧录器,是理想的单片机选择。

单片机内部各部分的运行全部是靠时钟信号作为同步,时钟频率决定了单片机的运行速度,所以时钟电路的可靠性就直接决定单片机系统的可靠性。常用的单片机时钟电路有内部时钟方式和外部时钟方式两种。由于外部时钟信号源不方便使用,本设计使用内部时钟方式作为时钟电路。

由于调试时需要频繁的下载程序,按键电平复位电路非常适合这种情况。脉冲复位电路复杂,元器件较多;上电复位则没有按键复位快捷,所以本设计使用按键电平复位电路。

2.3 软件方案设计

本设计软件部分程序全部由C语言编写,C是一种通用的编程语言,具有效率高、使用灵活、功能强大、可阅读性强和较高的可移植性等特点。使用标准C语言的程序,对于单片机等微控制芯片,属于标准C语言编写的部分也很少需要改动。汇编语言是硬件底层的语言,需要结合相应芯片的说明书或文档才能使用汇编语言进行程序开发,所以很难读懂,后期维护和调整难度大。汇编语言能够直接操控寄存器的工作状态,但是代码移植复杂,更不能进行结构化编程。本设计子程序较多,所以采用C语言编写,可使代码简洁易懂,方便调试。

6

2 总体设计

程序工作流程如下:红外传感器检测到有人时,单片机控制步进电机打开桶盖,传感器模块感应到人离开后,经延时后垃圾箱盖将自动关闭。当红外对管传感器检测到垃圾高度超过设定时单片机控制语音模块播放语音报警,当垃圾被清理后停止报警,也可手动关闭。程序流程如图2.2所示。

开始系统初始化否是否有人扔垃圾是垃圾箱盖打开延时垃圾箱盖关闭否垃圾是否装满是延时语音报警

图2.2 程序流程框图

7

3 硬件系统设计

3 硬件系统设计

3.1 单片机最小系统设计

STC89C52使用8 位微处理器并具有在线系统可编程 Flash,使得它可以应用在很多嵌入式环境中,并提供简单灵动的解决方案。它具有以下基本功能和参数: 512 Byte 数据存储器,32 bit I/O口线,硬件看门狗,内置8K Byte Flash程序存储器,三个16 bit定时器/计数器,五个外部中断,全双工串行端口。最高时钟频率80 MHz,6T/12T可选。STC89C52RC的PDIP封装引脚图如图3.1所示。

图3.1 STC89C52引脚图

想要使单片机运行起来,必须具备两个个最基本的外围电路:时钟电路和复位电路,以及电源。只要具备这三个条件,就可以向单片机中下载和运行程序。时钟电路所使用的石英晶振的振荡频率直接决定单片机的运行速度,频率越高执行指令速度越快;单片机复位电路的电阻阻值和电容容值可由单片机频率根据

8

3 硬件系统设计

RC公式计算出,根据常用的数值,本次设计使用晶振频率采用11.0592 MHz,复位电路极性电容为30pF,电阻为10K欧姆。  复位电路设计

复位的主要功能是将程序计数器置为0000H,使单片机从地址0000H处开始执行指令。复位电路的原理是在单片机的RST管脚施加持续时间大于2 us的高电平,一般采用上电复位和按键手动复位两种复位电路方式。本设计使用按键手动复位方法,利用相移微分电路产生正脉冲的原理,VCC电源经复位键与单片机的RST引脚相连。复位电路设计如图3.2所示:

图3.2 复位电路设计

 时钟电路设计

STC89C52单片机本身自带一个高放大倍数反向放大器,只要外接合适的元件就能制成振荡器。XTAL1和XTAL2分别为振荡电路的输入端和输出端,在XTAL1和XTAL2引脚上并联石英晶体振荡器和微调电容,就能组成一个自激振荡器。本设计使用的微调电容C1、C5的电容值取30pF;使用11.0592MHz的外部时钟晶体振荡器(俗称晶振),在计算波特率时可以得到整数值。电路与单片机的第18和第19引脚相连。时钟电路设计如图3.3所示:

图3.3 时钟电路设计

9

3 硬件系统设计

3.2 人体红外检测电路设计

红外对管是红外线发射管与光敏接收管配合在一起使用时的总称。传感器模块凭借反射的红外线探测目标,所以被测物体的反射率和外形是影响探测距离和精度的两个主要因素。其中对于黑色物体所能探测到的最远距离最小,白色的最大;反射面积小的物体探测距离小,反之则探测距离大。基于红外线的原理,模块在检测时无需和被测物体发生物理接触,所以具有响应快,精确度高的特点。本设计使用的红外对管传感器模块的比较电路使用的比较器采用LM393,工作可靠稳定。

图3.4 红外对管传感器模块

当模块的有效探测范围内有障碍物时,模块的绿灯亮起,同时OUT引脚电平变低。模块检测距离为2~20厘米,检测角度为40度,可以通过电位器旋钮调节检测距离。上图蓝色方块即为电位器,顺时针调节电位器,检测距离增加,反之则检测距离减小。模块的VCC引脚与电源正极相连,GND引脚与电源负极相连,OUT引脚与单片机P2.7口相连。人体红外检测电路设计如图3.5所示:

图3.5 人体红外检测电路设计

10

3 硬件系统设计

3.3 超限检测电路设计

超限检测电路设计与人体红外检测电路类似,只是传感器安装的位置不同,OUT引脚接单片机的P2.6口。传感器安装在垃圾桶的桶口,当垃圾经过堆积,高度超过传感器的高度,挡住了发射管发出的红外线,使红外线发生反射并被光敏管接收到,这时红外对管传感器模块就会输出低电平信号至单片机。由于使用相同的传感器,所以人体红外检测电路和超限检测电路的硬件设计相同。超限检测电路设计如图3.6所示:

图3.6 超限检测电路设计

3.4 语音播放电路设计

本设计使用的ISD1820语音录播模块具有如下几个特点: 1. 使用方便的单片8至20秒语音录放; 2. 高质量,自然的语音还原技术; 3. 边沿/电平触发放音; 4. 自动节电,维持电流0.5uA; 5. 内置喇叭驱动放大电路; 6. 3-5V单电源工作。

11

3 硬件系统设计

图3.7 ISD1820语音录播模块

主要引脚描述:

 录音(REC) :高电平有效。只要REC引脚变为高电平且持续时间超过

84毫秒(防误触发),模块就开始执行录音操作,无视之前的状态,且在录音过程中,REC 需要一直为高电平。当REC 引脚电平变低或存储空间已满,一次录音完成,芯片会在数据后面添加一个信息结束标志符,然后芯片进入节能模式。

 边沿触发放音(PLAYE):当此引脚出现上升沿时,芯片开始播放录制的

语音,开始之后就可以放开该键。播音直到芯片检测到信息结束标志符,之后芯片将切换为节能模式。

 电平触发放音(PLAYL):当该输入引脚电平从低电平转换到高电平时,

芯片播音。只要此端变低电平芯片就会停止播音,播音结束后芯片自动进入节电模式。

 扬声器输出(SP+、SP-):这对输出端无需放大器即可直接驱动8欧姆

以上的扬声器。若只使用一个输出端则需要在输出端和喇叭之间接电容共地;当使用双输出端时既不用另接电容还能将输出功率提高四倍。SP+ 和SP- 内部通过50K欧姆的电阻相连,不播放时为悬空状态。 当单片机检测到垃圾高度超过传感器位置约3秒后,将给单片机P2.5口一个高电平,则喇叭播放预先录制好的报警音(按住REC录音),由于使用的是PLAYE边沿触发放音,所以要循环给P2.5口高电平才能实现持续语音报警,否则语音只会播放一次。语音播放系统被设定为喇叭持续播放直到垃圾被清理但当垃圾桶关盖时喇叭不会工作。若不想再让垃圾桶报警,可以手动关闭语音电路开

12

3 硬件系统设计

关。单片机P2.5口和语音电路开关都与ISD1820的P-E相连。语音播放电路设计如图3.8所示:

图3.8 语音播放电路设计

3.5 步进电机驱动电路设计

步进电机工作原理是通经过电子转换电路,将直流分量转换为多相时序变量达到控制的目的,以这种方式给步进电机输入信号步进电机就能运转。一个优秀的步进电机驱动电路不但需要一个好的步进电机更需要一个好的步进电机驱动器。

步进电机控制系统由步进电机控制器、步进电机驱动器、步进电机三部分组成。步进电机控制器也就是本设计中的单片机为控制中心,向步进电机驱动器发送高低电平信号;步进电机驱动器能够把单片机发送的控制信号进行放大增益,控制器每发出一个信号脉冲,步进电机就旋转一个步距角的角度。控制器可以改变脉冲数来控制步进电机的旋转角度从而精确定位,通过控制单位时间脉冲数目来精确控制步进电机的转速。

现在比较常用的步进电机有反应式步进电机、永磁式步进电机、混合式步进电机三种,他们的特点如表3.1所示:

表3.1 常用步进电机特点

步进电机 特点

反应式步进电机 构造简易,价格较低,动态转矩特性较差 永磁式步进电机 步距角大,扭矩大,动态转矩特性好 混合式步进电机 步距角小,扭矩大,动态转矩特性好

13

3 硬件系统设计

步进电机驱动可分为单极性和双极性两种,单极性驱动电路使用四个晶体管来驱动电机的两相,而双极性则是八个晶体管去驱动两组相位,不同的极性的驱动电路在用单片机控制时是有所区别的。选定步进电机的极性后,再选定步进电机的运行方式。按照运行方式的不同可分为三种:单四拍、双四拍、单双八拍。各运行方式相位顺序(以五线四相电机正转为例)如表3.2所示。

表3.2 步进电机工作方式节拍

运行方式 相位通电顺序 单四拍 A-B-C-D 双四拍 AB-BC-CD-DA

单双八拍 A-AB-B-BC-C-CD-D-DA(半步工作方式)

单拍方式每次仅给一个绕组通电,双拍则同时给两个绕组通电,这种方式能够比单拍方式多获得41.4%的输出力矩,但需要耗费两倍的能量;半拍工作方式则让两个绕组通电与单个绕组通电交替进行,半拍方式的输出力矩比双拍方式小,但可以获得双拍方式两倍的步进分辨率。在不同工作方式下的脉冲波形与电机四相波形分别如图3.10所示:

图3.10 通电时序与波形

本设计使用的步进电机型号为28BYJ48-H12,步距角5.625/64度(外部输出轴)。由于步进电机具有良好的信号控制特点,利用单片机使用软件代替传统硬件环分器,因此单片机成为步进电机的极佳的驱动源。随着科学技术的进步,软件结合硬件往往既能降低整体复杂度又能较好的发挥硬件优势,即通过程序设计发出特定的脉冲,从而控制步进电机。

14

3 硬件系统设计

图3.9 五线四相步进电机内部结构

步进电机工作过程:假设开始时A相通电,BCD相断电,则A相磁极和转子2、5齿对齐,0、3齿和B、C相错齿,1、4齿和C、D相错齿。当B相通电,ACD相断电时,B相磁极和转子0、3齿对齐,1、4齿和C、D相错齿,2、5齿和D、A相错齿…以此类推,只要依次给ABCD相通电,转子就会以ABCD方向顺时针旋转。

单片机接收人体检测传感器的信号后,输出相应控制信号至驱动板,驱动板对信号进行增益后驱动步进电机旋转。单片机定时器则等待中断,若检测到没有人在垃圾桶前,则延时3s,然后反方向旋转回到起始位置。自动翻盖运行一回合完毕。驱动电路ULN2003A按序与单片机P1口连接,对应输出到步进电机的ABCD相。步进电机驱动电路设计如图3.11所示:

图3.11 步进电机驱动电路

15

3 硬件系统设计

3.6 稳压电路设计

本次设计使用5块5号电池作为电源,单片机所工作电压为5V,另外的模块也可以在5V电压下工作。即把7.5V电源降低为5V输入电压,就能确保每个模块工作电压的符合要求。本设计使用AMS1117-5.0作为稳压电路的控制芯片,输入电压6.5~12V,固定输出电压为5.0V,并具有1% 的精度,最高负载电流0.8A。AMS1117是一个正向低压降稳压器,内部集成过热保护和限流电路,非常适合作为电池供电和便携式设备的稳压器。AMS1117芯片引脚图如图3.12所示。

图3.12 AMS1117引脚图

线性稳压器的稳定性一般随着输出电流成负相关。根据数据手册,对于可变电压型号的芯片,VOUT需要与一个至少22uF的电容接地,对于5V电压的型号可以采用略小的电容,未保证稳压电路的稳定性,本设计稳压模块的电容使用10uF。稳压电路设计如图3.13所示。

图3.13 稳压电路

16

4 系统软件设计

4 系统软件设计

4.1 主程序设计

本设计的总体思路是:系统启动后进行初始化操作,由人体红外检测电路探测设定距离内有人扔垃圾与否,如果有,则单片机判断后桶盖自动打开,若不再检测到人,则延时3s后,桶盖自动恢复原位,当人一直站在桶前时,桶盖会一直保持打开的状态直到人离开。当垃圾桶装满时,由超限检测电路检测垃圾高度到达设定高度与否,经单片机判断后控制语音报警电路,喇叭播放录制好的语音。只有在开盖后垃圾桶才会发出垃圾已装满的报警,提醒人们不要继续投入垃圾。然后程序返回到检测有没有人扔垃圾处继续循环下去。主程序流程框图如图4.1所示。

在检测的过程中,单片机每隔1秒检测传感器的输出,这就需要一个定义一个定时器中断函数。在程序设计中设计为循环20次,每次50毫秒,定时器工作在方式1,由计算式(216−𝑋)×10−6=50×10−3,解得X =36260=3CB0H,由此可得定时器初值。

17

4 系统软件设计

开始初始化检测是否有人是箱盖打开否检测人是否离开是箱盖关闭否否检测垃圾是否装满是喇叭播放语音报警

图4.1 系统主程序流程框图

4.2 自动翻盖子程序设计

本设计使用的是以单双八拍方式工作的五线四相步进电机,自动翻盖的控制信号输入为检测人体距离的红外对管传感器,输出信号至步进电机驱动板,由驱动板直接控制步进电机。若有人扔垃圾则1秒防检测后正转开盖,人离开后延时3秒,反方向旋转相同角度关盖,通过delay()子程序改变步进电机的旋转速度,通过设置for循环的次数来设置步进电机旋转的角度,从而使桶盖开合合适的角度。自动翻盖程序流程图如图4.2所示,红外1传感器指检测是否有人扔垃圾的红外对管传感器。

18

4 系统软件设计

开始红外1传感器持续输出低电平超过1s是否否桶盖为关是电机正转红外1输出高电平且桶盖为开是否电机反转返回

图4.2 自动翻盖程序流程图

由于在设计硬件电路时选用的是五线四相的步进电机,而且以八拍的方式运转,也就是步进电机的四相按A-AB-B-BC-C-CD-D-DA的顺序供电,以此时步进电机旋转方向正转,若反转则按相反序供电即可。ABCD四相对应着单片机的P1.0至P1.3口,当需要哪相工作时即向该相所在接口输出高电平(1),则A-AB-B-BC-C-CD-D-DA转换为二进制就是0001-0011-0010-0110-0100-1100-1000-1001,所以正转的供电顺序换为十六进制为0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9,同理反转就是0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1。把这些二进制保存为数组,在控制步进电机正反转时,可以通过与0x1相与直接给P1口赋值,不但减少这部分代码量还不容易出错。

4.3 检测电路子程序设计

在经过20次定时器中断后,通过检测红外对管的输出来给设定的变量赋值,

19

4 系统软件设计

若大于设定值则判断为有人或者垃圾已满,以此达到检测的目的。检测电路设计的流程图如图4.3所示:

开始否定时器中断次数等于20是红外1输出低电平否是人体检测信号值赋0人体检测信号值加1红外2输出低电平否是垃圾检测信号值赋0垃圾检测信号值加1返回

图4.3 检测程序流程图

当人体检测信号值大于1时,及判断为有人,垃圾桶开盖,并标记桶盖状态为开(1);当桶盖为关且红外1传感器输出为0时,及判断为人已经离开,垃圾桶关盖,并标记桶盖状态为关(0);当垃圾检测信号大于3且桶盖为关时,则启动报警电路播放语音报警。

4.4 语音报警子程序设计

垃圾检测信号值大于三时(放置误报警),语音播放启动。若不再需要报警,也可以手动把语音报警开关关闭。

20

4 系统软件设计

开始否报警电路开关为开是否垃圾检测信号值>3是P2^5=1返回

图4.4 语音报警程序流程图

21

5 系统调试

5 系统调试

硬件系统和软件系统设计原来是相互分开的,所以在分别调试好后应把程序下载到单片机中查看系统的工作情况,并进行调试来解决出现的问题。调试的目的是要检查软件是否能够配合硬件正确运行,以及运行输出是否满足预定目标。在全部调试过程中反应出如下几类问题,如编程中的逻辑上的错误,硬件连接不可靠等。以下详细阐述了每个调试的过程,并详细记录了相应的问题和处理方法。

5.1 系统软件调试

1. 选择单片机型号。本设计使用的单片机是STC89C52,但是Keil自带的

芯片库中没有这个型号的单片机,使用Atmel的AT89C52可以代替使用,结果相同。弹窗右侧是AT89C52特性的简要说明,可见其参数和本设计使用的STC89C52基本相同。点击确定。

图5.1 选择单片机型号

2. 编写好项目的软件代码,左击Translate,编译器会检查程序语法错误。

若没有语句错误,点击单击Option for Target选项的Output标签,勾选Create HEX file,如图5.7所示。左击Build按钮,就会在目标文件夹编

22

5 系统调试

译出烧录单片机所使用的.HEX文件。

图5.2 设置生成.HEX文件

3. 烧录.HEX文件。由于STC89C52本身的特点,可以使用ISP软件方便

的进行程序烧录,但是需要使用USB转TTL芯片。本设计使用的是STC-ISP V6.75版本,将转换芯片与单片机的RXD、TXD正确连接,按图5.7设置好ISP软件,选择正确的串口号后点击下载/编程,复位单片机即可进行程序烧录。

4. 调试步进电机正反转。在正反转的子程序中,通过delay()延时函数调

节步进电机转速,延时越大则转速越慢,但经过调试发现最低只能设置为2,再低则电机不会转动;通过设置for循环的次数来设置步进电机旋转的角度,经过反复试验后确定为循环450次可以正好打开桶盖约85度左右。

23

5 系统调试

图5.3 ISP软件的使用

5.2 系统硬件调试

在确保个元器件没问题后,硬件调试首先要检测电路是否有断路、以及焊锡用量过多或过少导致的引脚间短路或虚焊情况。最后将已经焊接好的电路板通电,使用万能表仔细检测每个引脚的状态是否正确,测量各个模块输出电压正确与否。

5.3 调试结果及分析

在着手进行调试的时候,会发现自己留了很多坑导致系统无法工作,只能每个部分分别检查,然后解决每个问题,这也是模块化设计的优点所在。软件和硬件最后完美融为一体,达到本设计的预定目标,但也遇到了一些问题,下面记录了具体情况。

 程序无法下载至单片机 解决办法如下:

1. 检查转换芯片是否正常工作,尝试重新安装芯片驱动,重启电脑或ISP

软件,检查RXD/TXD是否接触好。 2. 单片机自身问题,尝试更换单片机。 3. 选择ISP软件中的“低速下载”模式。

24

5 系统调试

4. 多按几次单片机的复位键尝试是否可以使用。  步进电机不运转 解决办法如下:

1. 步进电机运转过程比直流电机多,要配合ULN2003A驱动电路使用。检

查驱动电路是否正常。

2. 修改正反转子程序中的delay()函数参数,过低情况下步进电机不能正

常工作。

3. 单片机引脚输出电流较小,若接在P0口则需加上拉电阻,接在P1口则

没有这个问题。

4. 输入电压过低导致不能启动电机,尝试更换新电池。  红外对管传感器输出指示灯常亮

解决方法:一般是由于模块自身电位器的问题,当把探测距离设置过大时,会造成模块一直输出低电平,这是可以尝试调节电位器减小探测距离,若问题还未解决则建议更换红外对管传感器模块。

25

6 实验结果

6 实验结果

经过本次毕设,完成了预定的目标,设计成果满足下列要求:

1. 实时探测有人与否,并自动开关盖:当人手在垃圾桶上方10厘米以内

时,垃圾桶可在1秒内开盖;当人离开后可在3秒后自动关盖。 2. 实时检测垃圾的多少并超限报警:当垃圾高度超过桶口时间大于3秒,

语音报警响起,直到垃圾被清理或手动关闭报警。垃圾桶关盖时报警不会响。

3. 用语音模块进行报警提示:报警时播放“垃圾已装满”语音。 实物展示:

图6.1 智能垃圾桶外观

26

7 总结与展望

7 总结与展望

在这次毕业设计中,我使用STC89C52单片机作为主控制芯片,实现自动开盖和垃圾超限语音报警的功能,完成基于单片机的智能垃圾桶设计。

通过红外对管传感器感应有人将要扔入垃圾,并把信号输送到单片机,经处理后发送脉冲信号使电机驱动模块进行开盖,人离开后经延时一段时间后自动关盖。电机驱动使用ULN2003模块,使用步进电机作为开盖的动力源因为它的旋转角度容易控制。当垃圾高度达到设定高度时,红外对管传感器发送信号至单片机,单片机处理后控制语音模块播放语音报警。语音模块使用ISD1820,它能够方便的进行语音录放,并且模块自带的放大电路能够直接驱动一个5欧阻抗的喇叭。在软硬件联合调试过程中肯定会遇到一些疑难,这时需要不懈的调整,细心分析它的内在问题,最后完成整个系统的设计。

虽然毕设成果已经满足了毕设题目的所有要求,鉴于时间紧迫,本设计方案还不够成熟。虽然垃圾桶可以开盖,并且具有语音报警功能,但距离理想中的智能化还有很长一段路,我觉得还有以下几个可以提升的方面:

 提升语音质量:现在使用的芯片需要手动录制音频,会受到环境噪音干

扰,而且录音不够自然,效果不好;

 改变开盖部分机械结构:由于材料的限制,使用线拉的方式来拉开桶盖。

这种方式在使用步进电机的情况下存在延迟高和速度慢的问题,以后可以用齿轮配合直接驱动桶盖打开;

 更换人体检测电路传感器:使用热释电传感器可以使垃圾桶在只有人靠

近时工作,但热释电传感器容易受到环境因素影响而导致输出不稳定,暂且使用红外对管传感器代替之。

27

因篇幅问题不能全部显示,请点此查看更多更全内容