[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/