欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 請教STM32單片機測試交流電 [打印本頁]

作者: c8t6    時間: 2024-9-10 15:01
標題: 請教STM32單片機測試交流電
各位大佬們。目前本人電路采用了ADS8689的AD采集芯片。目前測試的直流電壓都是可以的。在測試到交流時遇到了麻煩;
在測試交流時,得到的AD值一直波動,用了目前用均值濾波,還是達到不了效果
請問有什么辦法么

作者: donglw    時間: 2024-9-10 20:30
測交流電通常使用真有效值芯片AD763,它在多款數字萬用表中得到應用。
AD736.pdf (217.81 KB, 下載次數: 8)
作者: carpcarey    時間: 2024-9-11 09:26
可以直接用STM的ADC采集啊,1%精度還是可以滿足的。原理是每個20ms內均勻采集64個點(每秒3200個adc),再多就要看MCU任務重不重了。根據這64個點計算RMS值(可以用均方根或FFT)。
作者: ppcbug    時間: 2024-9-11 10:14
有 一種電力系統 用的 專門的 [計量芯片] , 可以極為方便直接輸出轉換后的值, 接口 UART 或 SPI .
唯一問題是, 好像僅適用于 50HZ 工頻交流電。
例如:
HLW8110 / HLW8112
作者: coody_sz    時間: 2024-9-11 11:54
使用20KHz采樣,采樣時間為20ms的整數倍,計算均方值。
作者: icefree    時間: 2024-9-11 12:27
樓主既然測交流還不讓電流變動,那是要測什么呀,RMS? 這個是要采集的數據計算出來的,不是這個ADC直接采出來的
作者: c8t6    時間: 2024-9-11 17:32
感謝各位的解答。目前問題暫時解決,用的是EWMA濾波公式
把得到的ADC都減去零點值,取他們的平恒值
/**********************************濾 波**********************************************/
float alpha = 0.9;         // 初始濾波系數
float blpha = 0.9; // 初始第二次濾波系數
float min_alpha = 0.1; // 最小濾波系數
float min_blpha = 0.1; // 最小第二次濾波系數
float alpha_decay = 0.1; // 系數衰減步長
float blpha_decay = 0.1; // 第二次系數衰減步長

float filtered_value = 0, red_value = 0; // 初始化濾波值
float previous_value = 0; // 存儲上一個值,用于計算變化量

/************************************************************************/
// EWMA濾波公式
int process_integer_data(int new_value)  
{
        // 計算當前值與上一個值的差異
        uint16_t change = fabs(new_value-previous_value);
        previous_value = new_value;
       
        // 動態調整濾波系數
    if (change < 0.1) { // 假設小于0.01表示穩定
        alpha = 0.09;
        blpha = 0.09;
    } else {
        alpha = 0.8; // 可以增加一些系數以便于快速響應變化
        blpha = 0.8;
    }

    // 應用濾波
    filtered_value = alpha * new_value + (1 - alpha) * filtered_value;
    red_value = blpha * filtered_value + (1 - blpha) * red_value;

        return (int)(red_value + 0.5); // 返回濾波后的值
}




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1