電子工作etc


■LC発振(PIC内蔵コンパレータ使用)
  ★概要
    コンパレータを内蔵したPIC16F88を使用して、LC発振回路の実験をして見ました。
    用途としては、LCメータ等への応用が考えられます。

  ★実験内容
    コイルとコンデンサを並列に接続したときの、共振周波数は、次式で求めることが出来ます。

    <共振周波数(F)を求める計算式>
     

    <コイル(100uH)とコンデンサ(1000pF)>
     ※このコイルとコンデンサの共振周波数は、503,292Hzになります。
     

    PIC16F88は、コンパレータを2個内蔵しており、モード設定することにより、コンパレータの入力(+、−)
    および出力の3端子を、PICのピンに外出しにすることができるので、これを使用します。

    <モード設定後の回路>
     ※今回は、コンパレータ(C2)を使用します。
       ・コンパレータの入力(+) → PIC16F88のRA2ピン(1ピン)
       ・コンパレータの入力(−) → PIC16F88のRA1ピン(18ピン)
       ・コンパレータの出力    → PIC16F88のRA4ピン(3ピン)
     

    <プログラム>
     ※処理としては、内蔵モジュールの設定をするだけです。

void  main()
{
  OSCCON = 0b01110000;  //クロックを8Mhzに設定する。
  ANSEL = 0b00000000;  //A/D変換は使用しない。
  CMCON = 0b00000110;  //コンパレータを使用する。
  TRISA = 0b11101111;  //I/Oポートを設定する。
  //
  while (1) {
    //何もせず無限ループします。
  }
}

    比較のために、手持ちのオペアンプ(コンパレータ)「LM339」でも、同様の実験をしてみました。

    <LM339の概観とブロックダイアグラム>
      

  ★回路図
     

  ★実験結果
    PIC内蔵コンパレータを使用したときの結果です。
    L=100uH、L=1000pF
    発振周波数(実測)=503,555Hz、発振周波数(計算上)=503,292Hz、誤差=0.05%
     
     
    PIC内蔵コンパレータを使用したときの結果です。
    L=100uH+3.3uH、L=1000pF
    発振周波数(実測)=495,374Hz、発振周波数(計算上)=495,188Hz、誤差=0.04%
     
    PIC内蔵コンパレータを使用したときの結果です。
    L=100uH+100uH、L=1000pF
    発振周波数(実測)=355,524Hz、発振周波数(計算上)=355,881Hz、誤差=0.1%
     
    PIC内蔵コンパレータを使用したときの結果です。
    L=100uH+240uH、L=1000pF
    発振周波数(実測)=273,840Hz、発振周波数(計算上)=272,948Hz、誤差=0.3%
     
    比較のために、オペアンプ(コンパレータ)を使用したときの結果も掲載します。
    L=100uH、L=1000pF
    発振周波数(実測)=507,983Hz、発振周波数(計算上)=503,292Hz、誤差=0.9%
     
     

    PIC16F88に、更に、周波数カウンタの機能を搭載して発振周波数を求め、その得られた周波数からコイルの
    インダクタンスを求める計算式を組み込めば、コイルのインダクタンスを自動的に求めることが出来ます。
      L=1/(4×π×π×F×F×C)

    例えば、上記の結果で、(100uH+3.3uH)の時の発振周波数の実測値は(495,374Hz)なので、これを
    上記の数式に当てはめると、103.2uHとなり、ほぼ正確な結果を得ることが出来ます。
      103.2uH≒1/(4×3.1416×3.1416×495,374Hz×495,374Hz×1000pF×(10^−12))

    この時に、100uHに直列に接続した、3.3uHのコイルが未知のコイル(Lx)であった場合には、
      Lx=L−100uH
      3.2uH=103.2uH−100uH
    として求めることが出来ます。

    如何ですか?
    今回の実験結果から、「高精度Lメータ」の実現性が高くなりましたね!{^_^}!


電子工作etc