[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

battery and PIU's A/D output



野口@名古屋です.

MG2 DoCoMoを128MB CF環境で運用し始めました.
NiMHの充電池(1.2V, 1550mAh) 2本でNetBSDのままにして毎日帰宅後に
ACアダプタへつないでいたのですが,3日目ぐらいにサスペンドさせた
状態から使おうとしたら電源が入らなくなっていました.
サスペンドさせていない時間は通算で2-3時間というところだと思います.

ACアダプタを付けて,fsckで復帰できるかと思って再度立ち上げて
みたのですが,修復しきれずに/devなどの内容が失われてしまい,
どうやら再インストールしかなさそうな状況です.
ちなみに,ファイルシステムは
  wd0a ... "/"
  wd0e ... "/usr"
  RAMディスク ...  /var/run, /tmp
としていました.
それと,常時挿していたカードは128MB CFだけです.

NetBSDでサスペンドしているとき,ACアダプタをつないでもチャージ分より
消費する分が大きくて充電されてないような感じです.
あとは,かなり前にえびはらさん(かな?)がおっしゃっていた,乾電池
でいきなり電圧が下がってファイルシステムごと壊れる,という現象
も起きたように思っています.


で,インストールし直してもそのままでは同じことの繰り返しに
なるだけじゃないかと思って,PIUのA/Dコンバータの値をカーネル内の
printfで拾ってみました.

MG2 DoCoMoだと
  ch 0: 一次電池(乾電池,充電池)
  ch 1: 二次電池(CR2032)
  ch 2: 不明
となっているようです.

場合ごとのA/D値を挙げておきます.
ゆらぎがあるのでおおよその平均です.値は10進数.
  充電池 ... 1.2V, 1550mAh (メーカ 東芝) x 2本
  乾電池 ... 1.5V,アルカリ(メーカ デュラセル) x 2本
  2次電池 .. 3V, CR2032
また,ACアダプタを付けている/いない によってもA/D値が変わってくる
ようなので,いずれもACアダプタを外した状態の値を採っています.

(1)
- 1次: なし
- 2次: あり(ほぼ新品)
(ch 0, ch1, ch2) = (  50, 980, 380)

(2)
- 1次: 乾電池 (ほぼ新品)
- 2次: なし
(ch 0, ch1, ch2) = ( 870,  30, 380)

(3)
- 1次: 充電池 (フル充電)
- 2次: なし
(ch 0, ch1, ch2) = ( 880,  30, 380)

(4)
- 1次: 充電池 (電源down寸前)
- 2次: なし
(ch 0, ch1, ch2) = ( 550,  30, 380)

PIUのA/D分解能は10ビットですが,MG2 DoCoMoの場合には
ch 0/1とも,0 〜 3V ---> 0 〜 1023 という対応付けではないかと
推測しています.


いきなりapmdevに電圧を見て自動的にサスペンドする仕組みを入れたり
するのはしんどそうなので,せめてPIUのA/D値をuserlandで参照できれば
もう少しで電池切れそうだな,シャットダウンさせなきゃ,ぐらいは
分かると思うのですが,どうやったらいいものでしょう.
PIUに対してioctlとか作っちゃっていいんでしょうか? あるいはapmdev
を経由してというのがふさわしいんでしょうか?


# MGL2のタスクバーでバッテリ残量を表示できるとウレシイなぁ

--------------------------------
Hiroshi Noguchi (野口  宏)
E-mail: ngc@ff.iij4u.or.jp
http://homepage1.nifty.com/driver/