自己紹介

ソフト屋が、電子工作、DIYに興味を持ち、不勉強のまま手を出したために、ドはまってもがき苦しんでいる様を公開するブログ。 当面は「生活向上、便利、コスト削減」をテーマに、習うより慣れろ精神でいろいろ作っていく。

2017年11月24日金曜日

赤外線型焦電センサー AKE-1 1段目のオシロ波形

1段目のみ(アンプに接続しない)で波形測定。
1つ目が安定状態、2つ目は手をかざした時の波形変化。
印加電圧5V(4,8V)

オシロキャプチャ

1段目アンプ接続100倍で波形測定。
1つ目が安定状態、2つ目は手をかざした時の波形変化。
印加電圧5V(4,8V)

オシロキャプチャ

2段目アンプ接続100*100(1万)倍で波形測定。
印加電圧5V(4,8V)
オシロキャプチャ

比較器接続(NJM2903D)オープンコレクタ出力
印加電圧5V(4,8V)
オシロキャプチャ
※持っている部品で、比較するための回路定数決定が困難だったため今回は比較器未使用

ユニバーサル基板配置図
ユニバーサル基板配置図

ATTINY13Aで制御
・PB1にアンプからの出力をつなげる。
・PB1が0V(実際には1.8V付近)を切ると割り込みが発生。
・PB1、PB5(リセットピン)以外を一定時間HIGHにする

プログラム
#define F_CPU 12000000UL // ←8000000UL でもいいかも
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>  //割り込みを使用するため
#include <avr/sleep.h>

void init()
{
// Lowレベル割り込みを使う場合→Lowレベルは1.8V付近。それより下がると割り込み発生する。

// アイドル復帰以外の休止状態から割り込み可能
//MCUCR |= (1<<ISC01);  // falling edge of INT0
GIMSK |=   ( 1 << INT0);
// 入出力ポート
// PB4 出力設定
DDRB =   (1  << DDB0) | (1  << DDB2) | (1  << DDB3) | (1  << DDB4) | (1  << DDB5);

}
// 割り込み
ISR(INT0_vect)
{
char j;

PORTB |=  ( 1 << PORTB0) | ( 1 << PORTB2)| ( 1 << PORTB3)| ( 1 << PORTB4)| ( 1 << PORTB5); // HIGH
for (j = 0; j <= 10; j++)
{
_delay_ms(100);
}
PORTB = ( 0 << PORTB0) | ( 0 << PORTB2) | ( 0 << PORTB3) | ( 0 << PORTB4) | ( 0 << PORTB5);

}

int main(void)
{
init();
set_sleep_mode(SLEEP_MODE_PWR_DOWN);// パワーダウンモードを設定.
sei();

while(1)
{
sleep_mode();                //スリープ開始。
}
}

0 件のコメント:

コメントを投稿