電圧/電流モニタAmmoniの製作

電源電流モニタ(Ammoni)の製作

[TopPage] -> [PIC] -> [Ammoni]  |   [blog]

1.はじめに
ブラシレスモータを使った電動飛行機の製作(といっても機体はARF)を検討しています。

 ・モータ Hyperion Z-2209(26Turn)
 ・アンプ HP-TITAN-20-P
 ・リポ  PQ-XP1200-2S

の組合せで考えています。

 インターネットで色々調べてみると、ペラの選定では電流測定しながらの選定が必要なようで しかも普通のテスタは内部抵抗が大きすぎて使えないようです。

 セメント抵抗を使って両端の電圧を測定してもいいのですが、後々のことを考えるとRCエレクトロニクスのワッツアップやアストロのワットメータやハイペリオンのEMETERのような電流、電圧、電力を測定できるものが欲しくなります。

 そこでPICを使った簡易ツールを作成しました。


2.特徴
 主な特徴は次のとおりです。
 試しにLiPo2セル(満充電ではない)を放電器で放電した時のデータを測定し、エクセルでグラフにしたのがこれです。
 測定データは15分間程度であればflashメモリに保存できるので、電源を切ってから後でPCに転送でき、楽チンです。(^^)
1)最大測定電流:30A、最大測定電圧:16V
2)電流値、電圧値、タイマのソフトキャリブレーション機能
3)16文字2行のLCD(SC1602BS)に時間、電流、電圧、電力を表示
4)測定中の電流、電圧、電力のピーク値を表示可能
5)RS−232Cで測定データをパソコンへ送信可能
6)RS−232C用専用ICは使用せず通信I/F部はPC側からの電源で駆動
  (消費電流節約と部品費用低減のため)
7)データ送信はリアルタイム送信(1秒間隔)と蓄積データ一括送信(約15分間分まで)が可能
8)蓄積データは電源を切っても消えない(Flashメモリに保存)
9)電源は被測定電池側から供給(約3mA消費)されるので専用電池不要
			
3.製作前の検討
1)内部抵抗は0.01Ω
  →秋葉で見つけた0.03Ω3Wのセメント抵抗を三個並列で使用する。
   9Wとなるので定常状態で30Aまで(瞬時ならその数倍まで可能と思う)。
   測定分解能は10mA程度

          ┏━━━━━━━━┓
   ┌───○──╂────────╂──○─→
  ━┷━     ┃電流測定ツール ┃  アンプへ接続
   ┯      ┃  0.01Ω  ┃
   └───○──╂───VVVV───╂──○─→
          ┗━━━━━━━━┛
2)電圧は16Vまで測定可能(測定分解能は10mV程度)
3)16文字x2行表示のLCD(SC1602BS)を使用し、電流、電圧、電力を表示する。
4)測定データはRS−232Cでパソコンへ送信可能とする。
5)専用の電源は不要とする(電池側から数mA頂き動かす・・なるべく省電力設計する)
6)使用するPICは10bitA/D機能付きのPIC16F88
			
4.回路
 回路図はこちらです。(HEXファイルはこちらから)
 できるだけシンプルな構成としたつもりです(本来ならオペアンプを使用しアナログ系の電源も別にした方がbetter)。

 特徴としては

●PICのA/D入力へはサンプルホールド用キャパシタ充電のために規格上10KΩ以下とのことで常時10KΩで接続すると無駄な電流が流れるため、FETで必要な時だけ接続するようにスイッチングしています。(電圧測定部分)

●PIC16F88のA/D規格は
 ・Vref+ − Vref- > 2V
 ・Vref+ > Vdd − 2.5V
ですが(他のほとんどのPICも同様)、新しいPICは規格外でもそれなりにA/D変換してくれるようです。
 そこで
 ・電流
  解像度を0.05A(ソフトで平均値処理することで実質0.01A程度)とすると
  0.01Ω*0.05A*1024=0.512V ←Vref+
  Vref+は5Vを39K,3.9K+560Ωで分圧→5*(3.9+0.56)/(39+3.9+0.56)=0.513V
  最大電流は0.05*1024=51.2A ・・・しかしセメント抵抗のワット数を超えるので瞬間値
 ・電圧
  16Vまでとすると10K、330Ωで分圧
  16*0.33/(10+0.33)=0.511V
  0.511/1024*(10+0.33)/0.33=0.0156V ←電圧解像度(ソフト処理により実質0.01V程度)

 更に20ms毎の測定値を16回分平均を取ることで解像度を上げている(ノイズ対策でもありますが)

●RS−232Cインターフェース部
 専用ICは使用せずシリアルインターフェースはPC側からの電源で駆動(消費電流節約と部品費用低減のため)
 ノートPCの為、USB→シリアル変換ケーブルを使っていますが、この場合、PC側からの信号電流が非力なため、コンデンサ(C4)に蓄積される電圧は+12Vには至らず4V程度でした。それでも通信はできています。(トランジスタQ2のコレクタへの給電は内部5V電源を使った方がましですが、5V側から電流供給するのは勿体無いのでこのままにしている)

●LCDとの接続部
 LCD側の未使用の下位4ビットは色々調べた結果、グランドには落とさず、未接続にしておく方が良いみたいです(タイムリーというか・・9月号のトランジスタ技術にも同様のことが書いてあった)。その後発見したここに詳細にまとめられていました。

※:使用しているトランジスタ及びFETはたまたま手元にあったものを使っているので他の型番の物でも代用可能(但し、FETがスイッチング用のものを使用)。


5.外観
 放熱効果を考慮し、アルミケースを使いました。大きな穴あけ作業を効率的に行うためにハンドニブラを購入。
 基板固定用のポストはケース側には瞬間接着剤で固定(かなりの強度有り)しましたが、ケースが歪むくらいの不測の力が加わってしまった時に火花が飛ぶのも嫌なので一本だけはネジ止めにしています。

蓋を開いた内部は
こんな感じ
大きなセメント抵抗
SWは接着剤で固定
測定中の様子 SW2でピーク値表示 シリアルコネクタ部


6.使用方法
1) 初めての起動時
 数秒間、起動タイトルと「init:SW1,3」と表示されますので初めて起動した場合は必ずSW1とSW3を同時に押して初期化してください
 初期化する前に「Init? Y:SW2」と表示されますので本当に初期化する場合はSW2を押してください。
 初期化では各種キャリブレーション値やFlashメモリへの書込み開始アドレス等が初期化されます(Flashメモリは書込み回数の上限があるので書込み開始アドレスを固定にはしていません)。

2) メニュー画面
 起動してから数秒後にメニュー画面が表示されます。メニュー画面ではLCDの一行目に「Start Send Set」と表示され、二行目には、電圧値と電流値が表示されます(1秒間隔で更新)
 SW1,2,3がそれぞれ Start, Send, Set に対応します。

3) 測定開始(Start)
 メニューでSW1を押すと測定開始します。LCD画面には経過時間、電力値、電圧値、電流値が表示されます(1秒間隔で更新。内部的には20ms間隔でA/D変換し、16回の測定値から平均を取っています)
 測定中は1秒間隔で測定電圧値と電流値をFlashメモリに保存し、シリアル出力 します。シリアル出力のon/offはPC側のスペースキーを押すことで制御できます。
 測定中にSW1を押すと測定をリスタートし、経過時間がリセットされます。
 またSW2を押している間、測定開始からのピーク値(測定平均値全てのピーク値なのでそれまでに画面表示された値より大きい場合もあります)を表示します。
 SW3でメニュー画面に戻ります。

4) 測定データ一括送信(Send)
 メニュー画面でSW2を押すことでFlashメモリに保存した測定データ(電圧値と電流値)をシリアル転送します。転送中は画面に経過時間と共に「sending」と表示されます。
 保存用にFlashメモリの0x08e0〜0x0fffの領域を使用していますので1824ワードまでのデータが保存可能です。1秒に付き電圧値と電流値の2ワードのデータを保存しますので最大15分12秒間のデータが保存可能です。
 しかし、PICのFlashメモリは書き込み前に消去が必要で、消去は32ワード単位なので保存時間は最悪値としては−15秒の14分58秒となります(flashメモリ内の旧データを先読みすれば良いのですが先読み処理を16ワード以内に収めないと逆効果になる)。
 保存データは電源を切っても当然消えません。(但し、測定中に電源を切った場合は保存されません)
 また、測定中は保存領域をサイクリックに使っているので長時間測定した場合は上書きされます(古いデータから順次捨てられる)
 転送はノンパリティ、8bitで速度は19.2kbps固定です。(最大でも10秒程度で転送終了します)

5) 設定(Set)
 メニュー画面でSW3を押すことで設定画面に移ります。  設定画面では「CAL Volt Amp Time」と表示され、SW1、2,3がそれぞれVolt(電圧)、Amp(電流)、Time(タイマ)のキャリブレーション設定に対応します。
 設定値はPIC内のEEPROMに保存されますので当然ですが、電源を切っても失われません。

6) 設定(Volt,Amp)
 電圧と電流のキャリブレーション画面では、キャリブレーション後の値が画面表示されます。
 画面右上に「Set + -」と表示されているように、SW1,2,3がそれぞれ設定値保存、設定値プラス、設定値マイナスに対応します。
 SW2,3で表示される値を調整後、SW1で設定値を保存します(SW1を押すと「sure? Yes:SW2」と表示されますので本当に変更する場合はSW2を押してください)
 測定中にFlashメモリに保存しているデータはA/D変換の生データに近いものなのでキャリブレーション値を変更するとシリアル転送データも新キャリブレーション値から計算された値になります。
 電圧値と電流値のキャリブレーション値が初期状態のままだとかなりの誤差が発生しますので必ず補正するようにして下さい。

7) 設定(Time)
 タイマ設定は時間精度の調整用です。測定中等経過時間を表示しますが、これは内部割込み処理間隔の20msを元にしています。
 クロックは4MHz動作で割込みタイマは20000(1μs単位)で初期設定されています(CCPモジュールをコンペアモードで使用)。
 PIC内蔵クロックの精度の影響で微妙にずれる場合、補正してください。上記の電圧、電流補正と同様な操作です。タイマ値が画面表示(単位は1μs単位)されますので補正の目安にして下さい。(PIC内蔵クロック精度は温度依存の部分もあります)


[ History ]
 2005/10/10 first published by T.Satoh

[TopPage] -> [PIC] -> [Ammoni]  |   [blog]