㈠ 單片機如何測量波形的頻率和占空比
1、首先要確定波形是否有毛刺等干擾?
2、其次要確定波形的頻率大概范圍?
3、還要確定波形是周期波?還是任意波?
只有知道這些基本的參數,才可以進行單片機的選型、晶振選型、軟體定時中斷的周期選擇,然後給出相應的思路和方法。
如果波形比較理想,沒有毛刺,測頻率一般採取過零點;
如果波形有毛刺,可以考慮先把毛刺過濾掉,過濾電路或軟體視具體情況而定。
如果頻率比較高,可以設置一個較長定時,比如100ms,500ms,1s等,根據波形頻率選擇,然後在此定時內,統計有多少個過零點,進而得出頻率;
如果頻率比較低,可以設置一個計數器,統計波形兩次過零點之間的計數器的計數值,進而得出頻率。
占空比思路和上面類似,根據統計幅度為0的時長,以及非0的時長,進而求出占空比。
㈡ 如何計算出一個波形的面積的演算法
我有一種思路,那就是用積分中值定理來近似計算一個區間的面積.在計算機中離散的計算兩點或多點間的面積,然後在一段時間內做平均就可以出來波形的面積.
積分中值定理:f(x)在a到b上的積分等於(a-b)f(c),其中c滿足a<c<b。
積分中值定理公式的c怎麼取?這個在數字化波形中,,我們可以用兩點或多點之間取均值、中位數、范圍內隨機數等方法來選取函數在c點的函數值,也就是f(c)=均值、中位數、范圍內隨機數等.
感測器實時採集回來的數據(想表達波形每個點的數據按順序到來這種情況下),我們可以用S=(a*T_last+(1-a)*T)*b和T_last=T這 兩個公式順序計算求取面積.注意:①T_last在第一次計算時可以為0,也可以就等於T;②T表示感測器當前採集回來的值,T_last代表感測器以前的數值.③0≤a≤1,a根據實際情況進行選取或調整,代表感測器以前的數值對此次數值的影響程度.④b是周期,也可以是兩點間的間隔,可以是距離也可以是時間長,也可以是固定選取的某常數,比如我一般就選常數1.
其實有現成的的工具可用,比如labview中就有專門的計算波形平均值、期望值、強度等.MATLAB中也有相對應的函數庫.
簡單易行的方法都或多或少都有誤差在裡面,但是在實驗室外,生活中誤差有時是可以接受的.一定要最求精度的話,可以拜讀下導航路徑計算相關論文或教材.