明るさを測る_フォトトランジスタとPICマイコン利用

デジタル屏風では、屋外で騒音を計測し、騒音の大きさによりLEDを光らせる騒音警告看板を開発しています。屋外でLEDを光らせるのは、周囲が明るいと効果がないので、周囲が暗いときだけLEDを光らせるようにPICマイコンでコントロールします。フォトトランジスタとPICマイコンを使って、明るさを計測し、暗くなるとLEDを光らせることができたのでその経験を記述します。

◆光センサーの種類

「ラズパイマガジン 2019年2月号」には、光センサーとして①cds、②フォトダイオード、③フォトトランジスターが紹介されています。

①cdsは光を照射すると抵抗値が変化するもので、正確な照度を求めるのには向いていないとされています。

②フォトダイオードは光を照射すると流れる電流が変化するもので、電流の変化量が微弱なため、製品によっては増幅が必要とされています。

③フォトトランジスターは光を照射すると流せる電流の量が変化するもので、電流の変化が大きいため、増幅せずに読み取れるとされています。

本書ではフォトトランジスタの利用を推奨しています。

◆フォトトランジスターの利用

フォトトランジスターとしてNJL7302L-F5(秋月電子で50円/個)を利用しました。データシートによるとこのフォトトランジスターは、分光感度特定が人間の視光特性に近く、広い指向角度を持ったトランジスターとして紹介されています。

注意事項としてモールド面には触れないように、ゴミ、ほこりなど付着なきようにとのこと。モールド面とはトランジスターの上の平たい部分かと推察します。屋外で使うときには汚れないようにガラスのようなものでカバーするようかと推察します。

◆フォトトランジスタとPICマイコンとの連携

「逆引きPIC電子工作やりたいこと事典」(後閑哲也著)では、「明るさを測りたい」という節で、Cdsとフォトダイオードを使った回路が紹介されています。CdsやフォトICダイオードの出力をPICマイコンのオペアンプを使って増幅し、その結果をデジタルに変換して数値を表示するというものです。騒音警報看板の目的は、暗いときのみLEDを光らせるというものなので、デジタルに変化する必要がなく、またフォトトランジスタを使えば、Cdsやフォトダイオードのようにオペアンプで増幅する必要もないのではないかと考えました。そこでPIC16F1778のアナログコンパレータを使って以下のような回路を考えました。フォトトランジスタの出力の電圧をアナログコンパレータの入力(ー)とし、電圧を可変で調整できる10KΩの可変抵抗を入力(+)とし、入力(+)の電圧が入力(ー)より大きくなったらLEDを光らせるというものです。

◆MCCを使ったアナログコンパレータの設定

MCC(MPLAB Code Configurator)では、グラフィカルユーザインターフェースでPICマイコンの設定を行うことができます。今回の設定もMCCで行うことにしました。対象とするPICマイコンPIC16F1778では、既に音を検知して、音が大きければLEDを光らせるという機能を一つのオペアンプと一つのアナログコンパレータで構成しています。PIC16F1778では複数のアナログコンパレータを利用することができるので、アナログコンパレータを一つ追加し、合計2個にすることにしました。オペアンプ一つとアナログコンパレータが一つ実装された状態では、下のスクリーンショットの右側にしめされるようにピンが配置されています。この状態でDevice ResourcesペインのComparatorのCMP2のプラスをクリックします。

すると、CMP2がProject Resourcesペインに追加され、CMP2のHardware Settingsが画面が現れるので、Positive InputとNegative Inputをそれぞれ指定します。CINxxがPICのPINを表し、OPAがオペアンプを表すなど、アナログコンパレータで種々の比較対象を指定することができます。

Positive InputとNegative Inputを指定すると、MCCが自動的にピンを割り当て、PIN Moduleを表示すると以下のようになります。CMP2のINPUT(+)とINPUT(-)がピンがアナログモードで追加されています。CMP2のOUTPUTがなかったので、画面下のPin Manager:OverViewで適切なピンを選定しました(ロック解放状態からロック施錠状態に変更しました)。

筆者が戸惑ったのは、Pin Manager:Over ViewでCMP2の入力(+)に、自分では指定していないピンが現れていることです。ロック状態にはなっていませんが、A2ピンのところだけ解放状態のピンが表示されており、この意図が不明でした。しかしA2はCMP1の入力になっているので、CMP2でも同じ入力を使うかも知れないという状況を想定してMCCが気を利かして自動表示しているのではないかと考えるようになりました。

CMP2のOUTPUTをロックした状態が以下です。もう一つのアナログコンパレータCMP1とのピンの重複なく定義することができました。

この状態でgenerateし、何も特別な処理を記述していないmainプログラムをコンパイルし、PICマイコンに書き込みました。

そしてフォトトランジスタを手で覆う(光を遮る)と、LEDが光りました。フォトトランジスタとPICマイコンの連携を確認することができました。

◆照度について

「ラズパイマガジン 2019年2月号」に照度について以下のように書かれていました。

照度:1平方メートルあたりの光の量。単位はルクス(lux)。ろうそくの明かりが15ルクス。晴天時の明るさは10万ルクス。今回使用したフォトトランジスタNJL7302L-F5のデータシートを参照すると、10ルクスで標準20μA(VCE:5V)の電流を出力するようです。

 

Follow me!