基于51单片机220V交流电流检测系统过流阈值报警设计
1 系统功能介绍
本设计是一套基于 STC89C52 单片机 的 220V 交流电流检测与过流阈值报警系统,能够对交流电路的实时电流进行采集与显示,并通过设定的阈值进行过流报警提示。系统特别适合用于工业设备的电流监测、家庭用电安全检测以及用电设备状态监控。
系统主要功能如下:
-
交流电流实时检测
采用 TA1005M 电流互感器,将 220V 交流电路中的电流信号采集并转换为适合单片机采集的低电压信号,经模数转换电路(ADC)处理后送入单片机进行计算,最终换算出实时电流值。 -
LCD1602 实时显示
实时显示交流电流值,并支持显示当前设定的过流报警阈值,用户可以直观掌握用电情况。 -
过流报警功能
用户可通过按键设定电流上限阈值,当检测到电流超过该值时,蜂鸣器会发出声响提示;若电流低于阈值,则系统保持静音。 -
阈值可调功能
阈值可通过按键灵活设置,适配不同设备的电流安全范围。 -
安全检测与用电监控
对于长期运行的设备,如果电流异常增大,可能代表设备处于过载、短路或其他故障状态,系统能够快速发出报警,从而提升用电安全性。
2 系统电路设计
2.1 单片机最小系统
本系统选用 STC89C52 单片机作为核心控制单元,主要电路包括:
- 电源电路:将外部 DC 5V 电源供给单片机与外围器件,采用滤波电容减少干扰。
- 晶振电路:外接 12MHz 晶振及两只 30pF 电容,保证单片机稳定工作。
- 复位电路:采用上拉电阻与复位按键,保证上电与人工复位可靠。
该模块主要负责数据处理、逻辑控制、LCD 显示、按键扫描与报警输出。
2.2 电流采集模块(TA1005M 电流互感器)
TA1005M 是一款交流电流互感器,通过电磁感应原理将一次侧高电流转换为二次侧低电流,再经过采样电阻转换成电压信号。
- 一次侧:串接在被测交流负载回路中。
- 二次侧:通过采样电阻产生与电流成比例的电压信号。
- 输出信号需经过整流与滤波,转化为稳定的直流电压,以便后续 ADC 采样。
该模块的设计要点:
- 选取合适的采样电阻,保证输出电压在 ADC 输入范围内。
- 加入 RC 滤波电路,减少交流波形中的高频干扰。
2.3 AD 转换模块
STC89C52 无内置 ADC,因此采用外接 ADC 模块(如 ADC0832、ADC0809)进行模数转换:
- 将 TA1005M 输出的模拟电压输入到 ADC 模块。
- ADC 将电压信号转换为数字数据,并通过 SPI 或并行方式传输至单片机。
- ADC 分辨率越高,测量精度越高;本系统采用 8 位或 10 位 ADC 即可满足要求。
2.4 LCD1602 显示模块
LCD1602 通过 4 位或 8 位并行接口与单片机相连,用于显示:
- 实时电流值(单位 A)
- 当前设定的过流阈值(单位 A)
- 报警状态信息
该模块显示直观、刷新速度快,适合现场监测。
2.5 按键输入模块
系统设计 3 个按键:
- SET:进入阈值设置模式或确认设置
- UP:在设置模式下增加阈值
- DOWN:在设置模式下减少阈值
按键采用上拉电阻设计,按下时输入为低电平,软件需进行去抖处理。
2.6 蜂鸣器报警模块
采用有源蜂鸣器与 NPN 三极管驱动:
- 当单片机检测到过流,输出高电平使三极管导通,蜂鸣器发出报警声。
- 报警音可以为持续音或间歇音,可在程序中灵活控制。
2.7 电源电路
系统采用 5V 直流电源供电:
- 单片机、LCD、ADC 直接使用 5V 电压。
- 采样电路与互感器与 220V 交流回路隔离,确保安全。
3 程序设计
3.1 主程序结构
程序分为 初始化 和 主循环 两部分:
-
初始化部分
- 初始化 LCD 显示
- 初始化 ADC
- 初始化按键与蜂鸣器
- 读取上次保存的阈值(可选)
-
主循环部分
- 采集电流数据
- 计算电流有效值
- 显示数据与阈值
- 判断是否过流报警
- 按键扫描与阈值修改
3.2 电流采集与计算
unsigned int Get_ADC_Value(void) {unsigned int value = 0;// 启动 ADC 转换ADC_Start();// 等待转换完成while(!ADC_Complete());value = ADC_Read();return value;
}float Calculate_Current(unsigned int adc_value) {float voltage = (adc_value / 255.0) * 5.0; // 转换成电压值float current = voltage / 0.1; // 采样电阻0.1Ωreturn current;
}
3.3 LCD 显示程序
void Display_Current_Threshold(float current, float threshold) {char buf[16];LCD_SetCursor(0, 0);sprintf(buf, "I: %.2f A", current);LCD_Print(buf);LCD_SetCursor(0, 1);sprintf(buf, "TH: %.2f A", threshold);LCD_Print(buf);
}
3.4 按键扫描与阈值设置
void Key_Scan(void) {if(KEY_SET == 0) { // 进入设置模式delay_ms(20);if(KEY_SET == 0) {setting_mode = 1;}}if(setting_mode) {if(KEY_UP == 0) {delay_ms(20);if(KEY_UP == 0) threshold += 0.1;}if(KEY_DOWN == 0) {delay_ms(20);if(KEY_DOWN == 0) threshold -= 0.1;}}
}
3.5 报警控制程序
void Alarm_Check(float current, float threshold) {if(current > threshold) {BEEP_ON();} else {BEEP_OFF();}
}
3.6 主循环
void main(void) {float current = 0;float threshold = 5.0; // 默认阈值System_Init();while(1) {unsigned int adc_value = Get_ADC_Value();current = Calculate_Current(adc_value);Display_Current_Threshold(current, threshold);Alarm_Check(current, threshold);Key_Scan();}
}
4 总结
本系统基于 STC89C52 单片机,利用 TA1005M 电流互感器 + ADC + LCD1602 + 按键 + 蜂鸣器 构建了一套实用的交流电流检测与过流报警系统。系统不仅能够实时测量并显示交流电流,还能根据用户设定的阈值进行灵活报警,具有结构简单、成本低、稳定性高的优点。
未来可扩展方向包括:
- 增加 EEPROM 存储功能,实现掉电记忆
- 通过 RS485 或 WiFi 模块将数据上传至上位机
- 增加多通道电流检测,实现多设备同时监控