白話一階數字濾波程式 數學與電學的美妙結合

2021-10-04 09:50:23 字數 1318 閱讀 4878

我們先來看乙個式子(其中ka和kb是個定值,且相加為1)

乍一看,嘿!這個不就是乙個很簡單的式子嗎:

如果u(k)是個電壓值,那麼這一次的計算值就等於這一次採集的值和上一次的計算值按比例分配。

我們憑直覺就知道了,這樣搞一下之後有點類似於取平均值的感覺,有波動的資料搞一下應該會平滑一些。

到這裡有童鞋就要問了,應該歸應該,可這裡面還有個係數呢,你這係數選取肯定有講究,我得去實驗乙個最佳值去~

先別著急去試,其實啊,咱們已經不知不覺中寫了乙個一階低通數字濾波!我們完全可以算出個差不多來

不信?我們來看看

不如先從模擬電路分析開始,下圖是最簡單的rc一階濾波器,e(t)和u(t)分別是濾波器的輸入電壓和輸出電壓,電阻的阻值是r,電容的容量是c。

根據電學原理,列出公式1。

假設mcu每隔乙個取樣週期 ts 進行一次計算,在第k-1個取樣週期輸出電壓為u(k-1),在第k個取樣週期輸出電壓為u(k),輸入電壓為e(k),式子就變成了下面公式:

根據電學原理,濾波器的截止頻率 fc­ 和rc的關係是這樣的:

把它代入到上面的式子,再整理一下:

這不就是我們最初的式子嗎!原來係數與截頻和取樣時間間隔有關呀

聰明的你已經不需要我往下講了,找出干擾訊號的頻率就可以算出係數,再在附近稍加調整就好啦!

k是定值,k也可以是變的:

根據不同干擾設定多個k值就是變頻率一階低通

根據不同情況滑動改變k值就是自適應一階低通

最後展示下成果:

濾波前(摘自網上)

濾波後

一階互補濾波

六軸採集原始資料用的都是16位的adc,所以顯示的數字是從 32768 32768,要看自己選擇的量程進行換算,量程選擇在配置裡面找,比如選擇 250 250量程,那麼 32768 32768就對應 250 250 進行換算就可以了。對mpu6050來說,加速度計對四軸或小車的加速度比較敏感,取瞬時...

一階互補濾波

我們已經知道,mpu6050可以獲得加速度和角速度,但是由於感測器的雜訊訊號比較大,無法直接通過兩個資料來獲得該軸上的角度。因此,需要進行互補濾波來近似得到乙個比較準確的角度。加速度資料,不是很準確,但是趨勢是對的,通過受力分能夠顯示角度變化趨勢,在長期變化來看是可以利用的。角速度資料,加速度積分得...

一階濾波器

一階濾波,又叫一階慣性濾波,或一階低通濾波。是使用軟體程式設計實現普通硬體rc低通濾波器的功能。一階低通濾波的演算法公式為 y n x n 1 y n 1 式中 濾波係數 x n 本次取樣值 y n 1 上次濾波輸出值 y n 本次濾波輸出值。一階低通濾波法採用本次取樣值與上次濾波輸出值進行加權,得...