PIC三昧(8) アナログ・コンパレータを使ってみる、PIC16F18855

Joseph Halfmoon

前回はZCD(ゼロクロス検出器)で割り込みかけてみました。今回はアナログ入力電圧2つを比較する内蔵コンパレータを使ってみます。なにか基準電圧を上回ったら信号を出力したりできるもの。結果で割り込むことも可能ですが、直接外部出力信号とすることも可能。外付けオペアンプなど不要で済むのはありがたいかも。

※『PIC三昧』PIC関係の記事総目次はこちら

PIC16F18855のデータシートの?な点

手元のデータシートはDS40001802Dという番号のデータシートなのですが、そのコンパレータのところに1点よくわからぬ表があり。以下引用させていただきます。DS_CMP

上記をみるとコンパレータは5個搭載しているように見えるのですが、他の文書、そしてMPLAB X IDEのMCCから見えるリソースは2個だけであります。2個のところに黄色でマーカを引いたのは私です。手元の文書が古いの?

MCC Classicを使ってコンフィギュレーション

さてMicroChip社MPLAB X IDEの誇る自動コンフィギュレーションツールMCC(いつものようにClassic版)を使ってPIC16F18855搭載の(アナログ)コンパレータを使用するためには、Device Resourcesから対象リソースをProject Resourcesへ取り込む必要があります。コンパレータのところを開くとこんな感じ。

CMP_Dresources

2個あるコンパレータのうち、CMP1の方を「+」してみた後、ピン・マネージャを眺めるとこんな感じでした。CMP1pins

CMP1の入力端子のうち+側の端子はPortAの2か3限定なのね。キビシー。今回使用しているEVAボードでは、PortAの0/1/2/3にはLEDが取り付けられており使用は避けたいデス。そこでCMP2に変更してみました。

CMP2を「+」した後ピンマネージャを眺めれば以下の如し。+側の端子が一本PortBの0番端子にアサイン可能。‐側の端子もPortBの1番にアサイン可能であります。CMP2pins

上記のように入力は2端子ともボード上フリーで使えるPortBの0番1番にアサインしました。コンパレータ出力はというと上記のようにPortAの0番としてみました。PortAの0番にはEVAボードのLEDが接続されているので、アナログコンパレータ出力を直の信号としてLEDで観察することが可能であります。

ついでにPortAの3番を「いつものLチカ」用に確保。

コンパレータの設定が以下に。今回割り込みは用いないのでチェックしてません。出力は正相、ヒステリシスあり(データシートみるとティピカル25mV程度のヒステリシスとのことです。)CMP2_setting

上記設定後、Generateボタンを押してソースを生成しました。

自動生成されたソースに書き込むのはLチカ部分のみ

自動生成ソースによりコンパレータのハードウエア設定が成され、後はハードが勝手に動作してくれるので、main()関数側で殊更に何かする必要はありません。それでは寂しいのでmain側でいつものLチカさせてます。コンパレータの動作とはまったく無関係にソフトでLチカを続けると。

void main(void)
{
    SYSTEM_Initialize();
    while (1)
    {
        RA3 = 0;
        __delay_ms(500);
        RA3 = 1;
        __delay_ms(2000);
    }
}
実験用の回路

以下に実験に使った回路を掲げます。青の点線内がEVAボード搭載部分のうち今回関係する部分です。点線の外側が外付け部品でブレッドボード上に構成した部分です。

CMP_DUT_Schematic

実験結果

まず端子RB1(コンパレータのマイナス側端子)に接続している抵抗分割で作った「参照電圧」の測定値が以下に。電源電圧3.3Vのほぼ2分の1の電圧が予定どおりに観察できてます。Vminus

つづいて、RB0に接続した可変抵抗から出力される電圧の読み値[V]です。以下の状態は可変抵抗を操作してコンパレータ出力のLEDが非点灯状態のほぼほぼ最大値っす。VplusOFF

つづいて、可変抵抗を操作してコンパレータ出力のLEDが点灯する最小値ギリギリの値です。こんな感じ。VplusON

だいたい1.6Vならコンパレータ出力OFF、1.7Vならコンパレータ出力ONっていう感じね。

実機動作の様子が以下に。CMP_DUT_EC

今回はコンパレータの入力も出力も外部直接だったけれど、内部で接続できるものもいろいろあるのよ。そいつらはまた次回以降だな。

PIC三昧(7) Zero-Cross Detection(ZCD)、PIC16F18855 へ戻る

PIC三昧(9) FVR(固定参照電圧源)を使ってみる、PIC16F18855 へ進む