《智能家居分类垃圾桶硬件实现.doc》由会员分享,可在线阅读,更多相关《智能家居分类垃圾桶硬件实现.doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、北京理工大学珠海学院2020届本科生毕业设计毕业设计(论文)智能家居分类垃圾桶硬件实现学 院:专 业:姓 名:指导老师:信息学院电气工程及其自动化麦光澄学 号:职 称:160109100882黄鸿教授中国珠海二二年五月北京理工大学珠海学院毕业设计诚信承诺书本人郑重承诺:我所呈交的毕业设计智能家居分类垃圾桶硬件实现是在黄鸿教授的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计(论文)使用的数据真实可靠。承诺人签名: 日期: 年 月 日智能家居分类垃圾桶摘 要本文是通过以Keil5软件与protues仿真软件结合,对stm32单片机,sg90舵机和tcs
2、3200识别系统等进行设计仿真,编写代码而设计一款智能家居分类垃圾桶。该智能垃圾桶具有以下的功能,当垃圾进入检测范围是立刻启动识别系统检测垃圾的种类,然后舵机动作把垃圾倒入分类区内,具有省去人工分类的劳动力,直接进入机械化的垃圾分类时代,可提高居民的生活效率,提高垃圾分类的准确性的特点。本次设计所用到的关键技术有以下几个:采用了三原色识别技术帮助系统快速对颜色的信号采集,每一个滤光器都工作采集一遍,解决了识别中出现的颜色漏缺现象,采用单片机PWM脉冲宽度调制技术,是驱动tcs3200和sg90舵机主要信号,实现单片机主控功能,而且解决了单片机输出信号可能与识别模块采集的信号产生混乱的影响,采用
3、了单片机内的通用定时器多路输出脉冲技术,帮助系统实现多台舵机控制,这些技术都是能帮助整个系统顺利完成垃圾分类的过程重要的技术支持,使得垃圾分类达到快速识别,快速动作,系统稳定的性能指标。关键词:垃圾分类 智能化 PWM脉冲技术 Smart home sorting binSummaryIn this article, I designed a smart home sorting trash can by combining Keil5 software and protues simulation software to design and simulate the stm32 micro
4、controller, sg90 servo and tcs3200 recognition system, etc., and write the code. The intelligent trash can has the following functions. When the garbage enters the detection range, the recognition system is immediately activated to detect the type of garbage, and then the steering gear acts to dump
5、the garbage into the classification area, which saves the labor of manual classification and directly enters the mechanized garbage classification Times, can improve the efficiency of residents lives, improve the characteristics of garbage classification accuracy.The key technologies I used in this
6、design are using the three primary color recognition technology to help us quickly collect the color signal, each filter works to collect it once, and solves the color leakage phenomenon in the recognition. Use The single-chip PWM pulse width modulation technology is the main signal to drive the tcs
7、3200 and sg90 servos, to achieve the main control function of the single-chip computer, and to solve the influence of the single-chip microcomputer output signal and the signal collected by the recognition module may cause confusion The multi-output pulse technology of the device helps me realize th
8、e control of multiple steering gears. These technologies are all important technical supports that can help the entire system to successfully complete the process of garbage classification, so that the garbage classification can achieve rapid recognition, fast action, and stable system performance.K
9、eywords: waste classification, intelligence, PWM pulse technology目录 前言(1)第一章 概述(1)1 1任务提出(1)12 国内外发展现状(1)13 本毕业设计所做的工作(2)第二章 工具介绍(2)21 对所能用工具的简介(3)2.2对所选工具的较详细介绍(3)第三章 系统总体设计.(9)31 系统结构(9)3.2 系统全部模块(9)第四章 系统详细设计.(9)41 整体形状设计(10)42 单片机模块(10)43 舵机模块(13)44 识别模块(14)第五章 系统实现.(15)51 系统的流程(15)52 系统电路图仿真(16
10、)53 系统PCB仿真(18)5.4 系统调试(19)第六章 系统总结(22) 61 系统特点(22) 62 系统不足及解决措施(23) 63 系统展望(24)参考资料(25)致谢(26)1 前言第一章 概述1.1任务的提出随着智能化科技的发展和改革开放以来居民生活质量的提高,日常中居民生活活动这些环节产生的垃圾类型也因此越来越丰富,所以城市里进行垃圾分类可以将可回收垃圾转化为其他一些能循环利用的生活用品或者以可回收垃圾制造而成的建筑材料。在生活中,伴随着生活水平的提高许多人们开始享受物质带来的快感,开始购买各式各样材料合成的生活用品,但同时也使得垃圾无处不在。如果可将这些垃圾划分为不同的类别
11、,分开处理不同种类的垃圾这样能使这些垃圾得到针对性的处理。在生活中能发生自身降解或者人工分解无害的垃圾其实很少的,如果将这些垃圾直接填埋可能产生很多的有毒物质,垃圾堆埋场土壤产生严重的污染,以后都不能种植植物,如果渗入地下水系统网络导致周围的水源污染,动物出现死亡的现象,更有甚者动物因为饮用垃圾污染的水源或者吃到污染土壤所种植的植物会导致动物体内自带病毒,这样的病毒带到人类的食物链上可能导致严重的流行病。所以进行垃圾分类处理能有效的减少垃圾的危害性。分类好的垃圾还能按照不同种类加以再次利用,譬如餐厨垃圾可以作为堆肥再次生成肥料,无害的可燃烧垃圾可以拿去燃烧发电,可回收垃圾甚至可以做成建筑材料等
12、等。这就是我国现阶段大力推广垃圾分类的原因,贯彻我国科学发展观的思路之一。本文章通过对STM32F103单片机的功能研究分析,学习和分析舵机驱动和识别硬件的工作原理和方法,研究出一款由STM32F103单片机及颜色识别传感器组成的智能分类垃圾桶,这款智能分类垃圾桶主要是通过STM32F103所驱动tcs3200颜色识别器识别出垃圾的颜色,并向单片机反馈识别信号,单片机处理信号后输出的脉冲驱动舵机的角度旋转,将垃圾分类到其所在的区间,这样就能完成一次垃圾分类的动作。为了保证各方面不出问题,我们需要对STM32F103这单片机性能做好分析,并且保证tcs3200颜色识别器能做到最高准确率的识别精度
13、,舵机的动作要保证把垃圾准确丢弃进垃圾分类种类正确的区域。1.2垃圾分类在国内外的发展概况在国外城市化水平很高的国家,垃圾处理的问题也更早的显现出来,所以国外关注这些垃圾的问题比较早。国外的学者也在长时间的探讨中制定了符和其国家国情的垃圾分类措施。例如我国的邻居日本,他们是在垃圾的源头进行分类的控制,日本的家庭中都有四五个垃圾桶来进行垃圾分类。这不仅靠的是居民的自觉性,还有日本不断完善的法律体系,在长期的宣传和教育的过程中形成的习惯。还有就是巴西的拾荒模式,巴西政府因为大量底层人民只能靠变卖垃圾中可回收的材料来生存,那么创建拾荒者联合社不仅给一些底层人民提供了生活的可能,也增加了社会的稳定,当
14、然也为巴西的垃圾分类回收贡献了力量。1957年7月12日,我国首都的北京日报上有一篇文章就呼吁当地居民要对生活中产生的垃圾进行分类回收,这是中国第一次提出了垃圾分类的概念。而且我国在那个时候因为才刚建国,处于经济发展的初级阶段,各个产业没有迅猛发展,导致社会中物资的非常稀缺,居民们当时的节约意识都引导他们将生活垃圾分开来装袋,纸皮箱铁这些可再次利用的垃圾都装到专门回收这些垃圾的回收厂卖钱,补贴家用。可改革开放以后,我国经济得到快速发展,居民需要的物资开始大量生产,生活用品食材甚至各种新型材料层出不穷,居民也因为大量消费购买各式各类的用品使得垃圾日益增多,使得我国环保方面面临巨大的压力。许多城市
15、因为半途而废,没有对垃圾进行源头处理,在直接垃圾填埋时有的垃圾无法进行分解使得土地资源的流失。有的城市还干脆把工作重点转向末端分类,指望靠着清洁工人的劳动来分类,加重清洁工人的工作难度。回到垃圾分类这件事上来,居民在进行垃圾分类过程中,其实只需要居民们把它们分别装到不同的垃圾袋上,虽然有居民积极地执行这样的方法同时付出精力去记住这些习惯,但大部分却为了减少劳动而直接把垃圾丢放在一起,把这些工作寄托在别人身上去完成垃圾分类工作,直接享用社会福利改善的成果。久而久之,居民会自觉分类垃圾行动就难以形成,致使垃圾分类行动少部分人在努力工作分类,但大部分人都图省事直接垃圾扎堆丢弃,使得工作进展无法张开,
16、无法真正落地。这是限制我国垃圾分类开展的阻力。这样的情况下,设计出一款能自动分类的智能垃圾桶,实现投掷垃圾即可自动识别自动分类的功能,能让垃圾在源头上就做好分类的处理,那么运送到垃圾处理的末端环节是可以省下大量的人力物力来再次分类,可以加速资源的回收利用和减少垃圾二次的污染。而且有一款如此方便的垃圾桶,也更能让居民们接受各城市垃圾分类的政策,学习和宣传教育成本大大的减少。1.3本毕业设计所做的工作 对于这次智能家居分类垃圾桶设计,是通过对国内外相关理论的深入查阅和学习,充实理论功底,增加设计实现的可能性。在此基础上,运用所学的专业知识进行各个环节的具体设计。随后进行制作,并查找相关网站与分类资
17、料,收集相关的资料和各地的政策 。 通过颜色识别和机械的配合完成垃圾分类,设计出一款体积小,速度快且能自动分类的垃圾桶。不用出现人工分类垃圾而是转变为智能化机械化,由舵机的运动系统负责输送垃圾,这样的做法不仅将减少城市垃圾分类需要的大量的人力、物力和财力,还能让居民们不用专门去学习垃圾分类的要求,将简单便利的推广进居民的生活中,使得居民对分类垃圾这些要求或者动作不再抗拒。1. 设计整体形状时,设计出符合放在家庭里家用垃圾桶的形状。2. 颜色识别时反馈给单片机的信号不应与输出的脉冲信号相冲突3. 如何通过单片机驱动舵机,实现对舵机驱动来控制挡板。4. 实现按照垃圾颜色分类,对垃圾进行分别进仓操作
18、。第二章 工具介绍2.1所使用的的工具简介:本次设计所用到的工具是KEIL5软件和 protues软件,Keil5是一款非常适合学习使用的C语言开发编程软件,Protues是我用来进行硬件仿真,查找系统工作是否出错的软件,当然它的仿真结果给我启发,能查从中找出系统的改进之处。Solidwork是一款为机械设计而开发的视窗产品,是一种三维的CAD系统,使用这款软件可以让我们设计出来的机械结构能够3d可视化,查找出结构不足之处。2.2对所选工具的较详细介绍2.2.1 Keil 5Keil是美国keil software公司针对51系列的单片机,为其设计包含c编译器,宏汇编,库文件等,功能强大的仿真
19、软件,现在已更新到支持stm32f103系列的版本,它可以让用户定义密码序列的全功能编辑器,汇编编译与连接外部应用程序的生成程序的功能,通过编译项目生成的HEX文件,能让单片机的编译器识别出来并根据编码好的程序执行动作。而且程序出现逻辑错误时候,它会详细的指出什么类型的错误,在第几行,怎么修改。Keil 5使用方法:打开keil5界面,如图:图2.2.1 keil界面上面是各种功能的快捷方式图标,如果我们建立新的工程就需要电机菜单栏里的project,如图:图2.2.2 keil建立工程页面点击new uvision project就能成功建立新的工程,当我们保存这个工程后,我们就进入了单片机
20、芯片型号选择界面,这是根据我们所需要的来选择,本设计选用的是stm32f103系列芯片,所以我们找到该芯片型号点击确定就行了图2.2.3 建立工程中选择芯片型号当我们选择好芯片就可以进行代码的编写,只需电机File先空白纸样式的图标,就可以成功建立一个工程的文件,我们在上面编写的代码就是该芯片能编译的程序。这样我们就能为我们的单片机编写出驱动程序和识别程序了。图2.2.4 为工程建立空白文件2.2.2 ProtuesProtues是一款EDA工具软件,它为我们在认识单片机,学习单片机,进行单片机内部电路辨别这些内容带来全方位的知识和视觉支持,从画写电路布线图,单片机烧入代码,单片机和外部电路配
21、合协调仿真,各个层面带来最全面的功能。重要的是它包含了许多系列的单片机,51系列,ACR,PIC等,都可以在其库元器件里找到,而且资源丰富的库元器件里面还有示波器交直流电压表这些工具,能让开发者在软件层面就能用来测试所设计的电路是否有出现错误,这些功能叠加配合使用,广受学习单片机,开发单片机的人员青睐和使用。而且从原理图切换到PCB也只是鼠标点击一下这么快速,支持自动布线,还能进行实时仿真来查找问题,避免设计出来错误的版图。能在设计阶段就能完善所有的误差。Protues的使用: 首先我们打开Protues是这样的界面,如图:图2.2.5 protues界面 点击上面的文件新建文件输入好名称,设
22、置好选项后进入设计电路图,如图:图2.2.6 为工程命名图2.2.7 选择是否创建原理图图2.2.8 建立工程总结完成这些步骤,进入的设计页面,点击上面的元器件库或者按P键召唤出选择元器件页面,如图:图2.2.9 元器件库选择界面左侧就是本次设计我选用的硬件元器件,接下来我们就可以设计电路和对电路进行仿真了。第三章 系统总体设计3.1 系统结构 垃圾桶整体设计如图所示,分为了识别模块区域,舵机模块区域,垃圾分类区域。下方的分类区代表着红蓝绿三种垃圾的分开存放,避免污染,符合设计理念。舵机模块包含着垃圾停放,垃圾输送的功能,我把分类的动作简易化,直接集成在舵机模块上面,这样这块挡板既是识别模块所
23、能识别到的区域,也是和别完成后,舵机运送垃圾的工具。识别模块因为受到其本身性能影响,所以需要放置在离垃圾投掷口最近的地方,这样垃圾一旦投掷进来,识别模块马上开始运作。3.2 系统的全部模块当然,垃圾桶整体系统还包括如下的模块:图3.2.1系统各部分图解本设计系统总体包括垃圾检测模块,单片机控制模块,舵机模块,分别对应tcs230传感器,stm32f103单片机,sg90舵机。辅助模块是为了增加系统的功能性而设计的,比如能增加一个屏幕显示,垃圾测满这些功能。补光模块是为了能在黑暗的环境下仍能保持识别精确度。第四章 系统详细设计4.1整体设计 智能分类垃圾桶作为家庭里的一种日用品,其模型不应过大也
24、不应该过于笨重。所以对于垃圾桶的形状的设计显得尤为重要,很长一段时间里垃圾桶都是以塑料作为原材料来制成的,因为塑料是一种轻量且强度高、内部的化学结构稳定而且价格便宜的优点可以运用在许多生活甚至工业场景里面,但是它的缺点也很明显,不可分解处理起来异常麻烦,填埋时间长久会对我国土壤造成伤害,焚烧生成的有毒气体会对空气质量,周围生物造成巨大的影响。本设计因为是贯彻国家大力推动垃圾分类的理念,也算是实现科学发展观的思路之一,为了环保事业,我选择使用一种环保的材料可降解塑料。用乳酸作为原料通过其他材料配合聚合而成的聚乳酸(PLA)就是一种可再生降解材料,仅仅靠环境中的微生物配合光线的作用就能分解成二氧化
25、碳和水,不污染环境的环保材料。它是由玉米,番薯这些含有淀粉的可再生植物所提取的淀粉原料制成。下一步将这些淀粉通过反应生成一种糖类,乳酸就是这种糖配合一些特定的菌种发酵反应制作成,最后一步乳酸进入化学反应仓,经过一系列变化合成制作而成聚乳酸。而且使用聚乳酸制成的外壳不仅轻而且物理性能优良,抗摔不易损坏。我所设计的智能垃圾桶硬件主要包括舵机驱动装置、单片机系统、颜色识别硬件这部分组成。因此设计出的智能垃圾桶应满足一下几个要求:1.垃圾桶的整体形状应该紧凑能做到放在家里的体积大小,太大会对生活造成不便,过小会让垃圾很快装满不实用,而且垃圾桶需要环保耐用而且对卫生做好保障。2.垃圾桶的识别速度应该快速
26、,以防止垃圾无法及时分类造成堵塞。3.垃圾桶分类过程应该准确且干净,舵机动作应该稳定不抖动。4.2单片机模块 根据本设计的实际需求,我们所需要配的单片机不需要有太多的功能但也不能选择处理速度慢或者信号有冲突的机型,我们小组汇总找到一款单片机型号为STM32F103的中低端的32位ARM微控制器,它拥有168MHZ工作频率,内部电路芯集成高速存储器,具有许多 I/O 端口为与外部硬件提供增强型的信号输出驱动和一些辅助性的外设连接到外部总线。具有高性能,廉价,功耗低的特点,在嵌入式领域中应用广泛,对于一些微型驱动系统,数据采集系,stm32嵌入式系列一直是首要选择。当然也有很受新入门开发者喜爱的A
27、rdunio,他是开源的芯片平台,Arduino是非常适合新手上手使用一款开发芯片,因为它所有使用到库函数API等封装在存储器内,函数和语法简单易懂,使用者可以直接调用库函数进行编码使用,虽然有损执行效率,但是在开发者对程序的理解、结构、组织上非常方便。综上所述,我们小组经过讨论选择单一功能更加有效率的STM32F103,因为我们所需要单片机为我们所做的事情就是为舵机输出脉冲和处理颜色识别器所识别的颜色程序。 图4.2.1 Stm32f103图片 图4.2.2 stm32f103在protues内的图片那么stm32f103怎么驱动舵机进行角度变换呢?我们需要用到stm32内定时器的特殊功能,
28、让定时器发出单脉冲信号,这是通过我们设定的一次事件或者动作发生后,形成一段有宽度的信号。通用定时器是一个可编程驱动,预分频,有16位自动装载计数器搭配形成的一个功能块,它可以自动测量出输入输出脉冲的宽度大小,也可以根据开发者自定义一种固定宽度的脉冲信号输出到外部电路,也有定时中断这样的高优先级功能,它是支持向上下同时技术的模式,例如向上计数是只从零开始一步一步加载到设定值,要么最终溢出发生中断,要么达到指定值发生中断。使用通用定时器我们第一步需要给定时器使能,使其启动,初始化定时器并配置好我们想要输出脉冲的形状。在寄存器中设定一个值或者说往寄存器里植入一个数,定时器刚开始时输出一般都是低电平,
29、当通用定时器开始计数,一步一步往上加时,只要计数的数量小于寄存器里的数值时,此时输出的是低电平,当计数器的读数超过寄存器的数值时,马上输出高电平,计数器还会继续读数到某个最值,它因为会溢出所以计数器重新回到0,输出为低电平,开始下一轮的计数,此时就产生了一个完整的PWM信号。因为下面会提到的SG90舵机能直接收社识别PWM脉冲信号,所以STM32会直接将这产生的信号输出给SG90舵机,舵机接收信号后开始动作。以上是使用STM32F103控制单个舵机的实际过程,但本设计因为识别传感器的原因需要使用两个舵机,所以我设计同时驱动两个舵机的办法是,通用定时器它是具有多路输出信号这种功能的,我们可以编程
30、向这些通道使能,修改不同通道的寄存器的数值。通过以下的代码启动了通用定时器4路输出,改变内部寄存器的值,就能同时向两个舵机分别发出驱动其动作的宽度脉冲了。TIM_HandleTypeDef TIM3_Handler; /定时器句柄 TIM_OC_InitTypeDef TIM3_CH1Handler; /定时器3通道1句柄TIM_OC_InitTypeDef TIM3_CH2Handler; /定时器3通道2句柄TIM_OC_InitTypeDef TIM3_CH3Handler; /定时器3通道3句柄TIM_OC_InitTypeDef TIM3_CH4Handler; /定时器3通道4句柄
31、 这种多路通道输出较低频率的PWM时,我们需要注意一个比较关键的问题,中断服务函数,这个函数是关键,当有触发中断情况时,例如某个通道寄存器的值已经超过了该通道的比较值,那么中断会发生,判断哪个通道触发这次中断,接着会读取该通道的寄存器中的值,来判断它是一个怎样的电平,高还是低,根据对比再决定出一个比较值,重新定义在该通道上,保证通道能连续生成固定的PWM信号。而且这寄存器和通道的比较值是可以随时改变的,我们可以设置CCRx_Val这个值,然后设置公倍数关系的ARR寄存器的设定值,这样是可以改变PWM的频率的也可以改变PWM的占空比。4.3舵机模块 sg90舵机是通过接受脉冲信号来变化角度来驱动
32、的伺服系统硬件,它内部的带有减速齿轮组作为动作后制动电机的工具、内部自带的传感器检测角度位置、直流电机和控制电路组成的闭环反馈控制的伺服系统,常用在需要变换角度的运动系统中。用来伺服电机运动和分析电位器反馈回来的信息的是电机控制板。重要的硬件是电位器,它是为电机转动的所有动作提供参考,检测整个系统中电阻的变化,采集这种变化变成一种信号就将其交给电机控制板,电机控制板接收到这种信号用来判断是否与运动到要求的位置。齿轮组里有许多级放大齿轮,其的作用是通过滑轮原理把力量放大,能让小功率电机也能生成更大的扭力。舵机的能够动作是因为它是接收PWM脉冲信号就能根据脉冲宽度后,在芯片内部识别出来该脉冲的宽度
33、后,获得直流偏置电压。舵机工作的前提条件是要有脉冲信号,且该信号必须是持续20ms的具有特定宽度的。这样舵机启动内部的调制芯片,根据直流偏置电压与电位器的电压作比较求出电压差输出。电压差的值是决定电机驱动旋转如果是正数那么电机正转反之电机则是反转。当电机运动的某一个点,即主控芯片要求达到的点位是,电机会通过齿轮组带动电位器旋转,使得电位器电压与直流偏置的电压相等,这是舵机收到脉冲完成一次动作过程小型舵机的工作电压一般为4.8v或者6v,转速不算很快,一般有0.22/60度和0.18/60度。所以说我们输出的脉冲更改角度的空度速度太快时候,这舵机可能会发生无法动作的情况。sg90舵机的有三条线用
34、来接线,两条电源线为sg90舵机供电,保证舵机正常运作。信号线可以直接接在STM32F103的I/O口,由单片机输出的宽度脉冲控制,必须注意是20ms脉冲周期,如果想要精细化的旋转特定角度,如63度这样子的动作,具体要看定时器的时钟频率,范围必定是0.5ms2.5ms就可以得到0.09/us的角度变换,那么输出的PWM=0.5+N/0.09就可以让舵机0180度的旋转任意角度。以上就是SG90舵机,也叫伺服驱动器的工作原理和使用方式。 图4.3.1 舵机总线和形状舵机旋转角度与脉冲宽度持续时间关系,如下图所示:高电平t占整个周期T(20ms)的时间舵机旋转的角度0.5ms0度1ms45度1.5
35、ms90度2ms135度2.5ms180度图4.4.1 角度与T的时间关系我所使用的是方法,在程序中设置一个全局变量,这个变量是用来几率定时器中断次数的,我们编程设置通用定时器每隔0.5ms中断一次,没到达40次,把变量清零。这样保证输出的都是20ms的脉冲。当中断次数小于a时,信号线输出高电平,否则输出零。我想要舵机转向左的一个角度,那么它需要上位机给他一个正向2ms的脉冲信号,那么我们可以先把定时器清零,然后设置输出口高电平输出,定时器设置为2ms中断一次,这次中断后,单片机端口输出因为中断变成低电平,之后的18ms后会进行下一次的中断,输出口又变成高电平输出,而且这样操作能让定时器的初值
36、变为2ms,又开始了等待下一次中断。因此,采用上述方法可以实现舵机的PWM信号输出,并实现舵机旋转角度的条件。通过把定时器中断初值的不断变换的方法可以让单片机产生脉冲信号,可以使舵机的驱动是根据其接收到单片机发出的不同的脉冲宽度进行动作的。4.4识别模块 识别系统是作为智能分类垃圾桶中最重要的一部分硬件,识别系统的好坏决定着垃圾分类的精确度,如果硬件配置选择出现不合理的情况,可能导致垃圾分类无法正常运行。但是如果选用高精度的摄像头识别硬件来说,对于主控系统单片机性能的要求会提高, 所以在这种情况下,本设计识别系统考虑了tcs3200颜色传感器。TCS3200颜色传感器是一种包含RGB感应芯片和
37、作为白平衡和增加光线强度4个白色的LED灯,任何可见光在识别区间内都能被它检测出颜色来。非常适用于对于色彩程度的测量领域。他在单一的一块芯片上集成了三原色的滤光器,是一种能输出数字信号且兼容同种接口的颜色传感器,tcs3200的输出是数字信号,可以通过嵌入式系统(例如微计算机芯片)直接读取,因此可以使用驱动程序直接访问嵌入式系统,同时TCS3200能接收标准的TTL或者CMOS逻辑输入实现通道10位以上的转换精度。 图4.5.1 tcs320引脚图和功能框图因为TCS3200颜色传感器内集成 了红绿蓝三个滤光器,那么当我们编写程序选择之启动一个滤光器时,它只会允许该滤光器对应的颜色进入排除其他
38、颜色的进入。例如我们选择启动蓝色滤光器时,入射光只有蓝色光的波形能被传感器识别出来,其他的色光波形会被排除在外。当通过不断启动滤光器来识别出来的三个值时,就可以分析出来识别物体的颜色了。Tcs3200使用8引脚封装表面,并用64个光电二极管将集成表面密封在单个芯片上,该芯片分为蓝色,绿色,红色和其他滤光片的四种光电二极管。通过所有这些数据,整个芯片上的光电二极管可以减少入射的不均匀性并提高色彩感知的准确性;在另一种情况看来,它们并联连接并均匀分布在射线二极管消除颜色位置错误。动态工作时,通过两个程序(引脚,输出频率范围)从2hz-500khz中选择典型的传感器,选择所需的滤波器,用户还可以选择
39、100,20或2的输出百分比系数或关闭模式。不同的测量范围拥有不同比值的输出比例因子使传感器能够适应并提高适应性。举个例子,当我们想要计数器处于数值较小的情况下,可以选择一个较小的设置,使每个引脚tcs3200计数器与tcs3200的输出频率处于同一工作模式; S0用于选择输出系数,S1功能是电源关闭模式;S2与S3用于选择输出滤波器的类型作为输出频率。TCS3200作为传感器开始工作前需要进行一项重要的步骤,就是白平衡调整,白平衡是为了使机器默认一种白色为初始量,根据对比出物体实际的颜色。理论上白色是三原色一比一比一的色值比例混合而成的,然而现实中的常见白色并不是红绿蓝三种颜色等值比例混合形
40、成的,不同情况下,所需求的比例不一致。而且TCS230传感器因为制造特性和工艺要求,每个光电二极管对于红绿蓝三种光识别程度不一致,对于系统定义的红绿蓝可能出厂设置不相同,造成输出的三原色不相同。所以开始工作识别前进行一步白平衡的调整,保证TCS230内每个光电二极管和滤光器识别出统一标准的白色,是由红绿蓝三种颜色等比例合成的。首先白平衡,设置定时器为一固定时间(例如10ms),然后通过改变引脚s2,s3的值来选择滤光器的类型,分别选择到红绿蓝三种滤光器的,在此期间,将计算tcs3200脉冲输出,数量和比例因子,其中脉冲量将通过比例因子转换为255。 在实际测试中,我们使用相同的时间对脉冲测量值
41、乘以比例因子进行计数,然后可以获得相应的颜色值。完成白平衡调整的TCS3200就能开始识别物体了,我们将TCS3200的使能端与stm32f103的I/O引脚输出口相连接,输出的比例控制端口s1,s2和滤光器类型的控制端口S2,S3分别连接到单片机的五个I/O输出引脚。OUT接到单片机的RCO端。在TCS3200和STM32F103之间接上一个小电阻,用来防止噪声的干扰提升信号之间通讯稳定性。在黑暗的封闭环境下,通过颜色传感器上自带的LED灯进行照射物体,物体反射的光线波形通过每一次三原色滤光器的分析,最终输出一个脉冲到单片机的RCO口,这样就完成了物体颜色的识别和信号的传输。颜色识别时要注意
42、不能有外界光线的照射,这样会使得白平衡调整时出现偏差,影响最终结果。最好把传感器放置在黑暗的环境下,不会产生反射光线的封闭空间中进行测试。 传感器没有特殊的光源要求,光源需要大部分集中在识别物体上,如果物体会反光可能会造成传感器内光电二极管的工作出错。 每当当使用TCS3200时,不论什么情况下,都需检查是否进行额白平衡调整,不然识别出来的结果与实际相差甚远。根据TCS3200结构组成和应用特点出发,配合STM32f103单片机可实现对垃圾的颜色识别,单片机根据颜色传感器的识别分析结果将垃圾分类到垃圾所属区域,这样的系统可大量节约成本,而且体积小又检测快。第五章 系统实现5.1智能分类垃圾桶的
43、流程我使用了CAD为我整个垃圾桶设计出一个大概的框架如图5.1.1, 第一步垃圾分类到一个分类区间舵机所完成的动作要事先确定好,这样方便单片机快速动作减少启动时间,分类区间设置成红、绿、蓝三个间隔,每个间隔不互通是为了不影响垃圾分类出错,分类区上有挡板,挡板是我们运输垃圾的通道,挡板连接着舵机的支架上,根据舵机的角度变换来运动。那么根据我们的垃圾桶整体设计, 设计出来的垃圾桶上方为识别区域,识别区在与舵机相接的挡板上,挡板下是三个分类区域,左边红色区域,中间绿色区域,右边蓝色区域。在这样的设计下,我们需要计算确定舵机将垃圾运送到每个区间所需要的角度和单片机输出到PWM脉冲宽度。确定如下:当识别
44、出为红色垃圾,需要两个舵机向左旋转大概45度,那么单片机同时向这两个舵机输出1.0ms宽度的脉冲。当识别出为绿色垃圾时,我们要让左边的舵机向右旋转45度,右边的舵机向左旋转45度,保证垃圾能准确落入中间的区域。当识别到时蓝色垃圾时,与红色垃圾不同的是需要将两个舵机向右旋转45度,使得垃圾落入右方的区域。我们根据这样的动作编写好程序,预先放入单片机的存储器中,这样到时候颜色传感器识别完垃圾时,直接可以调用这里的程序驱动舵机完成动作,垃圾掉入合适的分类区域。图5.2.1 CAD设计程序动作演示图5.2 系统电路图仿真使用protues进行电路的设计,并进行仿真,如图5.2.2:图5.2.2 pro
45、tues仿真电路图上图是我们小组根据硬件的特性,设计的电路图,因为protues内没有tcs3200的元器件,所以使用了ne555来进行模拟实验,它和tcs230一样,都是根据脉冲信号所触发工作的,所以我们使用ne555和电阻的配合形成一个pwm信号接收器进行电路的仿真。因为每种元器件的工作电压不相同,所以在仿真环境中我们分别配备了独立电源,tcs3200的输出端与单片机输出端链接,当单片机发出PWM脉冲信号时候,tcs3200首先进行白平衡调整,调整完毕之后,程序控制循环滤波器工作,实时采集不同颜色的波形,完成识别。识别完成反馈的信号使单片机再次发出PWM脉冲信号开始驱动舵机的工作。结合根据小组成员运用keil 5编写完成的程序(程序附在附录),智能分类垃圾桶各部分硬件配合如下,首先当有人丢弃进垃圾桶时,TCS230颜色识别传感器会立即进行白平衡的调整,然后单片