2016年1月28日 星期四

LC Meter ---- 程式設計之公式




計數與計時

  • 如何測量頻率 --- 測量固定周期數的時間,這需要用到計數與計時。在相同的system clock,計數周期數越多則測量的解析度越高,其結果也越精確,但量測的時間就越久。
  • 計數 --- 使用Mcu內建 TIMER0 (8bits) 作為計數LC諧振周期,並且將預分頻器(Prescaler)設為1:256。所以最多可計數:
  • 計時 --- 使用Mcu內建 TIMER1 (16bits) 作為計時器,預分頻器(Prescaler)設為1:1,並且設一8bits的變數作為計數 TIMER1 溢位次數。TIMER1的時鐘速度為 4MHz / 4,故;最長的計時時間為 :(實際上只需用到約4.2sec)
  • TIMER0 與 TIMER1 --- 如下圖,TSTOP - TSTART = LC週期時間*65536(usec)



改寫諧振公式

校準與公式一篇所推導出的公式均以頻率(Hz)為運算元,現將頻率換算為週期時間(sec)並改寫公式。
  • 設:f1 的週期時間為 t1,f2 的週期時間為 t2。

帶入以下公式。
  • formula (a)
  • formula (b)
  • formula (c)


技巧

  • 設 T1與T2 為 t1與t2 的65536次週期時間 ( 註:T1與T2 的單位是 usec ),則
帶入 formula (a)(b)(c),並化簡。
  • 由 formula (a) 改寫為 formula (a1)
  • 由 formula (b) 改寫為 formula (b1)
  • 由 formula (c) 改寫為 formula (c1)


浮點運算

由於二進制浮點數(float)不能表達所有的實數 (參考 : Wiki ),只能表示最接近的可表達數。即;浮點數及運算可能存在誤差,但這些誤差量必定趨於最小。例如:將某一存在誤差的二進制浮點數轉為十進制,其誤差部分必定在於十進制數的最右邊。
故;formula (a) 與 formula (b) 必須再改寫,期使減少浮點運算的誤差。
  • 由 formula (a1) 改寫為 formula (a2) 
  • 由 formula (b1) 改寫為 formula (b2) 


常數

formula (c1) 的尾部是一段常數。這常數可預先計算帶入算式,這樣可以免去一些Mcu運算工作。
設 常數為 ARG3
  • 由 formula (c1) 改寫為 formula (c2)



減少Mcu運算

formula (a2)、(b2) 與 (c2) 中的 T1、ARG3與C,均在校準時可得知。為免去後續量測時重覆計算相同的運算,故將公式中的部分修改如下。
  • 設:
  • 由 formula (a2) 改寫為 formula (a3)
  • 由 formula (b2) 改寫為 formula (b3)
  •  由 formula (c2) 改寫為 formula (c3)

沒有留言:

張貼留言