#はじめに
書籍に沿って引き続き進めていきます。
#フォトインタラプタ・フォトリフレクタとは
物体の検知などによく使用されます。
回路図に違いはありませんが、検知する方法が異なります。
フォトインタラプタの場合は以下のように、LEDとフォトトランジスタ(フォトダイオード等)の間の遮蔽物の有無を検知することができます。
基本的に何でも検知してくれますが、検知したいものが大きくなると、LEDとフォトトランジスタの間が広くなり、発光と受光を別々で設置する必要があったりします。形PTB-802 透過形光電センサ ←こんな感じ
フォトリフレクタは反射を利用して、前の物体の有無を検知します。
下の図では黒色の物体を検知していますが、黒色は赤外線を吸収するので、あまり反射しません (悪い例でした)
逆にその原理を利用してライントレースをしたりします。
#使用部品
#回路図
ピン配列は以下のようになっています。(詳しくは仕様書)
赤外線LED(アノード、カソード)
フォトトランジスタ(エミッタ、コレクタ)
fritzingに同じものが無かったので、それに近いものを図では使用しています。
フォトトランジスタ側につなぐ抵抗は100~500Ω程度で、抵抗値を上げるとセンサーの感度も上がります。(フォトリフレクタには2kΩを使用しました。)
#プログラム
前回と同様にLEDを…
LEDつけてなかった(´-ω-`)
と、いうわけで結果はコンソール出力します。
PsoC5の設定はTopDesign.cyschにUARTを追加します。
あとはピンを指定するだけで簡単にUSB経由でパソコンにコンソール出力できます。
Rx_1 P12[6]
Tx_1 P12[7]
あとはTeraTermやRloginを使用してcomポートへ接続するだけ。
フォトインタラプタでは、検知した際にON、通常時はOFFが出力されます。
フォトリフレクタでは、検知した際にOFF、通常時はONが出力されます。
#include "project.h"
int main(void)
{
CyGlobalIntEnable;
int sw = 0;
UART_1_Start();
for(;;)
{
if(sw != SW_Read()){
sw = SW_Read();
if(sw == 1){
UART_1_PutString("OFF\n");
}else{
UART_1_PutString("ON\n");
}
}
}
}