单相用电器分析监测装置.docx
《单相用电器分析监测装置.docx》由会员分享,可在线阅读,更多相关《单相用电器分析监测装置.docx(14页珍藏版)》请在冰点文库上搜索。
单相用电器分析监测装置
单相用电器分析监测装置
段鉴哲
摘要
用互感器检测电流,以adc0809进行数模转换,用单片机计算处理,用1602实现结果输出。
本设计用于测试并储存各单件电路在各种状态下用于识别电器并显示出用电器的工作状态。
电路中有用电器工作时,互感器产生互感电压经过整流降压之后将数字信号转入ADC0809中,ADC0809将数字信号转化为模拟信号转给单片机进行处理,最后节果显示于显示频上。
关键词:
单相检测互感器检测用电器检测
1方案的选择与设计原理
方案一
霍尔电流传感器测量电流
输入为电流输出为电压,测量结果精度和线性度都比较高,测量范围有一定的限制。
使用ACS712芯片电路比较简单,测量的电流范围较大。
相比于ACS712电路比较简单,MAX471不用外加电源供电,但是电流测量范围只在0~3A。
该电流测量范围不符合监测基本要求。
方案二
电流互感器检测电流
理想电流互感器两侧的额定电流大小和它们的绕组匝数成反比。
并且常数为K。
K=I1/I2=N1/N2
电流互感器的一次电流取决于一次性电路的电压和阻抗。
电流互感器的工作状态接近于短路状态。
因此对电能的消耗量较小。
优点:
结构简单可靠,寿命较长,便于维护。
价格较低。
缺点:
不能用于高频检测,但可用于市区电检测。
综合两个方案,经比较发现,方案二更适合用于单相用电器分析监测,故采用方案二。
方案设计
运用电流互感器模块检测电路中的电流并输出较低电压的交流电,利用全波整流桥整流滤波成为较低电压直流电。
采用大规模集成电路ADC0809实现数模(A/D)转换,数字信号传入单片机进行数据处理及控制,然后通过显示屏显示具体的电流值及各电性参数.。
检测电路
互感器模块将一次系统的高电压,大电流变换为二次测的低电压(标准值),小电流(标准值),使测量,计量仪表和继电器等装置标准化,小型化。
整流电路
整流电路利用电桥,将正负交替的正弦交流电整流成为单向的脉动电,再用电容将输入或输出经过过滤而得到纯净的直流电。
对特定频率的频点或该频点以外的频率进行有效滤除。
数模转换
将模拟信号转化为数字信号
单片机
执行逻辑运算,指令控制,处理数据信息及调控显示时间
程序设计
借鉴了许多之前与这方面有关的设计
参考文献
余孟尝.数字电子技术基础简明教程(第三版)
高等教育出版社2006年7月杨素行.模拟电子技术基础简明教程(第三版)
高等教育出版社2006年5月侯殿有.
单片机C语言程序设计北京:
人民邮电出版社2010年11月
孙焕铭.51单片机C程序应用实例详解北京航空航天大学出版社2011年3月
器材
互感器模块
单片机(at89c52)
最小系统配件(晶振等)
Lcd显示屏(lcd1602)
八位模数ad转换器(adc0809)
电容若干
电阻若干
杜邦线
检测及整流部分(由于购买的互感器模块自带电位器可调节输出电压,所以没有做变压器部分)
单片机及数模转换(由于仿真不便用互感器使输入adc0809的电压变化以滑动变阻器代替)
单片机最小系统
程序部分
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitST=P3^0;
sbitOE=P3^1;
sbitEOC=P3^2;
sbitCLK=P3^3;
sbitlcdrs=P2^0;
sbitlcdrw=P2^1;
sbitlcden=P2^2;
voiddelayms(uintz);
uintADC_convert();
voidinit();
voidwrite_com(ucharcom);
voidwrite_date(uchardate);
voidRefresh_show();
voidLCD_display(uchar*str);
uintdat_adc0808;
uchardisplay_buffer[][16]={
{"Currentvoltage:
"},
{"(vol)=0.00V"}
};
ucharcodetable1[]={"noElectric"};
ucharcodetable2[]={"JIANCEDIANLU"};
ucharcodetable3[]={"i=2mARouter"};
ucharcodetable4[]={"i=4mAUSBcharger"};
ucharcodetable5[]={"i=190mAEleFAN"};
ucharcodetable6[]={"i=40mALEDLight"};
ucharcodetable7[]={"i=6600mAW-Herter"};
voidwrite_com(ucharcom)
{
lcdrs=0;
lcdrw=0;
lcden=0;
P1=com;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
voidwrite_date(uchardate)
{
lcdrs=1;
lcdrw=0;
lcden=0;
P1=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
voidLCD_init()
{
ucharnum;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<10;num++)
{
write_date(table1[num]);
delayms(10);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_date(table2[num]);
delayms(10);
}
}
uintADC_convert()
{
while
(1)
{
ST=0;
ST=1;
ST=0;
while
(1){CLK=!
CLK;if(EOC==1)break;}
OE=1;
dat_adc0808=P0;
OE=0;
returndat_adc0808;
}}
voidRefresh_show()
{
uintt=dat_adc0808*500.0/256;
display_buffer[1][7]=t/100+'0';
display_buffer[1][9]=t/10%10+'0';
display_buffer[1][10]=t%10+'0';
}
voidLCD_display(uchar*str)
{
uchari;
for(i=0;i{
write_date(str[i]);
delayms(5);
}
}
voiddelayms(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=625;y>0;y--);
}
voidmain()
{
ucharnum;
LCD_init();
while
(1)
{
ADC_convert();
Refresh_show();
write_com(0x80);
LCD_display(display_buffer[1]);
Refresh_show();
delayms(5);
write_com(0xC0);
if
((display_buffer[1][7]==48)&(display_buffer[1][9]==50)&((display_buffer[1][10]==51)|(display_buffer[1][10]==52)|(display_buffer[1][10]==53)|(display_buffer[1][10]==54)))
{for(num=0;num<16;num++)
{write_date(table3[num]);
delayms(20);}}
if
((display_buffer[1][7]==48)&(display_buffer[1][9]==53)&((display_buffer[1][10]==53)|(display_buffer[1][10]==54)|(display_buffer[1][10]==55)|(display_buffer[1][10]==56))|(display_buffer[1][10]==57)){for(num=0;num<16;num++)
{write_date(table4[num]);
delayms(20);}
}
if
((display_buffer[1][7]==52)&(display_buffer[1][9]==54)&((display_buffer[1][10]==51)|(display_buffer[1][10]==52)|(display_buffer[1][10]==53)|(display_buffer[1][10]==54))|(display_buffer[1][10]==55)){for(num=0;num<16;num++)
{write_date(table7[num]);
delayms(20);}
}
if
((display_buffer[1][7]==48)&(display_buffer[1][9]==53)&((display_buffer[1][10]==48)|(display_buffer[1][10]==49)|(display_buffer[1][10]==50)|(display_buffer[1][10]==51))|(display_buffer[1][10]==52)){for(num=0;num<16;num++)
{write_date(table5[num]);
delayms(20);}
}
if((display_buffer[1][7]==48)&(display_buffer[1][9]==48)&((display_buffer[1][10]==48)))
{for(num=0;num<16;num++)
{write_date(table1[num]);
delayms(20);}
}
}
}
实际测量
用万用表测量经过检测电路和整流电路的直流电压(用电器为电烙铁)
用万用表测量经过检测电路和整流电路的直流电压(用电器为关闭的台灯)
用万用表测量经过检测电路和整流电路的直流电压(用电器为最低亮度的台灯)
用万用表测量经过检测电路和整流电路的直流电压(用电器为最高亮度的台灯)