微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 简单稳定地感应你——红外感应开关的创新制作

简单稳定地感应你——红外感应开关的创新制作

时间:02-21 来源:互联网 点击:


哈哈,看过原理之后,心中暗自生起了一团烈火。然后以70km/h的速度(坐车)奔向电子市场。备齐了元器件,照着原理图制作出了实物。不得不佩服我当时的焊接水平,用了一片小小的洞洞板,把电路制作得小巧、紧凑。不过接上电源之后,问题就来了,当我把手放在感应区域时,指示灯并没有亮。后来发现,这是发射频率和接收频率不匹配导致的,因为采用的是RC电路产生频率,简单地说就是靠电容的充放电周期产生频率,所以频率很容易随温度变化而变化。电路的调试花了我许多时间,在没有示波器的帮助下,光靠反复修改电阻值和电容值的测试来达到成功是多么困难的事情呀!当同学把手放在感应区,指示灯亮起的那一刻,所有调试的困苦都转化为成就感,在同学们赞叹的话语中成几何性倍增了。
像电影一样,故事到了高潮,接下来的每一步都是坠落。同学们只看到了光彩的一面,背地里它悄悄出现的问题,都成为我们私下独处时的伤痛。在一个阳光明媚的下午,强光照进室内,感应开关受强光的影响而处在不稳定的状态,它不断地自行开关,而且对反射物体没有反应。家里常用的电视机红外线遥控器也会让感应开关失灵。即使把它放在阴暗的角落也会出现一个讨厌的问题,即当反射物就会不断地开关,继电器的吸合很快,好像一台电报机。这是因为反射物体正好处在了感应区的临界点上,也就是“感应到”和“感应不到”的分界线上,物体微微靠近或离开就会产生开关状态的改变。没有人会希望自己家的电灯像闪电、水龙头像音乐喷泉吧。这些问题加在一起,让感应开关的应用很不理想,辛辛苦苦把家里所有的电灯开关都改装成感应的,不到一个月又被爸爸改回了传统开关。慢慢的,对感应开关的兴趣就被音控开关、延时开关的制作热情所取代。几星期后,我和红外线感应开关彻底分手了。
从那之后的某一天,我开始学习单片机。几个月前我对单片机内置的模数转换器(ADC)产生了兴趣,不断地探索它的妙用,DIS.MUSIC3炫彩音乐显示器就是利用ADC来采集音频信号的。突然有一天,我想,利用带有ADC功能的单片机可不可以取代传统的数字电路,而让红外线感应开关变得更稳定呢?在网上搜索了半天,没有找到基于单片机的红外线传感器的制作。这个情况对我来说亦好亦坏,好的是如果制作成功,这将又会是我的一项创新制作;坏的是我没有任何可以参考的资料,甚至都不能保证我的想法是否可行。我学习单片机的过程好像是一条正弦波,从基础开始学习,然后开发应用程序,再后来独立完成创新制作,到最后又回到了基础技术问题的研究。接下来的日子里,我做得最多的事是研究红外线的知识。做了N多次实验,用不同的红外线发光源来做研究,找到它们的特性和区别。之后开始研究电路制作简单、同时又具备高稳定性的红外感应开关。研究到最后,我自己都惊讶了,原来硬件电路可以如此简单,简单到没有任何多余的元器件——单片机、红外反射传感器、LED指示灯和电源。在之前的版本里,硬件电路上还需要加一条导线,但是后来我修改了程序算法,这条导线便光荣下岗了。
是的,程序算法——一种杀人于无形的利器。如果人类和动物的区别是人类具有理性和智慧的话,那么单片机与数模电路的区别就是单片机具有程序控制。单片机程序精确地处理着时间和状态,软件的强大把硬件成本降到最低,并可以零成本复制。我热爱编程,它给了我无穷的乐趣和超乎想象的创新可能。如果我是即将毕业的大学生,我会把这个创新制作写成论文,让导师喜笑颜开;如果我是专注科普的《无线电》杂志的作者,我就只能用微小的篇章简单地说一说这款制作的基本原理了。但在此之前,先让我们趁着热情未减,亲手制作一下这款基于单片机的红外感应开关,体验它的精巧构思,检验它的抗干扰能力吧。
我是在面包板上搭建的电路,电源采用的是3节5号电池所组成的4.5V直流电源。因为电路非常简单,我还特意为了面包板上的接插布局而定义了IO接口。所以我们连导线都不需要,只要把单片机、红外反射传感器和LED指示灯插在指定的孔洞里就行了。值得注意的问题有:单片机需要使用带有ADC功能的STC12C2052AD系列;烧写程序时,选择使用内部RC振荡器;红外反射传感器没有特定的型号,我使用的是RPR220,你也可以使用其他型号的产品。
在面包板搭建的实验电路上测试,有没有感觉到它的精简和稳定呢?把LED指示灯接在P1.7接口上时,它是无锁存的感应开关,即有反射物体时LED灯亮,物体离开就熄灭,适用于感应式水龙灯。把LED指示灯接在P1.6接口上时,它
是锁存感应开关,即感应开关触发1次LED灯亮,2次触发时LED灯灭,适用于感应式电灯开关。如果把LED指示灯改换成继电器,就可以用来控制其他电器了。电器可以是任何你想得到的东西,相信你和我一样,早就有过这样的梦想。现在是实现它的时候了。
除了实用的开关改装计划,红外感应开关还可以把家居生活变成科幻电影。一张可以感应你的桌子会不会震惊四座呢?普通桌子的上表面嵌着一块磨砂玻璃板,当桌面空空的时候,桌子没有什么特别。可是当我们把手、杯子或报纸放在上面时,相应的位置就会发出光来。原来,玻璃下面安装了数百个LED灯和感应装置,只要桌子感应到有东西放在上面,就会让单片机控制对应位置的LED灯点亮。变换单片机的程序还可以玩出更多的花样呢。
如果用我的这款红外感应开关是不是也可以实现这部科幻作品呢?在撰写本文的时候,我也同时在研究这项技术,希望可以用我们常用的单片机来实现,如果真能实现,我再另写文章与各位分享。那桌子、那感应式电灯都将成为你的作品、你的精心之作。

关键问题与解决之道


从年少时厕所里红外感应开关初体验,到传统电路制作的原理及问题,再到用单片机实现更稳定的感应开关设计,直至感应开关在电器开关和感应桌面上的应用。红外感应开关已经逐渐从厕所走向了客厅,从复杂走向了精简,从波动走向了稳定。那么有谁想知道单片机是怎么做到稳定感应的呢?其中的奥秘又是什么呢?这里就把一些技术实现的基本原理与诸位分享。如果你有更好的方案和改进意见,或者你是这方面资深的专家,欢迎各路英豪与我交流。闲话少说,小弟这里献丑了哈!

1.如何去除环境光的干扰?

与之前的调制解调的方式不同,在使用ADC功能之后,另一种解决方案会让测试更有效率。那就是使用双重检测方法。前提条件是,单片机可以控制红外发光二极管的开关。首先,要使用ADC功能读出接在ADC接口上电压的模拟量,数值从0到255(十进制)。红外光敏二极管接收的红外光线强时,ADC读出的数值就大,反之就小。我们要做的就是,控制红外发光二极管在发光时读一次ADC的数值,然后再让红外发光二极管熄灭,再读一次ADC的数值。我们先假设没有其他红外光源的干扰,当红外发光二极管熄灭时,红外光敏二极管应该检测不到光源,ADC读出的数值也应该为0;当红外发光二极管点亮,且没有反射物体时,ADC读出的值也应该很小,接近于为0;当有反射物体时,红外光敏二极管检测到光源,ADC读出的数值会变大。如果存在其他光源的干扰,那么当红外发光二极管熄灭时,也会读到较大的数值。双重检测读出的数值的差距越大,表示干扰光源越弱,反之则越强。我们通过这种双重检测,就可以判断接收到的红外光是不是发射端发出来的了,两次检测的数值之差就是我们需要的最终数值。最终数值将参与下面的算法处理,也是我们判断和处理的关键数据。单片机需要控制红外发光二极管高速开关,以便更快地采集数据。

最终数值=红外发光二极管点亮时ADC读出的数值-红外发光二极管熄灭时ADC读出的数值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top