问题的提出
家用电磁炉的最大输入功率一般为2100W左右,因其耗能比较高,故设有散热风扇,以保证其内部电子元器件不能过热。散热风扇驱动电路一般由微控制器(MCU)控制。当电磁炉的启动信号送给MCU之后,由MCU进行逻辑控制,首先启动散热风扇,然后开始加热。当加热停止后MCU使散热风扇再延续工作一段时间,将机壳内的热量散掉。散热风扇停转后才能把电磁炉彻底断电。
实际使用中,比如烧开水,水烧开后按下电磁炉“开/关”键,电磁炉停止加热,主人取走开水,有时却忘记散热风扇停转后及时切断电磁炉电源,致使电磁炉长时间待机,空耗电能。
电磁炉散热风扇驱动电路基本原理
如图1所示为美的PSD16A型电磁炉的风扇驱动电路,图2为奔腾PC18E型电磁炉的风扇驱动电路。散热风扇一般采用直流12V或直流18V电动机。不同型号电磁炉的散热风扇驱动电路有所不同,但控制原理基本一致。
图1 美的PSD16A电磁炉风扇驱动电路
图2 奔腾PC18E电磁炉风扇驱动电路
电磁炉自动断电控制器工作原理
图3是笔者设计制作的电磁炉自动断电控制器电路原理图。该控制器既能手动控制电磁炉通、断电,也能在电磁炉停止加热且散热风扇停转3分钟后自动切断电磁炉电源。
图3 电磁炉自动断电控制器电路原理图
图中SB1是手动通电按钮,SB2是手动断电按钮。以单片机AT89C2051(IC1)、三极管VT1、中间继电器KA1、光电耦合器TLP521(U2)为核心的元器件实现电磁炉自动断电控制。光电耦合器U2用于检测电磁炉状态,其1脚经限流电阻R3接至散热风扇正极,2脚接至散热风扇负极,3脚接单片机P3.7口,4脚接控制器直流电源负极。电磁炉加热时,散热风扇运转,光电耦合器将单片机P3.7口拉低为低电平,表明电磁炉处于加热状态。散热风扇停转时,单片机P3.7口为高电平,表明电磁炉处于待机状态。发光二极管VD6为电磁炉待机指示灯,电磁炉待机时VD6闪烁,电磁炉加热时VD6熄灭。
该控制器基本工作原理如下。
按下通电按钮SB1,上电开机单片机P1.3口为高电平,中间继电器KA1常闭触点闭合,交流接触器KM1得电吸合并自锁,电磁炉及单片机控制系统得电。若不对电磁炉进行任何加热操作或加热结束散热风扇停转后,单片机P3.7口为高电平,表明电磁炉处于待机状态,单片机程序开启单片机内部总中断、T0中断并启动定时器T0计时,P1.7口控制发光二极管VD6闪烁。计时到约3分钟单片机P1.3口由上电开机时的高电平下跌为低电平,三极管VT1导通,中间继电器KA1线圈得电,交流接触器KM1线圈失电,电磁炉彻底断电。
散热风扇停转3分钟内可对电磁炉进行新的选择操作,若3分钟不够,可适当修改程序延长待机时间。
电磁炉加热时,散热风扇运转,单片机P3.7口为低电平,单片机程序关单片机内部中断并停止定时器T0计时,单片机P1.3口保持为高电平,三极管VT1截止,中间继电器KA1线圈不得电,交流接触器KM1保持得电自锁状态。单片机P1.7口控制发光二极管VD6熄灭。
按下断电按钮SB2可使电磁炉随时断电。
元器件选择与制作要点
家用电磁炉的最大输入功率一般为2100W左右,交流接触器额定电流最好大于10A,本例中选用CJX2—1210型交流接触器,其额定工作电流为12A,可满足一般电磁炉的工作要求。
电磁炉插座选用16A 250V型,主电路配线至少选1mm2以上国标铜芯线。
制作时虚线框内部分钎焊在图4所示电路板上,其中发光二极管VD6单独用电线引出。电路板尺寸为40mm×76mm。电路板左侧的插座J1用于连接降压变压器的9V二次绕组,无极性之分。插座J2用于并接电磁炉的散热风扇,电磁炉的散热风扇与其主电路板间一般也采用插接座连接,可在电磁炉散热风扇插座处引出不同颜色两条电线,以利区分正负极,散热风扇正极与J2插座的方形焊盘相连,散热风扇负极与J2插座的圆形焊盘相连。插座J3一端连接断电按钮SB2,另一端连接接触器线圈,无极性之分。
图4 电路板
电路板部分连同插座P1、交流接触器KM1、降压变压器T1一起封装在一320mm×80mm×100mm盒内。按钮SB1、SB2连同发光二极管VD6安装在盒体上,以便于操作与观察。
程序设计
该控制器控制功能简单,程序设计比较容易。主程序负责检测电磁炉状态,计时控制放在T0中断子程序中。
定时器T0计数初值的计算:本例中系统采用6MHz晶振,T0工作于方式1,理论上产生50ms定时计数初值应为"65536-25000",当50ms计数单元deda计到20时正好为1s,实际使用中因元器件误差及软件运行耗时等原因,经试验产生50ms定时计数初值取为"65536-25500"。
程序清单如下:
#include <AT89X51.H>
/*包含器件配置文件*/
#define uchar unsigned char
uchar min=0,sec=0;
/*分、秒单元置初值*/
uchar deda=0;
/*50ms计数单元清零*/
/*50ms定时中断服务子函数*/
void zd(void) interrupt 1
{
TH0=-(25500/256);
/*定时器T0赋初值*/
TL0=-(25500%256);
deda++; /*50ms计数*/
if(deda>=20){deda=0;sec++;}
/*秒计数*/
if(deda>10)P1_7=0;else P1_7=1;
/*VD6闪烁*/
if(sec>=60){sec=0;min++;}
/*分计数*/
if(min>=3)P1_3=0;else P1_3=1;
/*待机3分钟电磁炉断电*/
}
/*主函数*/
void main()
{
TMOD=0x01;
/*定时器T0初始化*/
TH0=-(25500/256);
TL0=-(25500%256);
while(1)
/*无限循环*/
{
if(P3_7==1){IE=0x82;TR0=1;}
/*散热风扇停转,开中断,启动T0计时*/
else{IE=0x00;TR0=0;
/*散热风扇运转,关中断,停止T0计时*/
sec=0;min=0;deda=0;
/*散热风扇运转期间计时单元清零*/
P1_7=1;
/*散热风扇运转期间VD6熄灭*/
}
}
}