nobchaの電子回路日記ブログ                         2012.12.15, 2014.12.22R,2015.07.25R

 

PIC16F648AでLCメータ試作(内蔵コンパレータ使用)@2015,2012

 

1. はじめに 

 このLCメータはフランクリン型発振回路でLC発振させ、その周波数をカウンタで計り、参照用コンデンサ(精度が良いものを使う)値を元に計算し、測定LあるいはCの値を算出するという方式です。今までCQ誌発表のもの含め、PIC以外のマイコンでもたくさんの方が移植、追試されています。またキットでも売られています。(後閑本”PIC16F1ファミリ活用ハンドブック”でもPIC16F1936を使って試作されました)

 nobchaの電子回路生活で手始めの試作課題として取り組みました。まずはPIC16F88を使用しました。フランクリン型発振回路には74HCU04Aを用いましたが、その次にPIC16F88内蔵コンパレータを組み合わせました。カウンタはTMR0とTMR1を使います。今回試作では基板を作成し、LCDも4ビットインターフェイスでつなぎます。

 このLCメータの特徴はマイコンが得意なカウンタ機能を用い、更にPIC内蔵のコンパレータでフランクリン発振回路を構成するところです。測定には基本LC回路での発信周波数、参照用コンデンサ並列による発振周波数と、被測定L直列あるいはC並列による測定発振周波数を順次切り替え取得します。得られた周波数を元に式を解くと値が計算できるというPIC向きな自作測定器です。参照用コンデンサを並列にして発振させ比較するため、回路のストレー容量などの浮遊インダクタンス誤差分が打ち消されるような仕組みなので、測定誤差は参照用コンデンサの誤差になるという原理も測定精度が結構良い結果を得る要因です。(厳密に言うとそれ以外のいくつかの誤差要因は残されていますが・・) 詳しくは6.計算法で説明します。

 

2. 試作機の仕様は 

 LCメータ仕様は次の通りです。

 

項番 項目 詳細説明
 1 フランクリン型発振回路をPIC16F648A内蔵のコンパレータを用い構成します。参照用C切り替えはTQ2リレーを使います。スイッチで、LCの接続を変え周波数を計ります フランクリン型発振回路を用いてLC回路で基本発振します。次に参照用Cをリレーで並列して発振させ、周波数測定します。その2つの測定値を元に被試験LあるいはCを回路に追加して得られる3番目の周波数値から方程式を解いて算出します。算出計算式や使い方は後で詳しく説明します。
 2 Lは1μHから2mH,Cは10pFから0.01μF(基本のLは100μH、Cは1000pF、参照用のCは1000pFとします) PIC内蔵コンパレータ発振回路の安定度、カウンタの測定限度などからこの程度です。カウンタの周波数もついでにLCDへ表示します。
 3 16ビットカウンタからなるタイマー1(TMR1)を使用してゲートタイムを作る LCメータでは大体10kHzから3MHzぐらい計れれば良いので10m秒をゲート時間にします。(1μS*10000カウント)
 4 8ビットカウンタのタイマー0で入力周波数をカウントして256カウントでオーバーフローしたら変数をソフトで加算していく TMR0の入力の周波数応答の関係でTMR0のプリスケーラを1:2に設定して使います。早い周波数だと割込み処理時間が次のカウントアップに影響を与えるのでオーバーフロー監視する
 5 カウンタの処理は割り込みで行います TMR0,TMR1の割り込みを監視してTMR0のときは変数のカウントアップ、TMR1の時はゲート時間終了でカウント値計算表示を行う
 6 MAPLAB+PICKIT2+HiTEC C 開発環境はMPLAB V8.83 HiTECH C PRO LITE V9.83
その後MPLAB X v2.26+XC v1.33で再コンパイル。
 7 表示は1602コンパチLCD(16文字2行) SL1602BSL8などを使います
 8 LCDインタフェイスは4ビットインターフェイス PB4〜7をデータ用、RB0,1はEN, RS信号接続に使用します WEは常にW側にします

 

3. 回路図 
 
 

1.  コンパレータ1をフランクリン型発振回路に使用します。回路構成とパラメータは各種ブログを参考にしました。コンパレータ2の出力はオープンドレインなので、プルアップ。C2outのモードをTRISAレジスタ出力/入力設定へと切り替えることでカウンタTMR0への入力がON/OFF制御されます。

2. RB4-7をLCD4ビットデータに、RB0,1をEN、RS信号に割り当てます。RA7はC/CALモード切替スイッチ入力、RB3は参照用C接続用リレー駆動です。RA6は動作表示用のLEDへ接続されます。

3. 電源は12Vアダプタからの給電とし、5Vの3端子レギュレータで受けます。

4. クロックは内部4MHzとします。

全体回路図を次に示します。

 回路図は水魚堂さんのBSchを使いました。また関連記号類も利用させていただきます。公開された作者さん達のご努力に感謝いたします。

http://www.suigyodo.com/online/schsoft.htm

4. 回路実装・基板

 回路の実装をPasSを用いて検討しました。

 

 PasSからガーバーデータが取れるので、それを元に基板を作ろうともくろみました。ところが、PasSのルールは両面でもスルーホール無しのため、両面基板を作るデータにはなりません。そこで、この配置計画を生かしてPCBEで入力し基板発注することにしました。基板屋さんはSEEED STUDIO通販が扱うFUSIONです。

 

 ここで間違いが発生。ひとつははんだレジスト層がうまく変換できなかったために、FUSIONにはんだレジスト無しをお願いしましたが、FUSIONはパネタリングが基本なため、はんだレジスト無しとするには逆パターン(前面黒)を出さねばならなかったようです。そのことに気付かず、全面はんだレジストした基板が出来上がりました。おかげで部品はんだつけ前にがりがりせねばなりません。また、抵抗漏れ、リレー駆動電流不足なども発覚しジャンパ、部品追加が必要となりました。次に示すパターンには追加部品、ジャンパも書き入れてあります。

 なお、この基板作成で若干懲り、基板パターン設計はMBEに切り替えました。MBEで設計し、FUSIONへ発注した事例説明は別にまとめております。

 半田付けを行い、組み立てスイッチ端子などを付けた状態の写真です。裏側は半田レジストを削った跡が生々しく残っております。LCDのコネクタは裏からつけます。

PCB表側 裏側 表

 次に手じかにあったアクリルケース(フロッピケース)を加工し収納してみました。電源は12VACアダプタを用います。測定用端子はピンヘッダコネクタの受け部を利用し、L/Cのリード線を指すようにしましたが、2.5mmピッチでは指しにくいので、みのむしを付けました。これならリード線部品ならつまめるので便利です。チップ部品のためにはさらに工夫が必要です。また、回路図にないリセットスイッチをRA5/MCLR端子に追加しました。

ケース正面 上からケース

 

5.部品

 部品表を示します。大体がアキバやポンバシ、あるいはパーツ通販で購入できます。手持ち部品の関係で使用したDIP型リレーは以前秋月で買ったものですが、今は在庫ありません。イーエレさんに在庫があります。

 精密1000pFコンデンサはラジオデパート瀬田無線で±1%を買い求めました。1000pF±5%品でも使えます。秋月電子のフィルムコン1000pF5%などで良いかと思います。

 自己補正方式でプログラムを組んでいますので、インダクタの値は100μHでなくても動作します。基準用コンデンサC6は1000pFとして、プログラムを組んでいるので、変更する際にはプログラムの変更必要です。

 

 ケースとか、切替の2回路2接点スイッチは表に入っておりません。一ひねり考えてご用意ください。

. 計算法 

  このLCメーターではまずはキャリブレーションモードとして基本部分のL+Cによるフランクリン型発振回路で発振させ周波数F1を得ます。続いて値が正確な参照用コンデンサをリレーで並列に追加して発振させ周波数F2を得ます。最後に被測定Cを並列に入れるか、被測定Lを直列に入れて周波数F3を計ります。以上の3段階動作で得た周波数と参照用Cの値から被測定のCあるいはLを算出することができます。

 どのような原理でそんなことができるのか。次に説明します。

 

7. プログラム
 

 プログラムはMAIN部LCD表示部に分けて書いております。_lcd_.hの引きこみ必要です。当初はMPLAB IDEでHITEC Cコンパイラを使用しておりました。今回、MPLAB X v2.26 XC v1.33でコンパイルしました。プログラムをPIC16F648Aにライターで書くのに利用できるHEXファイル(pdfなのでテキスト抽出して使用します)も用意しました。

 

8. 測定手順(この手順はPIC16F88使用LCMの画面を流用しております。PIC16F648Aでは100μH+1000pFなので、発振周波数が約半分の517kHzぐらいになります。)

番号 処理ステップ 内容 画面表示例
1 キャリブレーション 電源ONかリセット時にキャリブレーションモードになり、その旨表示。スイッチがCAL側になるのを待つ
2 基本回路の22μHと1000pFで発振周波数を取得する。これをF1として記憶する

F1が1064.kHz,F2が765.6kHzで計算結果がCは1073pF(表記は1000pFのF級),Lは20.8μH(表記は赤々黒)という値です。

3 リレーをONして参照コンデンサCref1000pFを並列に付加する。そして周波数をはかり、F2として記憶する
Crefを基準にしてF1,F2からC,Lを導出する
4 測定 キャリブレーションが終わるとスイッチの状態が一旦L測定になるのを見極め、その後L測定かC測定かのスイッチ状態により計算処理(LかCか)を選択する

縦型で100と書かれたインダクタ(10μH)が9.1μHとでました。

5 周波数を測定しF3とし、F1,F3,C,Lの値から、スイッチ設定に応じLtestあるいはCtestかを計算し、Ltest値あるいはCtest値として表示する
6 周波数が低いとき(2kHz以下)はエラーにする。またL測定時周波数が低いとmH単位に切り替える。  
 

9. 完成品と実験 

 電源入れたときのCAL後画面が次です。この画面の表示数字の意味ですが、次のようになっています。F1:100pFと100μHの基本回路で517.4kHzです。下段の357.4はF2であり、基準用コンデンサ1000pF±5%を並列に入れたら、357.4kzになりました。そして、ストレーC,Lも加味した基本回路の1000pfは912p、100μHは103.79μHと計算され、今後のF3演算時の基準になります。

またDSO QUADの1:1入力の容量がかなり大きいのでどの程度なのかと疑問視してましたが、今回測れました。145pFもあります。また被測定コンデンサにどんな発振波形が印加されるのかがDS QUADで観測できました。

 

 

 次に精密なコンデンサだという事で以前買った4640pF±1%というフィルムコンを測ってみました。記載の誤差範囲内の観測値が得られました。フィルムコン自体の誤差、LCMの誤差をあわせても1%以内だと言える(大数の法則で・・)と思います。

 更にフランクリン発振回路はどんなレベルで発振しているのだろうかとオシロで観測してみました。コンパレータ1の出力はp−pで2.7Vのきれいなサイン波です。

 コンパレータ2の出力はデジタルになっています。オーバーシュートやアンダーシュートはご愛嬌・・。

 

 手持ちのLC類を測ってみた結果です。

  標準コンデンサーの入れ切れにリレーを使用していますが、これをダイオードスイッチ化してみようとチャレンジしてみました。残念ながら結果は×。発振性能が劣化し、精度が悪くなり、使い物にはなりませんでした。

 

10.謝辞

 電子回路試作情報を各種発表されている方々のブログ、ホームページ情報を参考にしました。感謝します。

 また次のフリーソフトを利用させていただきました。開発された方、普及に協力されている方、提供会社、テンプレートを提供されている方に感謝します。

回路図ソフト 水魚堂の回路図エディタ  http://www.suigyodo.com/online/schsoft.htm

ユニバーサル基板配線CADのPasSを利用しました  http://www.geocities.jp/uaubn/pass/

マイクロチップ社の開発システム及び言語プログラム  http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2879

リニアテクノロジーズ社LTSPICE http://www.linear-tech.co.jp/designtools/software/

JN2AMDさんに追試作成していただきました。その際に気付いて報告いただいた部品表間違いを訂正しました。試作の上、ご連絡ありがとうございました。

 

 

「ご注意」 このWEBに掲載された内容(文面・回路・写真・プログラムなど)には著作権があります。無断転載やコピーは法律に抵触する場合があります。何か疑義ある場合はお問い合わせください。また本WEBに掲載された実験や試作はnobcha個人の趣味で行っております。ここに示す結果の再現性や正確性は保証するものではありません。あくまでも個人の趣味の範囲で参考にしてください。

PIC16FのTOPへ       WEB目次へ 戻る 

アイコンは「牛飼いとアイコンの部屋」から借用ました  http://www.ushikai.com/

inserted by FC2 system