SSブログ

電圧・電流・電力メータ [電子工作一般]

vaw_meter.jpg

久しぶりの電子工作ネタです。

かねてから「電圧・電流・電力」を測れるメーターを作りたかった。
売っているのはあったけど高かったのです。
作ろうと思えば作れるので。

しかし、電力を計算するには掛け算が必要。これをアセンブラで書くのはイヤァな感じ。LCD表示も細かい事やろうとするとアセンブラでは結構めんどくさい。
Cで書くしかないかなーと思いつつ、Cは苦手なので手を付けていませんでいした。

重い腰を上げて、Freeで使えるCコンパイラを探しました。有名なのはCCSCですが無料版は無し。買うと高い。探していると、Mikro CというのがPIC対応で(AVR版もある)、無料版は2Kワードまでのバイナリを生成できるようです。これをチョイス。ネットを探しても作例は少ないのですが、HELPと20年近く前にやったANSI Cを思い出しながらコーディングしてみました。Mikro CはANSI-C準拠ということで、「はじC」も役に立つというわけです。はじC、懐かしいでしょ?

手持ちのPIC16F88に書き込みました。8ピンはF675、18ピンはF88を定番にしています。どちらも内蔵クロックを持っていて、A/Dから一通り入っています。

とりあえず数字だけの表示はOK。10bit A/Dして、8bitに削って、10進→ASCII変換して出すだけ。

ほぼ一発でうまくいったので、欲を出して小数点を割り込ませたり(255Vを25.5Vと表示させる)、空いているLCD部分にバーグラフを追加したりといじり始めました。気がつけば夜中の2時近く。

ある程度まではできたのですが、バーグラフのセグメント数を増やしていくとおかしな現象が出始めました。表示はループを使わずに、ステップ数文用意したテキストを全セグメント上書きする方法です。どうせスッカスカなので。

7桁を超えると、違う行の表示文字を壊します。グラフは2行目に出しているのに、1行目の表示を壊します。
8桁を超えるとメモリーを破壊するようで暴走します。LCD表示がフィーバーしています。

8桁までは、4桁、4桁に描画命令を分ければ可能なところまでいきつきました。しかし、8桁を超えるとだめなのです。LCDで空いているところは目いっぱい使いたいのが人情。

何やっても8桁を超える表示は解決しないので、悩んでいてふと思いついたのが変態PICのアドレッシング。ROMもRAMもバンク分けされていて、RAMバンクの先頭付近はスペシャルレジスターが埋め込まれています。また、ROMもバンク毎にアドレスがとびとびになっています。固定テーブルをROMに持つ時は、特にアセンブラで記述するときはバンク超えを考慮しないとうまく動かないのです。

これは完全に予想なのですが、もしかしたら不連続アドレスの問題をコンパイラが吸収していないのではないかと。もしそうであれば、メモリーを破壊するのも納得できます。ようするに、ツールのバグですね。

最近、F88よりも安くリニアアドレッシングとして使えるF1827というチップが出ていて、それを買っていたのを思い出しました。今から考えればF88は当時最強!でしたが、かなり古い部類です。古いからこそ枯れていると思っていたのですが...

F1827に変更しても、F88とピンコンパチでソースコードもA/D関係のレジスタを一部修正するだけでそのまま使えます。4桁単位に刻んでいたテーブルデータもまとめて配列に放りこんで一発描画するように戻し、ビルドして書き込み!

成功!!

やはり、F88(オールドアーキテクチャのPIC)に対して、Mikro Cはバグっているようでした。

あとはアナログ部分を作るだけ。
電圧検出は分圧で。電流検出はハイサイドに10mΩ程度のシャントを入れてOP-AMPで処理して入れてやる。この10mΩの抵抗を手に入れなくてはならないのがネックです。100mΩのセメント抵抗ならたくさん持っているのですけどね。100mΩでは20A流すと2Vロスしてしまうので、ここはなるべく小さくしたいのです。

バーグラフは、1W 2W 5W 10W 20W 30W 50W 70W 100W 200W 300W 400W 500Wと割り当てました。下の方はちょっと荒いですがLogです。

AVRに浮気しそうになりましたが思いとどまりました(笑)

nice!(3)  コメント(6) 
共通テーマ:日記・雑感

nice! 3

コメント 6

ocr

工作ネタ待ってました!磁気センサーで間接的に計測することもできますが,あまり安くはならなそうですね.ここはお手持ちの100mΩ10パラというのはどうでしょう?笑
by ocr (2013-11-28 11:39) 

sawada

10パラ、正直考えました。
次の問題に気がつきました。→どうやってケルビン接続する?
固まってます(笑)

Cも少し扱えるようになってきたので、マイコンを活用した工作範囲が広がりそうです。


by sawada (2013-11-28 15:02) 

ocr

面倒くさいのでいっそ銅線自体を使ってみては?
VVFケーブルなどでよく使われている 1.6mmΦ だと,
計算上 11.7cm で 1mΩ になります.
by ocr (2013-11-29 10:34) 

ocr

ところで私にはアセンブラのほうが「ありえん」(笑)のですが,
高級言語の方があーだこーだ考えなくて済むので
絶対楽だと思いますねぇ.今は Mac でも PIC はできる
みたいですし,前みたいなアドバンテージもそれほどは
ないみたいなので,AVR推しという立場ではなくなりました.
もうちょっと Atmel に気合いがあったらと思いますが,
違う方に目がいっちゃってるみたいですよね.
by ocr (2013-11-29 10:47) 

WPJ

工作ネタ待ってました!。わたしも。

直流の検出。500Wで40A余りの電流となると、銅線の分流器が工作のポイントになりそうですね。

楽しくなりそうです。

by WPJ (2013-11-30 18:19) 

sawada



計測範囲は25V/25Aを最大に想定しています。25.5Vと25.5A。意味はわかりますよね。はい、手抜きです。(笑)
25Aを測ろうとしたとき、0.1Ωのシャントだと最大で2.5Vのロス。10Aで使っていても1Vのロスは見逃せません。
10mΩなら最大で0.25Vのロス。これをOP-AMPで受け取って20倍してやるとフルスケールでほぼそのまま直読できるようになります。単電源で使えるレール・ツー・レールのOP-AMPが必要になりますが。

10mΩのシャントはRSでも買えますが、最大の25A流すと6W強の発熱なんですね。そうすると20Wクラスのシャントを選ぶことになるのですが、RSでは2000円もします。抵抗線の20mΩ 5Wをパラにするのが良いところかな。1個200円。5個単位で1000円。うーむ。
安物の電流計を見てみると、電線を抵抗代わりにしているのをよく見かけます。これかなーなんて思っています。ocr先生の提案通りです。

抵抗線 20mΩ
http://jp.rs-online.com/web/p/through-hole-fixed-resistors/4879197/
by sawada (2013-11-30 19:32) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。