IM1253B交直流电能计量模块(艾锐达光电)

   日期:2021-04-13     浏览:257    评论:0    
核心提示:冯:基于IM1253B交直流电能计量模块(艾锐达光电)设计的测量电压、电流、功率测量物该模块质量不错,价格便宜,使用简单,容易上手,测量电压范围大,可测交流,直流,功率等。如果想要资料或者源码的话,关注私信我。IM1253B交直流电能计量模块模块图片模块读取数据命令模块数据刷新命令接线尺寸图数据显示图片主函数:模块图片模块读取命令和数据刷新命令是用商家提供的软件得来----发送数据那一行模块读取数据命令00 03 00 01 00 04 14 18------16进制模块数据刷新命令

冯:
基于IM1253B交直流电能计量模块(艾锐达光电)设计的测量电压、电流、功率测量物
该模块质量不错,价格便宜,使用简单,容易上手,测量电压范围大,可测交流,直流,功率等。
如果想要资料或者源码的话,关注私信我。

IM1253B交直流电能计量模块

  • 模块图片
  • 模块读取数据命令
  • 模块数据刷新命令
  • 接线
  • 尺寸图
  • 数据显示图片
  • 主函数:

模块图片


模块读取命令和数据刷新命令是用商家提供的软件得来----发送数据那一行

模块读取数据命令

00 03 00 01 00 04 14 18------16进制

模块数据刷新命令

03 00 48 00 08 D1 C4------16进制

接线

尺寸图

数据显示图片

提供主函数的话基本就可以实现,其他的配置可以参考正点原子的来配置,我也是参考正点原子来配置的串口,IO口之类的

主函数:

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "key.h"
#include "oled.h"
#include "timer.h"

unsigned  char Tx_Buffer[8];
unsigned 	long Voltage_data,Current_data,Power_data,Energy_data,Pf_data,CO2_data;

void read_data(void);//读取数据-只用初始化
void Analysis_data(void);//分析数据-将发送的16进制转为10进制
void clear_data(void);//数据刷新-用来更新数据

int main(void)
{ 
    delay_init();	    	 //延时函数初始化-系统时钟
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
    uart_init(4800);	 //串口初始化为4800
    LED_Init();		  	 //初始化与LED连接的硬件接口
    KEY_Init();				//按键初始化
    OLED_Init();			//OLED初始化
    OLED_Clear();			//清屏
    TIM3_Int_Init(4999,7199);//初始化定时器3 500ms
    read_data();			//发送读取数据命令
    while(1)
    { 
        delay_ms(800);
        clear_data();
        delay_ms(800);
        Analysis_data();

        //显示信息--电压:
        OLED_ShowCHinese(0,0,0);//x,y
        OLED_ShowCHinese(20,0,1);//x,y
        OLED_ShowCHinese(40,0,2);//x,y
        //OLED_ShowNum(48,0,Voltage_data,6,16);
        //显示数据
        OLED_ShowNum(48,0,Voltage_data/100000,1,16);
        OLED_ShowNum(56,0,Voltage_data/10000%10,1,16);
        OLED_ShowChar(64,1,'.',12);
        OLED_ShowNum(72,0,Voltage_data/1000%10,1,16);
        OLED_ShowNum(80,0,Voltage_data/100%10,1,16);
        OLED_ShowChar(91,0,'V',16);
        //显示信息--电流:
        OLED_ShowCHinese(0,2,3);//x,y
        OLED_ShowCHinese(20,2,4);//x,y
        OLED_ShowCHinese(40,2,5);//x,y
        //显示数据
        OLED_ShowNum(48,2,Current_data/10000%10,1,16);
        OLED_ShowChar(56,3,'.',12);
        OLED_ShowNum(64,2,Current_data/1000%10,1,16);
        OLED_ShowNum(72,2,Current_data/100%10,1,16);
        OLED_ShowNum(80,2,Current_data/10%10,1,16);
        OLED_ShowNum(88,2,Current_data%10,1,16);
        OLED_ShowChar(99,2,'A',16);
        //显示信息--功率:
        OLED_ShowCHinese(0,5,6);//x,y
        OLED_ShowCHinese(20,5,7);//x,y
        OLED_ShowCHinese(40,5,8);//x,y
        //显示数据
        OLED_ShowNum(48,5,Current_data*Voltage_data/100/1000000%10,1,16);
        OLED_ShowChar(56,6,'.',12);
        OLED_ShowNum(64,5,Current_data*Voltage_data/100/100000%10,1,16);
        OLED_ShowNum(72,5,Current_data*Voltage_data/100/10000%10,1,16);
        OLED_ShowNum(80,5,Current_data*Voltage_data/100/1000%10,1,16);
        OLED_ShowNum(88,5,Current_data*Voltage_data/100/100%10,1,16);
        OLED_ShowChar(99,5,'W',16);
    }
}
//读取数据-只用初始化
void read_data(void)
{ 
    int i=0;
    //TX[8]:00 03 00 01 00 04 14 18--读取命令可能每个模块都不太一样根据商家提供的软件来看
    // FF 03 00 48 00 08 D1 C4--数据刷新同上
    Tx_Buffer[0]=0x01;
    Tx_Buffer[1]=0x03;
    Tx_Buffer[2]=0x00;
    Tx_Buffer[3]=0x48;
    Tx_Buffer[4]=0x00;
    Tx_Buffer[5]=0x04;
    Tx_Buffer[6]=0x14;
    Tx_Buffer[7]=0x18;

    for(i=0; i<8; i++)
    { 
        USART_SendData(USART1,Tx_Buffer[i]); //发送命令
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//发送完数据
    }
    USART_RX_STA=0;
}
//分析数据-将发送的16进制转为10进制
void Analysis_data(void)
{ 
    //解析数据(16转10)--商家提供的
    Voltage_data=(((unsigned long)(USART_RX_BUF[3]))<<24)|(((unsigned
                 long)(USART_RX_BUF[4]))<<16)|(((unsigned long)(USART_RX_BUF[5]))<<8)|USART_RX_BUF[6];
    Current_data=(((unsigned long)(USART_RX_BUF[7]))<<24)|(((unsigned
                 long)(USART_RX_BUF[8]))<<16)|(((unsigned long)(USART_RX_BUF[9]))<<8)|USART_RX_BUF[10];
    Power_data=(((unsigned long)(USART_RX_BUF[11]))<<24)|(((unsigned
               long)(USART_RX_BUF[12]))<<16)|(((unsigned long)(USART_RX_BUF[13]))<<8)|USART_RX_BUF[14];
    Energy_data=(((unsigned long)(USART_RX_BUF[15]))<<24)|(((unsigned
                long)(USART_RX_BUF[16]))<<16)|(((unsigned long)(USART_RX_BUF[17]))<<8)|USART_RX_BUF[18];
    Pf_data=(((unsigned long)(USART_RX_BUF[19]))<<24)|(((unsigned
            long)(USART_RX_BUF[20]))<<16)|(((unsigned long)(USART_RX_BUF[21]))<<8)|USART_RX_BUF[22];
    CO2_data=(((unsigned long)(USART_RX_BUF[23]))<<24)|(((unsigned
             long)(USART_RX_BUF[24]))<<16)|(((unsigned long)(USART_RX_BUF[25]))<<8)|USART_RX_BUF[26];
}
//数据刷新-用来更新数据
void clear_data(void)
{ 
    int i=0;
    //TX[8]:00 03 00 01 00 04 14 18--读取命令可能每个模块都不太一样根据商家提供的软件来看
    // FF 03 00 48 00 08 D1 C4--数据刷新同上
    Tx_Buffer[0]=0xFF;
    Tx_Buffer[1]=0x03;
    Tx_Buffer[2]=0x00;
    Tx_Buffer[3]=0x48;
    Tx_Buffer[4]=0x00;
    Tx_Buffer[5]=0x08;
    Tx_Buffer[6]=0xD1;
    Tx_Buffer[7]=0xC4;

    for(i=0; i<8; i++)
    { 
        USART_SendData(USART1,Tx_Buffer[i]);//向串口一发送命令
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//发送完数据
    }
    USART_RX_STA=0;
}

																		致谢:覃学长、思怡
																		作者:杏林洁白
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服