|
本帖最后由 超級狗 于 2014-3-6 12:20 编辑 : K% ^1 P O j5 T5 ]7 R
1 A. ~4 [' A+ R6 ^3 P3 B1 ?您這個問題應該是取樣時,有時取樣到 PWM 正在充電的狀況,有時取樣在 PWM 未充電的狀況造成的。
; p, L2 g2 l5 R5 P8 `$ ~
. v9 c% Y: K# m5 x% p軟硬件需要和 PWM 做同步(Synchronization)!0 |, Q( s+ n4 s7 e) N% @
" _* Q z3 |" f& b% I+ z6 f0 R
- MCU 內部 PWM 如果能觸發中斷(Interrupt),在 PWM 關掉充電線路時再去偵測電池電壓。
- PWM 不能從 MCU 內部觸發中斷(Interrupt),但外部有能觸發中斷(Interrupt)的管腳,把 PWM 訊號拉回該管腳觸發中斷(Interrupt)也行。
- 上述兩者都沒有的話……………假使 MCU 速度比 PWM 快很多的話,將 PWM 訊號拉回一個輸入(Input)管腳,然後用詢問(Polling)的方式應該也可以。
- 如果 PWM 是 Timer + GPIO 產生的,那就更簡單了。你知道什麼時候 PWM High/Low,那樣軟件會更容易許多。
- MOS 管開關需要時間,關掉充電之後電池電壓也會緩慢下降,所以盡量想辦法取樣在中間或後段,取樣值會更穩定且精準。意思就是說,中斷(Interrupt)觸發後延遲(Delay)一段時間再取樣,或是 Timer + GPIO 方式在打開充電前做取樣。
3 T' x: ^) r% f& J- x* L m) p
6 M- A. L( j+ K4 s& v7 P5 ]8 `) w W( T4 q" @0 f
其實咱家是做硬件的,回答這問題已經有點拚了。$ X9 N% [5 {* \. n
7 c7 {* O! T, y6 T8 z在其他專家面前班門弄斧,見笑了!
! d1 D3 |1 i6 F& i
, f e: v" E; ?, K0 m3 ] |
|