1、浙江科技学院毕业设计(论文)红外遥控家用电器智能节电器的设计诸葛奕敏(自动化与电气工程学院 指导教师: 项新建)摘要:随着具有待机功能的家用电器的普及,其产生的功耗也成为家庭用电中的一大浪费。待机能耗是指机器在不使用的情况下,插头还接在插座上有电流通过产生的功耗。电视机,空调,饮水机,微波炉等家用电器都会产生待机能耗。因为家电的工作电流和待机电流相差很大,所以可以通过测量流过家用电器的电流判断电器的工作或待机状态。本课题利用STC单片机来判断并控制家用电器的工作或待机模式。在检测到待机信号时,单片机控制继电器开关,将电流切断,家电完全断电,消除了待机功耗,达到节能的目的。同时,单片机接收到红外
2、遥控信号后,闭合继电器,重新给其通电,就可开启电器。本文也论证了此研究的现实意义和实现方案。关键词:待机能耗;电流检测;红外线遥控;节能Abstract:With the popularity of electrical appliance with standby function, the standby power consumption becomes a big waste. Standby power is produced when the plugs still is connecting to the power sources when machine stops norm
3、al work. Television, air-conditioning, water-machine, microwave pot can cause such standby power. As there is big difference between standby current and working current, working or standby mode can be judged by measuring the current flowing through appliances. STC single chip microcomputer is applie
4、d here to judge and control the working or standby mode. When detecting standby signal, microcomputer gives structure to relay switch to cut off the current, then standby power is eliminated so as to realize energy saving. Single chip machine can also restart appliance after receiving infrared signa
5、ls. The significance and realization scheme are also discussed in this paper. Keywords:Standby power; electricity detection; infrared control; energy saving1 前 言进入二十一世纪,能源问题已经越来越成为全世界关注的热门问题。在我国能源问题也被提升到一个极重要的战略高度上,在这个大背景下,建设节约型社会已经成为了一种趋势应运而生。然而,还有某些能源的浪费没有引起人们足够的重视。比如待机能耗:是指机器在不使用的情况下,插头还接在插座上有电流通
6、过产生的功耗,这在我国还是一个比较新的概念。电视机,空调,饮水机,微波炉等家用电器都会产生待机能耗。对于许多人来说,并没意识到这些家用电器会产生这种不必要的电能的浪费。各国因待机而消耗的能量越占能耗总数的3%至13%,而我国的待机能耗高于平均水平。以上海为例,如按每户家庭待机能耗占其总用电量的10%,600万户家庭每户20瓦能耗计,一个家庭一年就要浪费175千瓦时的电量,全市仅待机耗电每年越8亿千瓦时。由此可见,待机能耗产生的浪费是惊人的6。实际上很多家用电器都是处在待机状态中。此时,机器没有任何的任务,但是却消耗了电能。这完全是一种不必要的浪费。就拿微波炉来说,在没有加热食物时,就处于待机状
7、态,只有一个数字时钟在耗电。可是,将加热食物时的耗电量与数字时钟的耗电量相比较,还是后者大。听起来十分讽刺,但却是事实。很多人都没有意识到这些机器的没有实现主要功能的时候在耗电。再比如空调,可以说是待机功耗很大的家用电器。尽管意识到这个问题,人们还是不愿意频繁插拔插头来减少看似微小的用电量。所以依靠人们自愿在不使用家用电器时将插头拔出,肯定是不现实的。所以研究一种智能产品来代替人们切断待机电流以降低这种不必要的浪费非常必要。90年代,美国的科学家们开始研究待机功耗。结果发现在发达国家,待机功耗平均占有整个居民或家庭用电的10%左右。于是,他们开始着手研究一些可以降低待机能耗的电源,目标是将待机
8、功耗降到1瓦特以下。许多国家已经采用这样的一些非强制性标准。澳大利亚还使用了强制法规使用待机功耗在1瓦特之内的设备。在美国加州出售待机功耗3瓦特以上的电力设备是违法的3。说到此,我们还应该关注到贸易出口的问题。很多国家都已经明确规定待机功耗超标的电气设备是不能出口的。而我国的家电,如电视就远远不能满足国外的节能标准。这样,很多产品就面临不能出口到国外的局面。这对与我国的电子行业也是一个很大的打击。就在2005年,向来以价格战的中国电视机第一次面临国外品牌挑起的价格战而无力应战的尴尬局面;同时高能耗产品正面临严重的国内外市场壁垒。高于9瓦的电视机在2006年被强制撤市。然而这种政府的强制规定也引
9、起了电子研究或生产商的反对,认为这样的举动会限制电子设计方面的创新。认为这种规则应该是行业导向而非政府行为的。但是,由于待机能耗的确是一个不容忽视的能源浪费,在能源紧缺的形势下,每个人都不能坐视不理。所以采用一种对家电本身设计没有太高要求的方案应该能起到两全齐美的作用。这种智能节电器应该是简单易于操作,成本低,并且独立于家电设备。这样既能达到节能的要求,也不影响家电的正常功能。本课题旨在研究出一种可以切断待机电流的智能节电器,避免家电长期处于待机状态,消耗不必要的电能。采用的方案就是通过流过家电的电流大小来判断家电的工作或待机状态。尽管各种家电的型号功能不同,但是待机电流都明显小于正常工作电流
10、。所以就可以利用电流检测装置,如电流互感器等检测家用电器的电流大小,将电流信号输入单片机,利用单片机判断待机或工作模式。当判断出家电处于待机模式下,智能节电器将延时一段时间,再重新判断确定是否处于待机状态,如果仍处于待机状态,单片机就给继电器指令自动切断电器电流。这时,电器已经处于完全断电的状态中。而只有微弱的电流通过此节电器,这样,就可以明显降低待机能耗。当然,家电被切断了电流,使用时还要开启。由于电器完全断电,以致家用电器接收红外遥控信号的接收器也无法工作。那么就应该通过控制节能器来给电器通电。因此,必须要给智能节电器安装红外线接收头。经过解调的信号进入单片机。单片机再对其解码,再将闭合信
11、号给继电器。继电器闭合,家电重新通电。这样,就能使用原有的家用电器的遥控器来控制节能设备,开启家用电器。简便易操作。在家电进入待机状态1分钟之后,就会彻底退出待机模式,而完全断电。这时,整个系统只有智能节电器在消耗的电能。消耗的电能要远远小于待机能耗,这样才具有节能的意义。由于家用电器几乎采用红外遥控,所以遥控方式选择红外遥控。此外,要了解各种家用,如电视,空调,音箱,饮水机等电器的待机电流大小,从而以最大的待机电流作为判断待机模式与否的依据。 总而言之,智能节电器具有自动功能,遥控功能,低能耗的特点,不需要改变家电的电路结构,不需要改变遥控器的电路结构,不改变用户的操作方式。待机时芯片采用机
12、械继电器切断家电的交流线路,启动时能用遥控器操作。相当于一个独立的控制电源的设备。简便易行,成本极低。2 系统硬件设计2.1 系统总体结构电 源智能节电器家用电器红外遥控 器图2.1红外遥控家用电器智能节电器系统总体结构图图2.1为红外遥控家用电器智能节电器的整个工作系统。电源经过智能节电器与家用电器相联。对于电源,智能节电器相当于用电体,本身带有插头与电源相连;而对于家用电器,它又相当于普通插座,带有插孔,家用电器的插头就长期插于此接口中。当家用电器处于正常工作状态时,智能节电器就相当于一根导线,电流顺畅流入家用电器;当家用电器处于待机模式时,节电器中的继电器断开,就起到切断电源的作用。 这
13、时,没有任何电流流过家用电器。当家用电器从电源断开后,需要时我们还要重新开启。智能节电器也带有红外线接收头,并有解码功能程序,但是在此系统中,红外线解码功能并不是必须的。因为系统接收到红外信号就可以开启电器,而不必区别是那种红外信号。所以,可以通过判断是否出现高低电平来确定红外信号的到来。2.2 系统硬件结构继电器家用电器红外线遥控器检测电流装置红外线接收头HS0038STC12C5410AD单片机图2.2 红外遥控家用电器智能节电器硬件结构图如图2.2所示,整个系统由5部分组成。STC12C5410控制芯片作为微控制器。电流检测装置采用电流互感器做检测元件,经过整流进入单片机。由于STC12
14、C5410单片机本身带有模数转换功能,在单片机内部就可以A/D转换成数字量,所以无需在外部再添加A/D转换芯片,如ADC0809。红外线遥控器是家用电器本来就带有的,所以不在本系统的设计之内。红外线接收头选用HS0038。HS0038不仅能完成对红外信号的接收,还具有解调功能,经解调的信号可以直接进入单片机解码。单片机得到待机电流信号并进行一段时间的延时判断确认,控制继电器使其断开,这样流过家电的待机电流就被完全切除了。当单片机输入红外线信号时,就给继电器动作信号,重新闭合,使家电通电。家用电器又恢复到正常工作状态。2.3 交流电流检测模块系统设计的核心就是根据电流的大小来判断家用电器的待机模
15、式。所以交流电流的检测是设计中的重要部分。各种不同型号、不同品牌的家用电器的待机电流都是不一样的。但是有一个相同点,就是明显小于家电正常工作时的电流。所以完全可以通过电流的大小来判断家电的工作或待机状态。2.3.1检测方案论证检测电流的方法有串联电阻检测法,霍尔元件和CT法。(1) 串联电阻检测电流法: 简单,精确,成本低。但是缺点是,如果检测电阻上通过的电流较大,那么在产生的能耗就很大。而且,此法输出信号小,需另加放大器。(2) 霍尔元件:简单,但是成本高。(3) CT法就是利用电流互感器:电流互感器检测电流在保持良好波形的同时还具有较宽的带宽,电流互感器还提供了电气隔离,并且检测电流小损耗
16、也小。考虑到电流互感器产生的损耗小,成本低,还能够反映主电路中的电流,并能将控制电路与主电路隔离,从而提高安全性,降低干扰选择其测量通过家用电器的电流7。2.3.2电流互感器原理电流互感器的构造是由铁芯、一次绕组、二次绕组、接线端子及绝缘支撑物等组成。其一次绕组的匝数较少,串接在需要测量电流的线路中,流过较大的被测电流,二次绕组的匝数较多,串接在测量仪表或继电保护回路里5。它的工作原理和变压器相似。电流互感器的特点是: (1)一次线圈串联在电路中,并且匝数很少,因此,一次线圈中的电流完全取决于被测电路的负荷电流而与二次电流无关;(2)电流互感器二次线圈所接仪表和继电器的电流线圈阻抗都很小,所以
17、正常情况下,电流互感器在近于短路状态下运行。电流互感器的二次回路不允许开路。它在工作时,二次回路始终是闭合,接近短路状态,一次电流所产生的磁化力大部分被二次电流所补偿,总磁通密度不大,二次绕组电势也不大。当电流互感器开路时,二次回路阻抗无限大,电流等于零,一次电流完全变成励磁电流,在二次绕组产生很高的电势,威胁人身安全,造成仪表、保护装置、互感器二次绝缘损坏。电流互感器的二次回路必须接地,以防止一次绝缘击穿,二次串入高压,损坏设备。电流互感器将整个瞬态电流,包括直流分量耦合到副边的检测电阻上进行测量。一、二次额定电流之比,称为电流互感器的额定互感比:kn=I1n/I2n 因为一次线圈额定电流I
18、1n己标准化,二次线圈额定电流I2n统一为5(1或0.5)安,所以电流互感器额定互感比亦已标准化。kn还可以近似地表示为互感器一、二次线圈的匝数比,即knkN=N1/N2式中N1、N2为一、二线圈的匝数。由于各种家电的待机电流及各种品牌的家电待机电流都不一样,现将主要具有待机功能的家电待机平均电流及待机功耗列出,如下表所示:在编写中断程序时,在这些家用电器当中选出待机电流最大的作为判断待机模式的依据产品平均待机功耗(W)平均待机电流(mA)空调3.0416电视机8.0736微波炉2.7812DVD13.3761VCD10.9750功放12.3556打印机9.0841表2.12.3.3电流互感器
19、选择电流互感器的选用要考虑到多项数据:家用电器的正常工作电流,启动电流,待机电流,单片机的分辨率以及单片机所能承受的电压。以空调为例,2匹空调正常工作电流在6.8A左右,而三匹空调的正常工作电流在10A左右,而启动电流则会达到0正常工作电流的6到8倍。根据下表的线性参数可得,三匹空调的输出电压会超过5V,这样大的电压是不能进入单片机的。所以应在二次侧接入稳压二极管,当电压大于5V时候,就无法进入单片机,以免损坏单片机。电流互感器还应该感应到几十毫安的电流。考虑到以上要求系统选用RSCL-06电流互感器(RSCL-06 current mutual-inductor)一、用途: 用于变频空调等家
20、用电器电流采样。(用户专用器件)二、技术参数:a)输出特性:一次电流(A)2.557.51012.515输出电压(V)1.593.184.776.367.959.4表2.2测试条件:一次电流:正弦波(畸变小于1%)50Hz(1%)测量用仪器输入阻抗:10Mb) 互换精度:3%c) 环境温度:15+75d) 绝缘电阻大于100 M 500VDC (中线与绕组间)e) 耐压大于1KVAC/1分钟 (中线与绕组间)如以60mA为判断待机电流的标准,那么二次侧的电压输出将会是32.5mV。在单片机中,分辨率是2的十次方,也就是1024。5V/1024=5mV。2.5mV-7.5mV可以作为1输出。以此
21、类推,那么60mA经过A/D转换将是8,用二进制表示即00001000。小于此值,都可认为是待机电流。 2.3 STC12C5410AD单片机STC12C5410AD系列单片机是单时钟/机器周期(1T),高速/低功耗/超强干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成MAX810专用复位电路。4路PWM,8路高速10位A/D转换。工作电压在5.5V 3.8V(5V单片机)工作频率范围在0 35 MHz。片上集成512字节RAM。通用I/O口。外部中断2路,下降沿中断或低电平触发中断。一共2个16位定时器/计数器。A/D转换,10位精度ADC,共8路。通用
22、全双工异步串行口。本系统选用此单片机主要是由于其带有的A/D转换功能。这样可以免去附加的A/D转换芯片,从而简化外部电路,并且可以节约成本。下图为STC12C5410AD(有A/D转换),20Pin的管脚图: 图2.3 STC12C5410AD(有A/D转换),20Pin的管脚图 2.3.1主要功能介绍在本系统中,此单片机主要完成四个功能:1) 判断家电的待机模式与工作模式:当电流互感器检测到待机电流,经过放大器转变成较大的电压信号。信号经过I/O口进入单片机。单片机首先对信号进行模数转换,经程序判断为待机电流时,并不是马上给继电器指令,打开继电器,使家电断电,而是启动延时程序,计时1分钟之后
23、再重新判断是否还是待机电流,如确定流过家电的是待机电流,则给继电器断开信号。这样家电就完全断电,退出待机模式。如果1分钟后流过家电的非待机电流,而是正常工作电流,单片机将不执行任何任务。2) 接收红外信号,开启家电:当家电被完全切断电流,就要解决重新开启的问题。这同样可以用红外遥控来实现。当一体化红外接收头接收到红外遥控的开启信号时,将此信号传给INT0。单片机由此接到红外解调信号,进行解码。解码完毕,可以通过给I/O口P3.5相应的高低电平信号,从而可以控制晶体管的导通状态,从而控制继电器触点。3) 延时功能:在家用电器工作时,单片机接收到待机电流信号的时候,不能立即给继电器动作指令。而是应
24、该延时1分钟之后再重新判断家电还是否待机。若仍为待机信号,则确定家电已处于待机模式,那么就给继电器断开指令,切除待机电流。家电才完全断电。延时通过一个循环子程序来实现。4) 一般的51单片机不具有模数转换功能,而STC12C5410具有此功能。电流信号经过整流,放大,转化成电流信号后可以进入单片机P1口。单片机在内部可以进行模数转换。再对转换后的数字量进行处理,产生相应的控制信号。在此将A/D转换作一简单说明。在微机检测和控制系统中,很多被测量往往是模拟量。它们经过预处理(放大,I/V转换等)进入计算机之前必须经过A/D转换变成数字量。2.3.2 STC12C5410AD单片机的A/D转换A/
25、D转换的功能是把模拟量的电压转换为N位数字量电压。输入A/D转换器的模拟量电压是连续的。由于A/D转换器完成一次性转换需要一定时间,所以模数转换只能间断地进行,因此输出的数字量电压是不连续的。称为离散量。每个数字量都与每个采样时刻的模拟量相对应。相邻两个采样的时间间隔称为采样周期。为了使输出量能充分反应输入量的变化情况,采样周期要根据输入量变化的快慢来决定。显然,一次A/D转换所需要的时间必须小于采样周期。将模拟量转换为数字量的过程称为量化。数字量的最低位是最小有效数位1LSB。与此相对应的模拟电压称为一个量化单位,如果模拟电压小于此值,不能转换为相应的数字量。LSB表示A/D的分辨能力。ST
26、C12C5410AD系列带A/D转换的转换口在P1口(P1.7P1.0),有8路10位高速的A/D转换器,上电复位后P1口为弱上拉型I/O口,可以将8路中的任何一路作为A/D转换,不需作为A/D使用的口继续作为I/O口使用。作为A/D使用的口需要先将其设置为开漏模式或高阻输入,在P1MO和P1M1寄存器中对相应的位进行设置。在这里,将P1MO、P1M1设置为开漏。P1M0【7:0】地址:91hP1M0【7:0】地址:92hI/O口模式(P1.x 如做A/D使用,需将其设置成开漏或高阻输入00准双向口(传统8051 I/O口模式)01推挽输出(强上拉输出,可达20mA,尽量少用)10仅为输入(高
27、阻),如果该I/O口需作为A/D使用,可选此模式11开漏(open drain),如果该I/O口需作为A/D使用,可选此模式表2.3ADC_CONTR特殊功能寄存器: A/D转换控制特殊功能寄存器A/D转换控制寄存器ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHSO0XX0,0000表2.4CHS2CHS1CHS0模拟通道输入选择000选择P1.0作为A/D输入来使用001选择P1.1作为A/D输入来使用010选择P1.2作为A/D输入来使用011选择P1.3作为A/D输入来使用100选择P1.4作为A/D输入来使用101选择P1.5作为A/D
28、输入来使用110选择P1.6作为A/D输入来使用111选择P1.7作为A/D输入来使用表2.5在本系统中,选择P1.1作为A/D转换口。ADC_START: 模数转换器转换启动控制位。设置为“1”时,开始转换,转换结束后为0.ADC_FLAG: 模数转换器结束标志位。当A/D转换完成后,ADC_FLAG=1,要由软件清零。 不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志为A/D转换是否结束,当A/D转换完成后,ADC_FLAG=1,一定要软件清零。ADC_POWER: ADC电源控制位。0: 关闭ADC电源;1:打开A/D转换器电源。如果软件设置进入空闲模式,ADC电源会自动关
29、闭。启动A/D转换前要确认AD电源已经打开,AD转换结束后关闭AD电源可降低功耗,也可以不关闭。初次打开AD转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换。参考电源是输入工作电压Vcc,所以一般不用外接参考电压源。2.4 红外信号接收电路2.4.1 红外遥控简述红外遥控器使用发光二极管发出红外遥控信号,接收机用光电二极管而实现遥控。为防止阳光及日光灯的干扰,发光二极管发射的红外线采用先进红外线,同时红外接收器在光电二极管的前面加滤光器。另外为了能在较宽的范围内准确地实现遥控,红外遥控器采用两只间隔一定距离的发光二极管,形成面发射形式。为提高遥控灵敏度,增加遥控距离,要求红外线
30、接收器应有足够的放大量和动态范围。为进一步实现遥控的准确行,减少干扰造成的误动作,红外遥控信号还采用了较复杂的遥控信号及遥控方式。在发送端用数字信号进行二次调节,接收端通过微处理机进行解码实现遥控,从而使遥控器的准确行及抗干扰能力得到提高。具有体积小,功耗低,成本低且不影响周围环境,不干扰其它电器设备的特点。2.4.2 红外遥控系统组成红外遥控系统主要由遥控发射器、一体化红外接收头、单片机、接口电路组成。遥控器用来产生遥控编码,驱动红外发射管输出红外遥控信号,遥控接收头完成遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,对于一般的红外遥控系统,此串行码输入到微控
31、制器,由其内部CPU完成对遥控指令解码,并执行相应的遥控功能。使用遥控器作为控制系统的输入,需要解决如下几个关键问题:如何接收红外遥控信号;如何识别红外遥控信号以及解码软件的设计、控制程序的设计。2.4.3 红外信号发送原理尽管本系统不需要另外设计红外线发射器(使用家电原配的遥控器实现发射功能),然而考虑到红外接收及解码,仍需对红外信号发送原理作一简单说明。红外遥控信号不是用高电平或低电平来表示“1”或“0”的,而是通过脉宽来表示的,对于二进制信号“0”,一个脉冲占1.2ms;对于二进制信号“1”,一个脉冲占2.4ms,而每一脉冲内低电平均为0.6ms。红外线发送端将待发送的二进制信号编码调制
32、为一系列的脉冲串信号,通过红外发射管发射红外信号。信号的发射器一般由指令键、指令编码电路、调制电路、驱动电路、发射电路等几部分组成1。如图2.4所示,当按下时,指令编码电路产生相应的指令编码信号,编码指令信号对载体进行调制,再由驱动电路进行功率放大之后由发射电路向外发射经过调制的指令编码信号。指令键发射电路编码电路调制电路驱动电路 图2.4 红外信号发射示意图 红外编码体制规律是这样的:一次按键动作的遥控编码信息包含一引导脉冲和32 位串行二进制码。前16 位码为用户码,不随按键的不同而变化。它是为了表示特定用户而设置的一个辨识标志,以区别不同机种和不同用户发射的遥控信号,防止误操作。后16位
33、码随着按键的不同而改变,是按键的识别码。前8位为键码的正码,后8位为键码的反码。图2.5为红外线编码发送的过程说明:图2.5 红外编码发送示意图2.4.4 红外信号接收与解码1)红外信号的接收:对红外线的接收就是将红外光转换成TTL信号的过程。用来接收红外信号的也是一种二极管,同可见光光敏二极管相比,其特点就是对红外信号敏感,当它们处在反向偏置状态时,反向电流随着受到的红外信号强度的增强而上升.最近几年大多使用一体化红外接收头.一体化红外接收头的封装大致有两种:一种采用金属屏蔽;一种是塑料封装.均只有3只引脚,即电源正(VDD),电源负(GND)和数据输出(VO或OUT),不过每种封装又分大小
34、.一体化红外接收头的优点是不需要复杂的调试和外壳屏蔽,使用起来如同一只晶体管,非常方便,但在使用时注意成品红外接收头的载波频率.红外遥控最常用的载波频率为38KHZ,这是由于发射端使用的455KHZ晶振所决定的,一体化红外接收头由于不可以调整,所以能够接收的频率是固定的,增益的调整也不再通过外部电路实现,而是在内部使用了增益自动控制(AGC)电路.它同时对信号进行放大、检波、整形,得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象。本系统采用HS0038红外线接收头,如图2.5它可以完成对红外线信号的解调。频率为38kHZ,周期约为26微秒。HS0038 的外部结构如
35、图2.6所示,1 脚GND 接电源地,2 脚VCC 接+ 5V ,3 脚OUT 为数据输出端(TTL电平,反相输出) ,可直接与单片机相联。图2.6 HS00382)红外信号的解码:几乎所有遥控器的输出都是用编码后的串行数据对38kHZ到40kHZ的方波进行脉冲幅度调制而产生的。如果直接对已调波进行测量,由于单片机的指令周期是微秒级,而已调波的宽度只有20微秒,会产生很大的误差。因此要现对已调波进行解调,对解调后的波形进行测量。下图是HS0038对红外线信号的一个解调过程。红外遥控发射器将经调制过的信号以上图C波形式发送,经过HS0038解调,输出波形E。接下来,二进制信号的解码由接收单片机来
36、完成,它把红外接收头送来的二进制编码波形(图2.7中波形E) 通过解码还原出发送端发送的数据。 图2.7 红外接收头解调波形图2.5 开关继电器本系统中采用开关继电器作为控制家用电器电流的器件。在微机控制系统中,微机要通过一定的通道输入/输出各种控制信号,使被控制装置实现所要求的操作,而对开关量的控制得到了大量应用。这些开关量一般经过微机的I/O口输出,而I/O口的驱动能力有限,一般不足以驱动一些电磁执行器件。如继电器,需要加接驱动接口电路。可以运用晶体管。由于晶体管的放大作用,其输入电流一般只有输出电流的几十分之一。采用晶体管驱动,电路简单,所用晶体管按需要的功率来选定。晶体管是用来导通继电
37、器的(因为单片机无法直接驱动继电器)。由单片机I/O口先提供基极信号,接到继电器的控制模块上。当单片机接到红外信号的时候,给I/O低电平信号,此时,晶体管导通,继电器通电,控制触点,开关闭合。当单片机接收到待机电流信号,I/O口输出高电平,晶体管截止,继电器断电,开关打开。这样,就完成了对开关的控制。开关电路如下图所示: 图2.8 继电器开关电路根据以上要求,设计出系统的总体电路图图2.9 系统硬件电路图3 系统软件程序设计系统编程采用模块化设计。以主程序为核心设计了多功能模块子程序,使大量的功能在子程序中实现,简化了设计结构。运行过程中主程序调用多功能模块子程序,流程图如下图所示。初始化用来
38、设定系统的I/O口,定时器以及初始化数据。软件主要完成三个功能模块:待机模式判断程序,延时程序和红外接收解码程序。下图为单片机电流检测的程序流程图:工作流程包括以下3个部分:系统初始化,人工延时状态,稳定在节电状态。检测装置测到家电的电流信号电流仍小于待机60mA?断开继电器家电完全断电,节电状态延时1分钟继电器不动作家电继续正常工作YN系统初始化电流小于60mA?YN图3.1 电流检测程序流程图下图为单片机接收到红外线开启信号的程序流程图:接收红外信号,进入中断对红外信号解码继电器闭合重新开启家电中 断 返 回图3.2 红外线接收程序流程图 当智能节电器需要退出节电状态,即重新给家电通电时,
39、需要用红外遥控器来开启。当单片机从中断口INT0接收到红外信号时,给P3.5口低电平信号。此后,晶体管导通,继电器通电,触点闭合。重新给家电通电。由于单片机在接收到红外信号只执行这一个功能。所以,在正常使用家电情况下,是不用担心红外遥控正常功能与此产生冲突。3.1 系统初始化系统初始化用来设置一些I/O口,初始化数据。#include #include #define ADC_CONT BYTE0x0C5#define ADC_DATA BYTE0x0C6#define P1M0 BYTE91H#define P1M1 BYTE92H#define uchar unsigned char#de
40、fine TMP_CURRENT_VALUE 80H /P11电流互感器中间值#define STOP_CONTRAL_CODE 00Hsbit relay_swich=P35;/继电器开关sbit ir_receive=P32;uchar ADC_10_ON 0E0Hchar decode_error=03.2延时程序由于在本系统中,对于延时的精度要求并不高,所以延时程序通过执行若干条指令来完成。本系统要求延时1分钟,也就是60,000ms.在使用12MHZ晶振时,单片机执行一条指令的时间是1us。所以,需要执行60,000,000条指令。采用循环嵌套,可以实现一分钟的循环。void del
41、ay(char time)/分延时char i,j,k;while(time-) for(i=1000;i=0;i-) for(j=1000;i=0;i-) for(k=60;i=0;i-);void delayms(char time)/分延时while(time-) ;void interrupt0() interrupt0 / 使用中断0 relay_swich1;/*/3.3 A/D转换及电流检测void ADC_INIT(void)ADC_CONT=ADC_CONT | 80H; /ADC打开内部模拟电源delayms(200)P1M0=P1M0 | 07H;/设置端口为开漏P1M1
42、=P1M1 | 07H;/设置端口为普通模式void SET_NORMAL_IO(void)P1M0=0;P1M1=0;/设置端口为A/D转换通道void ADC_SET_CHANNEL(uchar ADC_P1x_ON)ADC_CONT=ADC_P1x_ON;delay(100);uchar ADC_GET_RESULT(void)uchar result;ADC_DATA=0;/结果寄存器清零ADC_CONT=08H;/启动for( !(ADC_CONT & 10H) );ADC_CONT=ADC_CONT & E7H /清零ADC_FLAG,ADC_START,停止A/D转换result
43、=ADC_DATA;return result;/*1.检测电流*/如果返回0,则表示电器处于待机状态char Get_current_value(void)uchar tmp;ADC_SET_CHANNEL(char ADC_10_ON);tmp=ADC_GET_RESULT();if(tmpTMP_CURRENT_VALUE) return 0;reture -1;3.4红外解码程序下面以SH5104为例分析一下解码的思路:红外线发送是采用脉宽调制编码方式,很明显的一点是“0”与“1”的高低电平宽度是不一样的,如下图所示:图3.3 逻辑“0”与逻辑“1”对逻辑“0”而言,高电平时间为422
44、us,低电平时间为1266us,对逻辑“1”则是低电平时间为422us,高电平时间为1266us,但要注意的是接收到的信号是发射信号的反相电平。现在只要知道高低电平的时间就可以判断出是“0”还是“1”,所以我决定采用定时器计数的方式来测量时间,因为在12MHZ晶振的时候,定时器加1就是1us,SH5104帧与帧之间有4位的间隔,即6.75ms,也就是说在大概7ms内没有信号收到就表示当前的数据帧已经接收完毕。流程图如下: 图3.4 红外线解码流程图/*2.红外线解码*/unsigned char SH5104_read_code_8(void)unsigned char temp=0;unsi
45、gned char i;TH10;TL1=0;TR1=1;for(i=0;i1;while(ir_receive=0); /等待高电平测试结束TR1=0; /高电平测试结束high_level_time=TH1*256+TL1; /保存测试结果TH10;TL1=0;TR1=1; /启动对低电平的测试while(ir_receive=1)if(TH10x1e)decode_error=1;return -1; /若超过6.75ms则出错返回TR1=0; /低电平测试结束low_level_time=TH1*256+TL1; /保存低电平数据TH1=0;TL1=0;TR1=1;if(high_level_time1300|high_level_time1300|high_level_time400)decode_error=1;return -1; /如果电平长度在不合理范围内,则认为出错if(high_level_time400) temp=tem