文書の過去の版を表示しています。
人体(焦電型赤外線)検出ユニット
概要
焦電型赤外線センサP4488(P2288と同等品)が秋月電子で100円で販売していましたので
これを利用した人体検出ユニットを作成しました。
動作原理
一般的には、次のようなオペアンプを利用した回路をよく見かけます。
秋月電子通商キット取扱説明書回路図集より抜粋しました。
オペアンプで40倍、40倍の1600倍に増幅し、基準電圧とコンペアし、リレーを一定時間駆動する。

このように結構複雑ですよね。これを何とかシンプルに出来ないものかと考えてみました。
回路図
低電圧オーディオ用パワーアンプLM386を2個使用して20倍、20倍の400倍に増幅しています。
この増幅された信号をPICでA/D変換で取り込みソフトウェアで処理しています。
もう少し感度がほしい場合にはLM386の増幅率を30倍、40倍に上げれば良いと思います。
その方法はとても簡単です。
1ピンと8ピンの間を抵抗とコンデンサーで接続するだけで20倍から200倍の倍率を設定する事が出来ます。
例えば、1.2kΩ+10uFのコンデンサで約50倍の増幅率になります。
如何ですか、とてもシンプルでしょ?
ソースコード
プログラムでの処理は、とても簡単です。
約0.5秒間<10msec間隔で50回>で信号を取り込み、100mV以上信号が変化すると人体を検出したとみな
します。
- humanSensor.c
//********************************************************************** /* <人体センサー> 2007.5.4 */ //********************************************************************** void Pwm_Change_DutyEx(unsigned int duty_ratio) { CCPR1L = duty_ratio >> 2; CCP1CON.F6 = duty_ratio & 0b00000001; CCP1CON.F7 = (duty_ratio & 0b00000010) >> 1; } //********************************************************************** void main() { static unsigned int min, max, ad0, temp, cnt; // OSCCON = 0b01000000; // クロックは1Mhz CMCON0 = 0b00000111; // コンパレータは使用しない。 ANSEL = 0b00000001; // AN0を使用する。 TRISIO = 0b00001011; GPIO = 0b00000000; OPTION_REG = 0b10000000; PIE1.TMR1IE = 1; PIR1.TMR1IF = 0; T1CON = 0b00000001; INTCON = 0b01000000; // Pwm_Init(1000); // 1Khz Pwm_Change_DutyEx((PR2 * 4) / 2); // Delay_ms(2000); // while (1) { min = 1024; max = 0; for (cnt = 0; cnt < 50; cnt++) { // 約0.5秒間<10msec間隔で50回>取り込む。 temp = Adc_Read(0); if (min > temp) min = temp; if (max < temp) max = temp; Delay_ms(10); } ad0 = max - min; // if (ad0 > 20) { // 100mV以上信号が変化すると人体を検出したとみなす。 Pwm_Start(); Delay_ms(100); Pwm_Stop(); } } } //**********************************************************************

