|
|
本帖最后由 超級狗 于 2014-3-6 12:20 编辑 / o) h& \$ J* H- P5 g- V
$ s: p3 Z5 E$ F. u; n: U
您這個問題應該是取樣時,有時取樣到 PWM 正在充電的狀況,有時取樣在 PWM 未充電的狀況造成的。
0 U0 O$ J: m. x7 H: ]$ a0 i8 V) t h1 k8 }3 ^2 ~8 o3 g' N
軟硬件需要和 PWM 做同步(Synchronization)!% P* r9 g2 ?6 m$ E# Z
( l& H( T5 n7 I7 V& K1 S, V
- 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 方式在打開充電前做取樣。
+ `6 y, F4 g5 ^; g, |" | ; H2 w. g1 Q/ o
8 U% Y4 d/ F P: [8 F! C: e
其實咱家是做硬件的,回答這問題已經有點拚了。/ M$ W$ v( c1 O+ D" Y) U
) ~- _) |! }, d9 b9 {
在其他專家面前班門弄斧,見笑了!
( E8 x) _5 T/ J* K, \' ~+ h# u( T; b, C
 |
|