規格是用來量機器傾角。
設定讀值最大為2G,回傳值是16位元有號數。
所以值會是32767~-32768。因為有三軸,平時會量到重力。
期望重力上的軸會出現一個16384或是-16384的值。
數值上以Q值來計算,就完全不需轉成浮點。
以1G acc為單位來看,直接採用Q15格式就完全符合1G的使用。
有夾角計算,三角函式應是會用上。
實驗時只有簡單寫成單軸值檢知,一但絶對值小於0.707,就是超過45度。
所以造了一個Q16格式的cos表格,依設定角度值取cos值,加速規和表格移位到同單位Q值一比就結束。
然後是任意角度傾角計算。要先記住啟動時的三軸值。
然後又是三角函式了。這裏用的是向量內積計算,向量內積值有夾角cos的值在內。
因為已是低頻省電下的計算,計算力有限。就當成1G重力下角度計算,不用去算向量長度。
直接就是啟動時重力向量值及現在的重力向量值內積(只有乘加法計算),再移位到同單位Q值,和cos表比對,程式完成。
第一次寫程式計算力小時8051,省電下的計算可以在整數系統內完成這個任務。
沒有留言:
張貼留言