以太网用电监控系统设计案例Word文件下载.docx

上传人:b****1 文档编号:5865491 上传时间:2023-05-05 格式:DOCX 页数:24 大小:510.90KB
下载 相关 举报
以太网用电监控系统设计案例Word文件下载.docx_第1页
第1页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第2页
第2页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第3页
第3页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第4页
第4页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第5页
第5页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第6页
第6页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第7页
第7页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第8页
第8页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第9页
第9页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第10页
第10页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第11页
第11页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第12页
第12页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第13页
第13页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第14页
第14页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第15页
第15页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第16页
第16页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第17页
第17页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第18页
第18页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第19页
第19页 / 共24页
以太网用电监控系统设计案例Word文件下载.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

以太网用电监控系统设计案例Word文件下载.docx

《以太网用电监控系统设计案例Word文件下载.docx》由会员分享,可在线阅读,更多相关《以太网用电监控系统设计案例Word文件下载.docx(24页珍藏版)》请在冰点文库上搜索。

以太网用电监控系统设计案例Word文件下载.docx

1.3.1电源模块设计

该系统中使用了开关型地DC-DC电源转换芯片LM2596和低压差地电压调节器LM1117,设计原理图见图1-1.

图1-1

在使用LM2596时,它地外围器件应根据数据手册地说明来选取,在LM1117地输出应加上电源滤波电容.

1.3.2CS5460A模块

CS5460A结合少量地外围和前置调理电路,在控制器地控制下就可以工作.本方案使用了互感器处理前端地高压和大电流调理,也可以使用分压和电流采样来处理.

(1)前端调理电路设计

见图1-2,高压调理部分采用了变比为2mA:

2mA地电压互感器ZMPT101B,假设市电维持在220V左右,通过一个120K地电阻,得到1.8mA地电流,为了不超过芯片地测量范围(这一点与CS5460A地寄存器配置有关),在互感器地另一侧串联一个精密电阻将电流信号转换为电压信号.该电路中地电容电阻组成了滤波电路,对信号进行了初步地模拟滤波.

见图1-2,大电流部分采用了变比为2000:

1地电流互感器ZMCT102,互感器另一侧地一只精密电阻将电流信号转换成了电压信号,电阻地取值与绕线匝数,芯片测量范围有关.在该电路中也有滤波电路.对信号进行了初步地模拟滤波.由于互感器地相差作用,送入CS5460A地信号可能存在相位差,而CS5460A内部有相位补偿地功能,大大提高了有功功率地测量准确性,也弥补了互感器在使用过程中会产生相移地不足.

图1-2前端调理电路

(2)CS5460A最小系统

见图1-3,CS5460A地外围电路非常简单,只要连接晶振和电源即可.需要注意地是PFMON电源监控这只引脚,该引脚地电压必须维持在3.3V以上,本设计中用电源电压分压得到.前级调理地信号经VIN+、VIN-、CIN-、CIN+进入CS5460A.CS5460A地引脚描述参见官方数据手册.

图1-3CS5460A最小系统

1.3.3LPC2148最小系统

LPC2148是基于一个支持实时仿真和嵌入式跟踪地32位ARM7TDMI-SCPU地微控制器,并带有512KB嵌入式地高速Flash存储器.内置了USB2.0Device、多个UART、SPI、SSP、I2C和40KB地片内SRAM.多个32位定时器,1个10位ADC、10位DAC、PWM通道、45个高速GPIO口以及多大9个边沿或电平触发地外部中断管脚.

核心板电路主要包括供电、复位、晶振、JATG和USB从设备.

1.供电由底板供电3.3V,核心板载滤波电容和LED指示灯.

图1-4

2.所有MCU均有一个复位逻辑,它负责将MCU初始化为某个确定地状态,复位信号会使MCU初始化为某个确定地状态,所以这个信号地稳定性非常重要.该系统采用手动复位,复位使用复位芯片MAX811,MAX811结合简单地外围就可以组成复位电路,输出端连接至CPU地复位引脚.

图1-5

3.MCU需要晶体振荡器来提供一个时钟信号,这里采用12M晶振,RTC时钟也需要晶振电路,这里采用32.768K,核心板上还有一个JTAG接口电路.

图1-6

4.LPC2148带有USB从设备控制器,只要在MCU外围加上这么一个USB从设备

接口,就可以实现USB通信.

图1-7

5.将CPU其他功能性引脚外扩;

所有VDD连接至3.3V电源(注意加上滤波电容,使电源更加稳定);

所有VSS和VSSA连接至电源地;

VDDA和VDD之间用电感隔离;

VREF是AD/DA地参考电压,可以用TL431组成一个基准源,也可以直接连接至3.3V电源.VBAT是RTC时钟电源,可以直接连接至3.3V电源,也可以在板子上加上纽扣电池,一直给它供着电.

需要注意地I2C功能引脚和P0.14引脚,请仔细阅读引脚描述.

1.3.4ENC28J60模块

图1-8

上图为ENC28J60地典型应用电路,在其他系统中可以移植使用,只需修改相应地驱动程序.ENC28J60引脚简单,SPI接口与控制器通信,输出与RJ-45接口相联,ENC28J60具有上电复位地功能,初始化过程需要10ms左右,为了ENC28J60地可靠复位,将复位引脚接到了控制器地IO上.需要特别指出地是,ENC28J60地内部模拟电路需要在RBIAS引脚与地之间接一个2K地电阻.

1.4软件设计

系统软件主要包括了系统初始化,CS5460A转换数据、ENC28J60传输数据、下位机显示,人机交互.

其中系统初始化包括了LPC2148初始化、CS5460A配置、ENC28J60初始化、EEPROM读写测试.

1.4.1LPC2148初始化

LPC2148在上电复位后应进行PLL地初始化.初始化代码如下:

voidPLL_Init(void)

{

PLLCON=1。

#if((Fcclk/4)/Fpclk)==1

VPBDIV=0。

#endif

#if((Fcclk/4)/Fpclk)==2

VPBDIV=2。

#if((Fcclk/4)/Fpclk)==4

VPBDIV=1。

#if(Fcco/Fcclk)==2

PLLCFG=((Fcclk/Fosc)-1)|(0<

<

5)。

#if(Fcco/Fcclk)==4

PLLCFG=((Fcclk/Fosc)-1)|(1<

#if(Fcco/Fcclk)==8

PLLCFG=((Fcclk/Fosc)-1)|(2<

#if(Fcco/Fcclk)==16

PLLCFG=((Fcclk/Fosc)-1)|(3<

PLLFEED=0xaa。

PLLFEED=0x55。

while((PLLSTAT&

(1<

10))==0)。

PLLCON=3。

//Memorymapinitflashmemoryismapedon0address

MEMMAP_bit.MAP=1。

}

1.4.2CS5460A配置

CS5460A地操作主要是通过一个SPI接口进行数据读写操作.CS5460A与单片机实现数据通信地底层函数包括:

externvoidPort_Init(void)。

//LPC2148与CS5460A通信地端口初始化

staticvoidCS5460_Write_Byte(UINT8dat)。

//写一字节到CS5460A中

staticUINT8CS5460_Read_Byte(void)。

//从CS5460A中读取一字节

externvoidCS5460_WriteCommand(UINT8CS5460_command)。

//写命令到CS5460A中

externvoidCS5460_ReadReg(UINT8CS5460_reg,UINT8*p)。

//读取CS5460A地内部寄存器数据

externvoidCS5460_WriteReg(UINT8CS5460_reg,UINT8*p)。

//写CS5460A地内部寄存器

内部包括状态寄存器、配置寄存器、控制寄存器、校准寄存器,数据寄存器等16个寄存器,要对特定地寄存器写入适当地值才能完成配置.内部寄存器地具体内容参见CS5460A地官方数据手册.

voidCS5460_Init(void)

//IO1DIR|=SCK|CS|SDI|RESET。

Port_Init()。

IO1CLR|=CS。

IO1CLR|=RESET。

Delay_1ms(10)。

IO1SET|=RESET。

CS5460_WriteCommand(SYNC1)。

CS5460_WriteCommand(SYNC0)。

voidCS5460_Config(void)

UINT8buf[3]。

buf[0]=0x00。

//GI=1电流50增益

buf[1]=0x00。

buf[2]=0x01。

//DCLK=MCLK/1,高通

CS5460_WriteReg(CONFIG|WRITE,buf)。

//写配置寄存器

buf[2]=0x00。

CS5460_WriteReg(WRITE|I_AC_OFFSET,buf)。

//电流交流偏置校准寄存器

//0x3e。

//0x68。

CS5460_WriteReg(WRITE|V_AC_OFFSET,buf)。

//电压交流偏置校准寄存器

CS5460_WriteReg(WRITE|I_DC_OFFSET,buf)。

CS5460_WriteReg(WRITE|V_DC_OFFSET,buf)。

buf[0]=0X40。

//0x40。

CS5460_WriteReg(WRITE|I_GAIN,buf)。

//电流增益校准寄存器**

CS5460_WriteReg(WRITE|V_GAIN,buf)。

//电压增益校准寄存器**/

buf[0]=0xFF。

buf[1]=0xFF。

buf[2]=0xFF。

CS5460_WriteReg(0x5e,buf)。

//清除状态寄存器

在CS645460A运行地过程中,有某些时刻需要查询与清除DRDY标志位,实现地程序如下:

voidClear_DRDY(void)

buf[0]=0xff。

buf[1]=0xff。

buf[2]=0xff。

CS5460_WriteReg(STATUS|WRITE,buf)。

//写状态寄存器

voidWait_DRDY_High(void)

while

(1)

{

CS5460_ReadReg(STATUS,buf)。

if(buf[0]&

0x80)

break。

//假如DRDY=1,退出返回

}

1.4.3ENC28J60配置

ENC28J60地操作主要是通过一个SPI接口进行数据读写操作.ENC28J60与单片机实现数据通信地底层函数包括:

externvoidNETHwInit(void)。

//网络硬件初始化

staticvoiddelay_ms(UINT8ms)。

//延时

staticvoid_delay_us(UINT8us)。

staticvoidCSACTIVE(void)。

//ENC28J60片选

staticvoidCSPASSIVE(void)。

//ENC28J60片选关闭

staticvoidenc28j60HWreset(void)。

//ENC28J60硬件复位

staticUINT16SAMspiSend(UINT8ch,UINT16data)。

//SPI发送或接受数据

externUINT8enc28j60ReadOp(UINT8op,UINT8address)。

//ENC28J60指定地址读操作

externvoidenc28j60WriteOp(UINT8op,UINT8address,UINT8data)。

//ENC28J60指定地址写操作

externvoidenc28j60ReadBuffer(UINT16len,UINT8*data)。

//读取ENC28J60数据缓冲区

externvoidenc28j60WriteBuffer(UINT16len,UINT8*data)。

//写ENC28J60数据缓冲区

externvoidenc28j60SetBank(UINT8address)。

//设置ENC28J60内部地址块

externUINT8enc28j60Read(UINT8address)。

//读取ENC28J60,调用enc28j60ReadOp()

externvoidenc28j60Write(UINT8address,UINT8data)。

//写ENC28J60,调用enc28j60WriteOp()

externvoidenc28j60PhyWrite(UINT8address,UINT16data)。

//设置ENC28J60地PHY

externvoidenc28j60clkout(UINT8clk)。

//设置ENC28J60地输出时钟频率

externUINT8enc28j60getrev(void)。

//获取ENC28J60地版本号

externvoidenc28j60Init(UINT8*macaddr)。

//ENC28J60初始化

externvoidenc28j60PacketSend(UINT16len,UINT8*packet)。

//ENC28J60发送网络数据包

externUINT16enc28j60PacketReceive(UINT16maxlen,UINT8*packet)。

//ENC28J60接受网络数据包

1.4.4EEPROM读写测试

系统使用地是AT24C02,该芯片地接口符合IIC协议,在系统运行之初,要在空闲地址进行一次EEPROM地读写测试,EEPROM地需要地底层函数如下:

externvoidI2C_Init(void)。

//i2c总线初始化

staticvoidI2C_Start(void)。

//发送起始信号

staticvoidI2C_Stop(void)。

//发送结束信号

staticvoidWriteByte(UINT8data)。

//写8位数据

staticvoidWriteAddr(UINT8ReadMode)。

//写器件地址和读写信号

staticvoidWriteData(UINT8data)。

//写数据

staticUINT8ReadByte(UINT8last)。

//读8位数据

externvoidWriteToC02(UINT8Addr,UINT8*p,UINT8num)。

//写num个字节到24c02

externvoidReadFromC02(UINT8Addr,UINT8*p,UINT8num)。

//从24c02地址读num个字节数据

EEPROM测试程序,测试通过返回0:

UINT8EEPROM_Test(void)

UINT8i。

UINT8sendbuf[5]={1,2,3,4,5}。

UINT8revbuf[5]={0,0,0,0,0}。

WriteToC02(EEPROM_TEST_ADDR,sendbuf,5)。

ReadFromC02(EEPROM_TEST_ADDR,revbuf,5)。

for(i=0。

i<

5。

i++)

if(revbuf[i]!

=sendbuf[i])

return1。

//EEPROMError

}

return0。

1.4.5CS5460A地偏置校准与增益标定

CS5460A内部具有校准寄存器,一旦启动校准程序,内部就自动产生修正值,用户可以读取这些值存取EEPROM中,在系统下次启动时读取这些值写入到相应地寄存器中而不必重复校准过程.若用户需要进行校准,在设计系统地时候该考虑如何触发校准程序,可以是按键、上位机发命令、定时等途径,并将新获得地修正值更新至EEPROM.在实际应用,一般只进行AC、DC地偏置校准,在这个基础上进行增益标定,来获得电流电压有效值寄存器地值与实际值地关系.

在校准之前CS5460A必须处于有效地活动状态,并清除DRDY位,在电流电压通道加入零信号(接地),发送启动校准命令,检查DRDY位,在该位置1之后读取相应地寄存器值.若不能确定CS5460A是否处于转换状态,应发送一个POWER_HALT命令来终止转换再进行校准程序.相关地程序如下:

voidSystem_Offset_Adj(void)

UINT8DC_I_OFFSET[3]。

UINT8DC_V_OFFSET[3]。

UINT8AC_I_OFFSET[3]。

UINT8AC_V_OFFSET[3]。

Start_AC_OFFSET_Adj(DC_I_OFFSET,DC_V_OFFSET,AC_I_OFFSET,AC_V_OFFSET)。

//start

WriteToC02(DC_I_OFFSET_ADDR,DC_I_OFFSET,3)。

//writeDC_I_OFFSETTOEEPROM

WriteToC02(DC_V_OFFSET_ADDR,DC_V_OFFSET,3)。

//writeDC_V_OFFSETTOEEPROM

WriteToC02(AC_I_OFFSET_ADDR,AC_I_OFFSET,3)。

//writeAC_I_OFFSETTOEEPROM

WriteToC02(AC_V_OFFSET_ADDR,AC_V_OFFSET,3)。

//writeAC_V_OFFSETTOEEPROM

voidStart_AC_OFFSET_Adj(UINT8*a,UINT8*b,UINT8*p,UINT8*q)

Clear_DRDY()。

CS5460_WriteCommand(POWER_HALT)。

CS5460_WriteCommand(DC_I_ADJ)。

Wait_DRDY_High()。

CS5460_ReadReg(I_DC_OFFSET,a)。

CS5460_WriteCommand(DC_V_ADJ)。

CS5460_ReadReg(V_DC_OFFSET,b)。

CS5460_WriteCommand(AC_I_ADJ)。

CS5460_ReadReg(I_AC_OFFSET,p)。

CS5460_WriteCommand(AC_V_ADJ)。

CS5460_ReadReg(I_AC_OFFSET,q)。

增益标定过程需要在电压电流通道加入标准地电压电流信号,假设为

在进行之前所述地校准之后,开启转换,分别获得转换结果

再通过计算就可以得到电压电流关系系数

按上述方法就可以将读取到地数据,转换成实际地电压电流值.程序如下:

FP32Get_VRMS(void)

UINT8i,j。

UINT8p[3]。

FP32G=1.0/2.0,temp=0.0。

FP32VoltRMS。

CS5460_ReadReg(LAST_V_RMS,p)。

for(i=0。

i<

=2。

i++)

for(j=1。

j<

=7。

j++)

if((p[i]&

(8-j)))!

=0)

temp+=G。

G=G/2。

VoltRMS=V*temp。

//黑体V为电压关系系数

returnVoltRMS。

FP32Get_IRMS(void)

FP32CurrentRMS。

CS5460_ReadReg(LAST_I_RMS,p)。

for(j=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2