今日分享瑞薩RA MCU創(chuàng)意氛圍賽的作品——高壓電網(wǎng)電流監(jiān)測。本項目基于啟明6M5開發(fā)板用于監(jiān)測高壓三相電流數(shù)據(jù),并對故障進行判斷的設(shè)備,使用了串口、硬件I2C、ADC、OLED等硬件外設(shè),使用瑞薩的FSP3.5版本。
啟明6M5開發(fā)板
	開發(fā)板硬件資源如圖所示:

項目實現(xiàn)
三路ADC獲取三相瞬時正弦波電流信息
正弦波轉(zhuǎn)化為三相電流有效值
判斷三相電是否發(fā)生故障
本地OLED顯示,并上傳云平臺
軟件設(shè)計
本人使用J-Link的SWD接口用于RA MCU的調(diào)試和程序下載,使用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 調(diào)試串口初始化 ESP8266_UART9_Init(); // ESP8266 (SCI9 UART) 串口初始化 printf("歡迎使用野火啟明6M5開發(fā)板 ");
硬件I2C的OLED
使用EBF Module 接口的P505,P506配置硬件I2C,驅(qū)動OLED屏幕
	

使用相關(guān)驅(qū)動初始化后,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();
數(shù)據(jù)采集
使用開口式電流互感器,可選一次側(cè)與二次側(cè)的變比100:1,200:1,500:1,將開口式電流互感器二次側(cè)接入采樣電阻,可轉(zhuǎn)化為電壓值進行ADC采樣。
ADC配置
	

配置ADC掃描參數(shù),賦能ADC通道。在此函數(shù)中設(shè)置通道特定設(shè)置。
/* Enable scan triggering from ELC events. */ (void) R_ADC_ScanStart(&g_adc0_ctrl);
回調(diào)函數(shù)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轉(zhuǎn)換完成標(biāo)志位
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數(shù)據(jù)并轉(zhuǎn)換結(jié)果 */
void Read_ADC_Voltage_Value(double *adcdata)
{
  
            uint16_t adc[3];
  (void) R_ADC_ScanStart(&g_adc0_ctrl);
  while (!scan_complete_flag) //等待轉(zhuǎn)換完成標(biāo)志
  {
    ;
  }
  scan_complete_flag = false; //重新清除標(biāo)志位
        
  /* 讀取通道0數(shù)據(jù) */
        R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_1, &adc[0]);
  /* ADC原始數(shù)據(jù)轉(zhuǎn)換為電壓值(ADC參考電壓為3.3V) */
  adcdata[0] = (double)(adc[0]*3.3/4095);
        
          /* 讀取通道0數(shù)據(jù) */
        R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_2, &adc[1]);
  /* ADC原始數(shù)據(jù)轉(zhuǎn)換為電壓值(ADC參考電壓為3.3V) */
  adcdata[1] = (double)(adc[1]*3.3/4095);
        
          /* 讀取通道0數(shù)據(jù) */
        R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_3, &adc[2]);
  /* ADC原始數(shù)據(jù)轉(zhuǎn)換為電壓值(ADC參考電壓為3.3V) */
  adcdata[2] = (double)(adc[2]*3.3/4095);
        
}
計算出電流有效值
/******************************************************
函數(shù)名稱:    getrms
描述:        遍歷查找電流樣本點,得到極致點序列,計算出電流有效值
輸入:        iphase:電流樣本數(shù)組
                SAMPLE_N:電流樣本數(shù)據(jù)點數(shù)
                
輸出:    
返回:        電流有效值
******************************************************/
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++; 
    }
 }
// 創(chuàng)建新數(shù)組,放置查找結(jié)果
float changeSignSeq[changeSignCount];
     float max = 0;
    float min = 0;
for(int i = 0; i < changeSignCount; i++) 
 ? ? ? ? ? ? ? ?{
 ? ? ? ?changeSignSeq[i] = phase[changeSignIndex[i]];
 ? ? ? ? ? ? ? ? ? ? ? ?if (maxchangeSignSeq[i]) {
            min=changeSignSeq[i];
            }
            
  }
        //得出電流有效值
        if(fabs(max)>fabs(min)) {
        return (float)(fabs(max) * 0.707);
        }
        else {
        return (float)(fabs(min) * 0.707);
        }
} 
電流故障類型判斷
/******************************************************
函數(shù)名稱:    changesign
描述:        電流故障類型判斷
輸入:        Aphase,Bphase,Cphase三相電有效值
                    maxphase理論最大電流
                                    
輸出:    
返回:        錯誤類型
******************************************************/
int GetCableFaulttype(float Aphase,float Bphase,float Cphase,float maxphase)
{
    int Fault;
        
    if(Aphase100||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,//接地網(wǎng)脫落 GROUND_OK = 6//正常
一般使用4G模塊,也可使用本開發(fā)板上板載的ESP8266
實現(xiàn)效果
沒有實際接入高壓電,ADC通道1,直接接入函數(shù)發(fā)生器生成的50HZ正弦波3.3V波峰,有效值為3.3*0.7.7=2.3331V,故障狀態(tài)6表示正常。
	

	
	審核編輯:劉清
- 
                                電流互感器
                                +關(guān)注
關(guān)注
23文章
835瀏覽量
33448 - 
                                I2C接口
                                +關(guān)注
關(guān)注
1文章
149瀏覽量
26376 - 
                                電網(wǎng)電流
                                +關(guān)注
關(guān)注
0文章
3瀏覽量
6276 - 
                                ADC采樣
                                +關(guān)注
關(guān)注
0文章
134瀏覽量
13508 - 
                                OLED顯示
                                +關(guān)注
關(guān)注
1文章
57瀏覽量
17404 
發(fā)布評論請先 登錄
【精品合集】瑞薩RA4M2物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計挑戰(zhàn)賽作品合集
瑞薩RA MCU創(chuàng)意氛圍賽——作品制作記錄
【瑞薩RA MCU創(chuàng)意氛圍賽】3. 硬件I2C驅(qū)動OLED顯示漢字
高壓電的原理和用途 圍墻高壓電網(wǎng)原理
什么叫特高壓電網(wǎng)
開發(fā)活動 | 野火&電子發(fā)燒友【瑞薩RA MCU】創(chuàng)意氛圍賽第一期已開啟
    
直播預(yù)告 | 6月8日 RA6T2電機板新品發(fā)布會&RA MCU創(chuàng)意氛圍賽說明
    
基于瑞薩RA MCU的簡易智能養(yǎng)花系統(tǒng)設(shè)計
    
          
        
        
分享瑞薩RA MCU創(chuàng)意氛圍賽的作品—高壓電網(wǎng)電流監(jiān)測
                
 
    
    
    
    
    
           
            
            
                
            
評論