2016年12月11日日曜日

コンパレータ―をつかってみる。(前回の続き)

前回の記事のつづき。

前回の記事で触れた通りで
コンパレータ―は電圧を比べる機能を持っている。
カンが良い人もいるかも知れないけど、
比べて上回れば出力されるという事出力が0or1、つまりはONとOFFという事になる。
そう、じつはコンパレータの入力部はアナログだけど、出力されるのはデジタルなんだ。
つまり、コンパレータはアナログとデジタルの境界にある物なんだね。アナログフロントエンドの最後に使われるADCにも、コンパレータが入っている。ただ、コンパレータを沢山つかうと言うケースは中々ないのであまり登場しない。もちろん設計の仕方やリソースが減ってくると使う事もあるので知っていて損はないだろう。

さて、今回はADCを使ってみたときに使った温度センサー(LM61BIZ)
コンパレータ―で温度の検出をしてみる。このセンサーは0℃の時に600Vを出力して
1℃あたり10mV増減する。
よってこのセンサーは600mAXmAの電圧値が出力されるという事になる。
目標とする温度の電圧が用意出来れば、センサーの電圧を比較して
センサーの電圧値が上回ればその温度以上ある事が分かる。
つまり、目標の電圧とセンサーの電圧をコンパレータで比較してHIGH(ON)になれば
その温度以上ある事がわかる。

それではやってみよう。
今回は前回と比べてかなり単純。
温度センサーとコンパレータをつなげて、ある温度以上になったら
LEDが光ると言うのをやってみる。

アナログのコンポーネントの中から、コンパレータと
VDACをドラッグアンドドロップしてトップデザインへ入れる。



トップデザインに入れるとこんな感じ。

コンパレータ―のコンポーネントを開いたら、



Speedの項目のラジオボタンをFastに設定をして、Syncの項目のBypassを設定する。


出来たら、OKをクリックして閉じます。
今回はVDACの電圧設定がキーになる。
温度センサーに触れてしばらくしたら、LEDが光るようにしたいので
あまり高い電圧設定ではLEDが光ってくれない。かといって電圧が低くて光りっぱなしでは
テストにならない。と言うことで私の本業の知識から引っ張り出すと、
指の温度は個人差が多少なりともあるが28℃位を超えるかあれば
コンパレータのテストになるだろう。
なので、今回は600+28*10=880mAに設定をすれば良さそうだ。

設定が出来たらOKをクリックして設定を閉じよう。
ここまで出来たらコンポーネント同士を接続しよう。
記事の冒頭で書いた通り、コンパレータ―はアナログとデジタルの堺になる。
つまり、コンパレータは入力側のピンの種類がAnalogPin
出力側のピンがDigitalPinを接続する事になる。
なので、今回はこのようにつなぐことになる。


これが出来たら使うピンの設定をしよう。
オペアンプの時と比べ、コンパレータ―は内部のリソースに余裕があるので
どのピンでも問題は特にない。しかし、デジタル専用のPort12は使えないので注意が要る。
光らせるLEDのピンは基板についているLEDを使いたいのでP2[1]にしておくと良いだろう。
わたしはこんな感じ。

ここまで出来たら、コンパイルをしよう。
コンパイルをしている間に、センサーとPSoCをつなげよう。

つなげられたらプログラミングをしよう。今回も単純。
コンパレータ―と比較対象のVDACのスタートを書いておしまい。
int main(void)
{
    CyGlobalIntEnable; /* Enable global interrupts. */

    WaveDAC8_1_Start();
    Opamp_1_Start();
    VDAC8_1_Start();

    Comp_1_Start();
    VDAC8_2_Start();

前回のプロジェクトを引き継いでいるのでWaveDAC云々があるが必要なのは2行だけ。
Comp_1_Start();
    VDAC8_2_Start();

ここが書けたら、もう一度コンパイルをしてPSoCへ書き込んでみよう。
書けたら、温度センサーに触れてみよう。
しばらくしたらLEDが光れば成功だ!!
(/・ω・)/

全2回をつかってアナログ回路の始めの方をしてみた。
実際のアナログフロントエンドでもアナログ回路の基本的な使い方を組わせてほしい機能を実現している。
PSoC3,PSoC5LPにはプログラム側から倍率の変更が出来るオペアンプや
電流値として出力されるセンサー等に対してADCが使えるように電流電圧変換アンプもある。
上手に使えば、ワンチップでアナログフロントエンドが出来てしまうでしょう。
また、オペアンプやコンパレーターを工夫して取り入れることで今回のように
CPUを使わないことで並列処理の様なシステムも組める。
なのでプログラミングに自信が無い人もアプローチを変える事も考えてみると良いでしょう。

0 件のコメント:

コメントを投稿