|
本帖最后由 超級狗 于 2014-3-6 12:20 编辑
# y7 J$ k, B" N
% s* R- A4 v8 P, ]' }, D7 @" R您這個問題應該是取樣時,有時取樣到 PWM 正在充電的狀況,有時取樣在 PWM 未充電的狀況造成的。7 k. s( n/ F" ~* F4 @
! r* c' j8 Q+ z
軟硬件需要和 PWM 做同步(Synchronization)!
7 h: G8 k, [2 W* A+ ^
; e. n4 U1 y' r' n' H- 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 方式在打開充電前做取樣。
( W q* ?' k1 W2 Y( ~ . ]2 h, Q5 u0 [/ E
4 a7 M" I1 C; m
其實咱家是做硬件的,回答這問題已經有點拚了。
7 o+ t. g5 C3 R5 {2 K
; P: f% Y8 D/ ~/ A" R" d8 l在其他專家面前班門弄斧,見笑了!; ~( L& E0 o7 _/ d- z
' L7 W) k, r, l
|
|