【瑞萨RAMCU创意氛围赛】项目34——高压电网电流监测

瑞萨MCU小百科 2024-04-19 12:01


今日分享瑞萨RA MCU创意氛围赛的作品——高压电网电流监测。本项目基于启明6M5开发板用于监测高压三相电流数据,并对故障进行判断的设备,使用了串口、硬件I2C、ADC、OLED等硬件外设,使用瑞萨的FSP3.5版本,整体工程详见文末阅读原文。



启明6M5开发板


开发板硬件资源如图所示:



项目实现


  • 三路ADC获取三相瞬时正弦波电流信息

  • 正弦波转化为三相电流有效值

  • 判断三相电是否发生故障

  • 本地OLED显示,并上传云平台



软件设计


本人使用J-Link的SWD接口用于RA MCU的调试和程序下载,使用keil较为方便使用,需要如下配置:

  • P300/TCK/SWCLK可通过跳线帽可接到P201/MD引脚。用于控制MD引脚电平,使MCU上电时进入不同的启动模式

  • P112/UART2_TXD和P113/UART2_RXD两个引脚可配置为串口功能

左右滑动查看完整内容

    /* TODO: add your own code here */    Debug_UART2_Init(); // SCI4 UART 调试串口初始化
   ESP8266_UART9_Init();  // ESP8266 (SCI9 UART) 串口初始化        printf("欢迎使用野火启明6M5开发板\n\n");


硬件I2C的OLED

使用EBF Module 接口的P505,P506配置硬件I2C,驱动OLED屏幕

使用相关驱动初始化后,OLED打印信息。

左右滑动查看完整内容

  OLED_ShowString(0, 16, (const uint8_t*)"AIrms", 16, 1);                OLED_ShowString(43, 16,(const uint8_t*)"BIrms", 16, 1);                OLED_ShowString(87, 16,(const uint8_t*)"CIrms", 16, 1);                                OLED_ShowString(0, 32, AIrms_str, 16,1);                                OLED_ShowString(43, 32, BIrms_str, 16,1);                        OLED_ShowString(87, 32, CIrms_str, 16,1);                        OLED_ShowString(0, 0, (const uint8_t*)"state:", 16, 1);                OLED_ShowNum(87, 0, state,1,16, 1);    OLED_Refresh_Gram();


数据采集

使用开口式电流互感器,可选一次侧与二次侧的变比100:1,200:1,500:1,将开口式电流互感器二次侧接入采样电阻,可转化为电压值进行ADC采样。


ADC配置


配置ADC扫描参数,赋能ADC通道。在此函数中设置通道特定设置。

左右滑动查看完整内容

 /* Enable scan triggering from ELC events. */        (void) R_ADC_ScanStart(&g_adc0_ctrl);


回调函数adc_callback ()

左右滑动查看完整内容

void adc_callback(adc_callback_args_t * p_args){    FSP_PARAMETER_NOT_USED(p_args);    scan_complete_flag = true;}


读取ADC值

左右滑动查看完整内容

 err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_data1);        assert(FSP_SUCCESS == err);
       a1=(double)(adc_data1/4095.0)*3.3;


读取三通道ADC值

左右滑动查看完整内容

//ADC转换完成标志位volatile bool scan_complete_flag = false;
void adc_callback(adc_callback_args_t * p_args){    FSP_PARAMETER_NOT_USED(p_args);    scan_complete_flag = true;}
void ADC_Init(void){    fsp_err_t err;    err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);    err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);    assert(FSP_SUCCESS == err);}
/* 进行ADC采集,读取ADC数据并转换结果 */void Read_ADC_Voltage_Value(double *adcdata){                            uint16_t adc[3];
   (void) R_ADC_ScanStart(&g_adc0_ctrl);    while (!scan_complete_flag) //等待转换完成标志    {        ;    }    scan_complete_flag = false; //重新清除标志位                    /* 读取通道0数据 */                R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_1, &adc[0]);    /* ADC原始数据转换为电压值(ADC参考电压为3.3V) */    adcdata[0] = (double)(adc[0]*3.3/4095);                                    /* 读取通道0数据 */                R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_2, &adc[1]);    /* ADC原始数据转换为电压值(ADC参考电压为3.3V) */    adcdata[1] = (double)(adc[1]*3.3/4095);                                    /* 读取通道0数据 */                R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_3, &adc[2]);    /* ADC原始数据转换为电压值(ADC参考电压为3.3V) */    adcdata[2] = (double)(adc[2]*3.3/4095);                }


计算出电流有效值

左右滑动查看完整内容

/******************************************************函数名称:        getrms描述:                遍历查找电流样本点,得到极致点序列,计算出电流有效值输入:                iphase:电流样本数组                                SAMPLE_N:电流样本数据点数                                输出:        返回:                电流有效值******************************************************/float getrms(float *phase,int SAMPLE_N){        int changeSignCount=0;        int changeSignIndex[changeSignCount];// 遍历查找电流样本点for (int i = 1; i < SAMPLE_N; i++) {      
       //极大值,if((phase[i-1] <= phase[i] && phase[i] >=phase[i+1]) )        {            changeSignIndex[changeSignCount] = i;            changeSignCount++;          } }// 创建新数组,放置查找结果float changeSignSeq[changeSignCount];         float max = 0;        float min = 0;for(int i = 0; i < changeSignCount; i++)                {        changeSignSeq[i] = phase[changeSignIndex[i]];                        if (max                        max=changeSignSeq[i];                        }                        if (min>changeSignSeq[i])  {                        min=changeSignSeq[i];                        }                            }                //得出电流有效值                if(fabs(max)>fabs(min)) {                return (float)(fabs(max) * 0.707);                }                else {                return (float)(fabs(min) * 0.707);                }}


电流故障类型判断

左右滑动查看完整内容

/******************************************************函数名称:        changesign描述:                电流故障类型判断输入:                Aphase,Bphase,Cphase三相电有效值                                        maxphase理论最大电流                                                                        输出:        返回:                错误类型******************************************************/
int GetCableFaulttype(float Aphase,float Bphase,float Cphase,float maxphase){        int Fault;                        if(Aphase        {                if(Aphase<2||Bphase<2||Cphase<2)                {                                                Fault        = 5;//接地网脱落,或三相电未全部接地                }                                                Fault =6;//接地正常        }                else{        if(Aphase>100||Bphase>100||Cphase>100)        {                Fault = 3;//隔板击穿                        }        //排序得到最大最小值        float max=Aphase;        float min=Bphase;        if(max<=Bphase)                {                        max=Bphase;                        min=Aphase;                }        if(max<=Cphase)                {                        max=Cphase;                }                        if(min>=Cphase)                {                        min=Cphase;                }                                if(max>6*min)        {                Fault = 0;////接地错误                        }                if(max>6+min)        {                Fault = 2;//外护套破损                        }                        }        return Fault;}
GROUND_ERROR = 0,//接地错误
WATER_IN_BOX = 1,//接地箱进水
OUTER_SHEATH_DAMAGE = 2,//护套破损

PARTITION_BREAKDOWN = 3,//隔板击穿

PROTECTOR_BREAKDOWN = 4,//保护器击穿
GROUND_GRID_LOOSE = 5,//接地网脱落
GROUND_OK = 6//正常

一般使用4G模块,也可使用本开发板上板载的ESP8266



实现效果


没有实际接入高压电,ADC通道1,直接接入函数发生器生成的50HZ正弦波3.3V波峰,有效值为3.3*0.7.7=2.3331V,故障状态6表示正常。



视频演示说明



您可识别下方二维码或点击文末阅读原文访问,获取更多资料:


需要技术支持?

如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/



1

END

1


推荐阅读

【瑞萨RA MCU创意氛围赛】项目31——基于RA6M5的电子墨水屏微信信息站

【瑞萨RA MCU创意氛围赛】项目32——VFD时钟

【瑞萨RA MCU创意氛围赛】项目33——基于NBIOT的云端语音报警系统

更多精彩,敬请关注

评论
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 276浏览
  • 不让汽车专美于前,近年来哈雷(Harley-Davidson)和本田(Honda)等大型重型机车大厂的旗下车款皆已陆续配备车载娱乐系统与语音助理,在路上也有越来越多的普通机车车主开始使用安全帽麦克风,在骑车时透过蓝牙连线执行语音搜寻地点导航、音乐播放控制或免持拨打接听电话等各种「机车语音助理」功能。客户背景与面临的挑战以本次分享的客户个案为例,该客户是一个跨国车用语音软件供货商,过往是与车厂合作开发前装车机为主,且有着多年的「汽车语音助理」产品经验。由于客户这次是首度跨足「机车语音助理」产品,因
    百佳泰测试实验室 2025-01-24 17:00 61浏览
  • 随着AI大模型训练和推理对计算能力的需求呈指数级增长,AI数据中心的网络带宽需求大幅提升,推动了高速光模块的发展。光模块作为数据中心和高性能计算系统中的关键器件,主要用于提供高速和大容量的数据传输服务。 光模块提升带宽的方法有两种:1)提高每个通道的比特速率,如直接提升波特率,或者保持波特率不变,使用复杂的调制解调方式(如PAM4);2)增加通道数,如提升并行光纤数量,或采用波分复用(CWDM、LWDM)。按照传输模式,光模块可分为并行和波分两种类型,其中并行方案主要应用在中短距传输场景中成本
    hycsystembella 2025-01-25 17:24 73浏览
  • 项目展示①正面、反面②左侧、右侧项目源码:https://mbb.eet-china.com/download/316656.html前言为什么想到要做这个小玩意呢,作为一个死宅,懒得看手机,但又想要抬头就能看见时间和天气信息,于是就做个这么个小东西,放在示波器上面正好(示波器外壳有个小槽,刚好可以卡住)功能主要有,获取国家气象局的天气信息,还有实时的温湿度,主控采用ESP32,所以后续还可以开放更多奇奇怪怪的功能,比如油价信息、股票信息之类的,反正能联网可操作性就大多了原理图、PCB、面板设计
    小恶魔owo 2025-01-25 22:09 141浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 143浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 159浏览
  • 前篇文章中『服务器散热效能不佳有解吗?』提到气冷式的服务器其散热效能对于系统稳定度是非常重要的关键因素,同时也说明了百佳泰对于散热效能能提供的协助与服务。本篇将为您延伸说明我们如何进行评估,同时也会举例在测试过程中发现的问题及改善后的数据。AI服务器的散热架构三大重点:GPU导风罩:尝试不同的GPU导风罩架构,用以集中服务器进风量,加强对GPU的降温效果。GPU托盘:改动GPU托盘架构,验证出风面积大小对GPU散热的影想程度。CPU导风罩:尝试封闭CPU导风罩间隙,集中风流,验证CPU降温效果。
    百佳泰测试实验室 2025-01-24 16:58 60浏览
  • 书接上回:【2022年终总结】阳光总在风雨后,启航2023-面包板社区  https://mbb.eet-china.com/blog/468701-438244.html 总结2019,松山湖有个欧洲小镇-面包板社区  https://mbb.eet-china.com/blog/468701-413397.html        2025年该是总结下2024年的喜怒哀乐,有个好的开始,才能更好的面对2025年即将
    liweicheng 2025-01-24 23:18 108浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 1017浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 196浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 211浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦