1 系统功能介绍

本系统是一套 基于51单片机的220V交流电流检测与过流阈值报警系统,通过实时监测交流电流,并结合阈值设定实现过流报警功能。系统利用 STC89C52 单片机作为核心控制器,结合电流互感器、液晶显示模块、按键设置模块及蜂鸣器,实现对交流电路电流的实时监控、数据展示与报警控制。

系统主要功能包括:

  1. 实时电流监测与显示:通过 TA1005M 电流互感器采集交流电流信号,经 AD 转换后送入单片机处理,LCD1602 实时显示当前电流值。
  2. 阈值设定功能:用户可通过按键设置电流上限阈值,当电流超过设定阈值时触发报警。
  3. 过流报警功能:当实际电流超过阈值上限时,蜂鸣器发出声光报警,提示设备异常或过载状态。
  4. 手动调整与存储功能:按键设置的阈值可存储在 EEPROM 中,即便掉电数据也不会丢失。
  5. 适用场景广泛:可用于工业设备用电监测、家庭电器过流保护、实验室用电监测等场景,帮助用户实时掌握用电状态,防止电流异常造成安全问题。

本系统通过高精度的电流检测、直观的液晶显示和可调节的阈值报警,实现了交流电流监测的智能化和安全化。


2 系统电路设计

本系统电路由核心控制模块、交流电流检测模块、AD 转换模块、液晶显示模块、按键模块、蜂鸣器报警模块及电源模块组成。以下对各模块进行详细介绍。

2.1 STC89C52 单片机核心系统

  • 功能:作为系统核心,负责电流数据采集、阈值判断、显示控制和报警控制。

  • 设计要点

    • STC89C52 提供丰富的 GPIO 接口和定时器资源,能够同时处理 ADC 输入、LCD 显示和蜂鸣器输出;
    • 外接晶振电路提供精确时钟信号,保证 ADC 采样和定时功能准确;
    • 上电复位与手动复位电路确保系统稳定启动;
    • 稳压电源模块为单片机及外围模块提供稳定的 5V 电源。

2.2 电流检测模块(TA1005M)

  • 功能:实时检测交流电流,将交流电信号转换为可测量的电压信号。

  • 设计要点

    • TA1005M 是一种高精度电流互感器,输出比例电压信号与交流电流成正比;
    • 模块经过滤波电路处理,去除高频干扰,保证信号稳定;
    • 输出电压接入 ADC 模块,实现电流的数字化采集;
    • 可用于检测 220V 交流电流的实时变化。

2.3 AD 转换模块

  • 功能:将电流互感器输出的模拟电压信号转换为单片机可处理的数字信号。

  • 设计要点

    • 使用内部或外部 ADC 进行 8 位或 10 位转换,保证测量精度;
    • 通过软件滤波算法处理采样数据,减少噪声影响;
    • 采样频率需高于电流波动频率的两倍,保证实时性和准确性;
    • ADC 输出数值作为单片机进行电流计算和阈值判断的依据。

2.4 LCD1602 显示模块

  • 功能:显示实时电流值及阈值设定。

  • 设计要点

    • LCD1602 采用 8 位或 4 位并行接口与单片机连接;
    • 显示内容包括当前电流(单位 A)和设置的阈值上限;
    • 软件刷新频率适中,保证液晶显示实时性且不闪烁;
    • 提供直观、可视化的用户界面,便于操作与监控。

2.5 按键模块

  • 功能:用于设置电流报警阈值以及手动操作。

  • 设计要点

    • 按键采用上拉或下拉电阻接入单片机 GPIO;
    • 按键设计包括增加阈值、减少阈值和确认阈值;
    • 软件实现防抖处理,保证按键操作的准确性;
    • 阈值设置完成后可存储于 EEPROM,掉电不丢失。

2.6 蜂鸣器报警模块

  • 功能:在电流超过阈值时发出声光报警,提醒用户异常情况。

  • 设计要点

    • 蜂鸣器可直接由单片机 GPIO 控制,或通过驱动晶体管增强输出;
    • 提供连续或间断鸣叫模式,可通过软件调节;
    • 与 LED 指示灯联动,实现声光报警,提高警示效果;
    • 当电流恢复正常时,蜂鸣器停止鸣叫。

2.7 电源模块

  • 功能:为系统提供稳定直流电源。

  • 设计要点

    • 使用 220V 交流输入,经整流、滤波、稳压后提供 5V 直流电;
    • 单片机、LCD 和蜂鸣器模块采用同一稳压电源供电,继电器或外部负载可单独供电;
    • 电源电路带有过流、过压保护,保证系统安全运行。

3 程序设计

系统程序模块化设计,主要包括初始化模块、电流采集模块、LCD 显示模块、按键处理模块、阈值判断模块及蜂鸣器控制模块。

3.1 系统初始化

#include <reg52.h>
#include "lcd1602.h"
#include "adc.h"
#include "eeprom.h"
#include "key.h"
#include "buzzer.h"

float current_value = 0;
float threshold_value = 10.0; // 初始报警值上限

void System_Init(void){
    LCD_Init();
    ADC_Init();
    Key_Init();
    Buzzer_Init();
    threshold_value = EEPROM_ReadThreshold(); // 读取上次存储阈值
    LCD_Clear();
    LCD_ShowString(0,0,"AC Current Monitor");
}

3.2 电流采集模块

void Read_Current(void){
    unsigned int adc_val;
    adc_val = ADC_Read(); // 读取ADC值
    current_value = adc_val * (220.0/1023); // ADC转换成电流值,假设比例关系
}

3.3 LCD显示模块

void Display_Current(void){
    LCD_SetCursor(0,1);
    LCD_ShowString("Current:");
    LCD_ShowFloat(current_value,2);
    LCD_ShowString("A");

    LCD_SetCursor(0,2);
    LCD_ShowString("Threshold:");
    LCD_ShowFloat(threshold_value,2);
    LCD_ShowString("A");
}

3.4 按键处理模块

void Key_Process(void){
    if(Key_Up() == 0){
        threshold_value += 0.1;
    }
    if(Key_Down() == 0){
        threshold_value -= 0.1;
    }
    if(Key_Confirm() == 0){
        EEPROM_WriteThreshold(threshold_value);
    }
}

3.5 阈值判断与蜂鸣器控制模块

void Check_Threshold(void){
    if(current_value > threshold_value){
        Buzzer_ON();
    } else {
        Buzzer_OFF();
    }
}

3.6 主程序循环

void main(void){
    System_Init();
    while(1){
        Read_Current();
        Display_Current();
        Key_Process();
        Check_Threshold();
    }
}

该系统通过模块化硬件设计与软件设计实现了 220V交流电流的实时监测、阈值报警与数据显示功能。电流互感器实现高精度采集,LCD1602 提供直观显示,按键设置阈值灵活方便,蜂鸣器报警及时可靠,整个系统稳定、智能且安全,适合工业、实验室及家庭电力监测应用。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐