nobchaの電子回路日記ブログ                         2016.04.29

 

PIC16F1827でLCメータ試作(内蔵コンパレータ)@2016,2012

 

1. はじめに 

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

 このLCメータはnobchaの電子回路生活で手始め試作課題として取り組みました。まずはPIC16F88を使用し、フランクリン型発振回路には74HCU04Aを用いました。その次にPIC16F88内蔵コンパレータでフランクリン発振を組み合わせました。カウンタはTMR0とTMR1を使います。

 その次の試作では基板を作成し、PIC16F648AでLCDも4ビットインターフェイスでつなぎました。更に基板そのままで新しいCPUに載せ替えようとPIC16F1827で試作しました。このPIC16F1827はその前に使用したPIC16F648Aとはピンコンパチブルと思って使い始めたのですが、コンパレータの仕様が微妙に違っていました。コンパレータの設定が648Aとは違っているので、ソース記述に違いがあります。

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

 

2. 試作機の仕様は 

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

 

項番 項目 詳細説明
 1 フランクリン型発振回路をPIC16F1827内蔵のコンパレータを用い構成します。参照用C切り替えはTQ2リレーを使います。スイッチで、LCの接続を変え周波数を計ります フランクリン型発振回路を用いてLC回路で基本発振します。
ここで、注意事項はPIC18F648Aのときとコンパレータの仕様がわずかに変わっており、コンパレータ設定が変わります。
次に参照用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 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. クロックは内部8MHzとします。

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

 

  

 回路図ではL1が22μHとなっておりますが、実際は100μHを採用しております。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

なお、コンパレータ部分の接続は次のようになります。

  

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

4. 回路実装・基板

 基板はPIC16F648A用に作成した基板を流用しました。

 

ケース正面 

 

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でコンパイルしました。

 

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

番号 処理ステップ 内容 画面表示例
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側に倒して、CAL後画面が右です。この画面の表示数字の意味ですが、次のようになっています。F1:100pFと100μHの基本回路で530kHzです。下段の370はF2であり、基準用コンデンサ1000pF±5%を並列に入れたら、370kzになりました。そして、ストレーC,Lも加味した基本回路の1000pfは950p、100μHは94.9μHと計算され、今後のF3演算時の基準になります。

 

 

 

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

 

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

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

 ところで、PIC16F1827のコンパレータによる発振開始が安定しません。PIC16F648Aの時は電源投入一発でCALができましたが、PIC16F1827では発振が安定して開始しない場合があり、何度か電源をいれなおしたり、追加したリセットスイッチを押したりせねばなりません。これは原因課題となっています。

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 4DIGITのTOPへ       WEB目次へ 戻る 

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

inserted by FC2 system