问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于51单片机220V交流电流检测系统过流阈值报警设计

创作时间:
作者:
@小白创作中心

基于51单片机220V交流电流检测系统过流阈值报警设计

引用
CSDN
1.
https://blog.csdn.net/qq_39020934/article/details/143822894

本文详细介绍了基于51单片机的220V交流电流检测系统过流阈值报警设计。系统由STC89C52单片机电路、液晶1602显示电路、TA1005M电流互感器电路、AD转换电路、按键电路、蜂鸣器报警电路和电源电路组成。文章内容包括系统功能介绍、资料下载、系统电路介绍以及程序设计,适合有一定基础的读者深入学习。

1、系统功能介绍

系统构成:

  • 本设计由STC89C52单片机电路+液晶1602显示电路+TA1005M电流互感器电路+AD转换电路+按键电路+蜂鸣器报警电路+电源电路组成。

系统功能:

  1. 通过电流互感器实时检测交流电流值,并在1602液晶上实时显示。
  2. 电流的报警值的上限可以通过按键设定,如果报警值在上限之内,蜂鸣器不报警,如果报警值不在上限之内,蜂鸣器报警。
  3. 对于一般设备,工作电流一定,如果电流过高就处于异常状态,或者用于检测用电,电流过高肯定用电量大。

可根据本篇文章完成毕业设计的开题报告、任务书、设计、毕业论文等

2、资料下载

资料下载链接:https://download.csdn.net/download/qq_39020934/89662373
更多设计视频:https://space.bilibili.com/3537120073353692

3、系统电路介绍

3.1、STC89C52单片机核心系统电路设计

STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

STC89C52主要特性如下:

  • (1)8K字节程序存储空间;
  • (2)512字节数据存储空间;
  • (3)内带4K字节EEPROM存储空间;
  • (4)可直接使用串口下载

单片机最小系统电路图如下图所示

实物图:

3.2、LCD1602液晶显示模块电路设计

LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。

LCD1602控制指令说明:

  • LCD1602液晶模块内部的控制器共有11条控制指令,说明下表所示:

电路原理图:

实物图:

3.3、PCF8591 A/D采样电路设计

本系统选择PCF8591作为A/D采样芯片。PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

电路原理图:

实物图:

3.4、交流电流互感器模块电路设计

电流互感器是依据电磁感应原理将一次侧大电流转换成二次侧小电流来测量的仪器。电流互感器是由闭合的铁心和绕组组成。它的一次侧绕组匝数很少,串在需要测量的电流的线路中。因此它经常有线路的全部电流流过,二次侧绕组匝数比较多,串接在测量仪表和保护回路中,电流互感器在工作时,它的二次侧回路始终是闭合的,因此测量仪表和保护回路串联线圈的阻抗很小,电流互感器的工作状态接近短路。电流互感器是把一次侧大电流转换成二次侧小电流来测量 ,二次侧不可开路。

在发电、变电、输电、配电和用电的线路中电流大小悬殊,从几安到几万安都有。为便于测量、保护和控制需要转换为比较统一的电流,另外线路上的电压一般都比较高如直接测量是非常危险的。电流互感器就起到电流变换和电气隔离作用。

电流互感器与变压器类似也是根据电磁感应原理工作,变压器变换的是电压而电流互感器变换的是电流罢了。电流互感器接被测电流的绕组(匝数为N1),称为一次绕组(或原边绕组、初级绕组);接测量仪表的绕组(匝数为N2)称为二次绕组(或副边绕组、次级绕组)

电路原理图:

4、程序设计

4.1、系统初始化

void SysInit()	 //独立按键程序
{
    Init_Timer0();        //定时器0初始化	
    UART_Init();	//串口初始化
    LCD_Init();           //初始化液晶
    DelayMs(20);          //延时有助于稳定
    LCD_Clear();          //清屏
}

4.2、LCD1602液晶显示程序

/*******************************************
函数名称:LocateXY
功    能:向液晶输入显示字符位置的坐标信息
参    数:x--位置的列坐标
          y--位置的行坐标
返回值  :无
********************************************/
void LocateXY(uchar x,uchar y) 
{
    uchar temp;
    temp = x&0x0f;
    y &= 0x01;
    if(y)   temp |= 0x40;  //如果在第2行
    temp |= 0x80;
    LcdWriteCommand(temp,1);
}
/*******************************************
函数名称:Disp1Char
功    能:在某个位置显示一个字符
参    数:x--位置的列坐标
          y--位置的行坐标
          data--显示的字符数据
返回值  :无
********************************************/
void Disp1Char(uchar x,uchar y,uchar data1) 
{
    LocateXY( x, y );			
    LcdWriteData( data1 );		
}
/*******************************************
函数名称:LcdReset
功    能:对1602液晶模块进行复位操作
参    数:无
返回值  :无
********************************************/
void LcdReset(void) 
{
//    DataDir  = 0xFF;                 //数据端口设为输出状态 
    LcdWriteCommand(0x38, 0);	    //规定的复位操作
    DelayMs(5);
    LcdWriteCommand(0x38, 0);		
    DelayMs(5);
    LcdWriteCommand(0x38, 0);
    DelayMs(5);
    LcdWriteCommand(0x38, 1);		//显示模式设置
    LcdWriteCommand(0x08, 1);		//显示关闭
    LcdWriteCommand(0x01, 1);	    //显示清屏
    LcdWriteCommand(0x06, 1);		//写字符时整体不移动
    LcdWriteCommand(0x0c, 1);		//显示开,不开游标,不闪烁
}
/*------------------------------------------------
                清屏函数
------------------------------------------------*/
void LcdClear(void) 
{ 
    LcdWriteCommand(0x01,1); 
    DelayMs(5);
}
/*******************************************
函数名称:LcdWriteCommand
功    能:向液晶模块写入命令
参    数:cmd--命令,
          chk--是否判忙的标志,1:判忙,0:不判
返回值  :无
********************************************/
void LcdWriteCommand(uchar cmd,uchar chk) 
{
    if (chk) WaitForEnable();   // 检测忙信号?
    
    CLR_RS;	
    CLR_RW; 
    _NOP();
    DataPort = cmd;             //将命令字写入数据端口 
    _NOP();					
    
    SET_EN;                     //产生使能脉冲信号
    _NOP();
    _NOP();
    CLR_EN;			
}
/*******************************************
函数名称:LcdWriteData
功    能:向液晶显示的当前地址写入显示数据
参    数:data--显示字符数据
返回值  :无
********************************************/
void LcdWriteData( uchar data1 ) 
{
    WaitForEnable();        //等待液晶不忙
    SET_RS;
    CLR_RW; 
    SET_EN;
    
    _NOP();
    DataPort = data1;        //将显示数据写入数据端口
    _NOP();
                //产生使能脉冲信号
    _NOP(); 
    _NOP(); 
    CLR_EN;		
}

4.3、PCF8591 读取电压值程序

/*------------------------------------------------
             读AD转值程序
输入参数 Chl 表示需要转换的通道,范围从0-3
返回值范围0-255
------------------------------------------------*/
unsigned char ReadADC(unsigned char Chl)
 {
   unsigned char Val;
   Start_I2c();               //启动总线
   SendByte(AddWr);             //发送器件地址
     if(ack==0)return(0);
   SendByte(0x40|Chl);            //发送器件子地址
     if(ack==0)return(0);
   Start_I2c();
   SendByte(AddWr+1);
      if(ack==0)return(0);
   Val=RcvByte();
   NoAck_I2c();                 //发送非应位
   Stop_I2c();                  //结束总线
  return(Val);
 }

4.4、毫秒延时程序

/*------------------------------------------------
 uS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
 长度如下 T=tx2+5 uS 
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
 while(--t);
}
/*------------------------------------------------
 mS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
     
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
     DelayUs2x(245);
 }
}
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号