아두이노 불꽃감지센서 코딩 - adu-ino bulkkochgamjisenseo koding

불꽃감지 센서는 포토 트랜지스터라고 불린다. 기본적으로 빛을 받으면 전기에너지로 변환시켜 증폭하는 작용을하며 빛을 많이 받을 수록 생성되는 전기 에너지가 커진다. 불꽃도 결국은 빛 이므로 이를 감지하여 화재여부를 감지하는 센서로 사용이 된다. 포토트랜지스터에 불꽃이 감지되면 피에조부저를 통하여 경보음을 내도록 만들어 보자

짧은 단자가 콜렉터(Collector)이며 긴 단자가 에미터(Emitter)이다.

포토트랜지스터 데이터시트: 

아두이노 불꽃감지센서 코딩 - adu-ino bulkkochgamjisenseo koding
L-51ROPT1D1_en.pdf

아두이노와의 연결은 다음과 같다. 콜렉터는 5V단자에 에미터에는 GND단자에 연결하는데 10㏀의 저항을 사용하였다.

프리징 파일:

아두이노 불꽃감지센서 코딩 - adu-ino bulkkochgamjisenseo koding
phototransistor_buzzer.fzz

##소스##

if문의 값은 자신의 사용환경에 따라 적절히 감도를 조절할 필요가 있다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

int flame = A0; //포토트랜지스터가 연결된 아날로그핀

int Beep = 12;  //피에조부저가 연결된 디지털핀

int val = 0;    //센서출력값 저장 변수

void setup() {

pinMode(Beep, OUTPUT);   //피에조부저 출력설정

pinMode(flame,INPUT);    //포토트랜지스터 입력설정

Serial.begin(9600);     //시리얼모니터 설정

}

void loop() {

val = analogRead(flame);  //포토트랜지스터에서 값을 읽어옴

Serial.println(val);     //포토트랜지스터 입력값 시리얼모니터로 출력

if(val >= 1000)           //포토트랜지스터 입력값이 1000이상이면 BEEP실행, 환경에 따라 적절한 값으로 조절필요

{

digitalWrite(Beep,HIGH);  //피에조 부저 BEEP

}else{

digitalWrite(Beep,LOW);   //피에조 부저 OFF

}

delay(500);

}

cs

##결과##

int led = 13;       // LED 핀 번호 13

int flame = 7;      // 불꽃감지 센서 핀 번호 7

int state = 0;      // 불꽃감지 센서의 상태 값 저장 변수

void setup() {

pinMode(led, OUTPUT);    // LED를 출력으로 설정

pinMode(flame, INPUT);   // 불꽃 감지 센서를 입력으로 설정

Serial.begin(9600);      // 시리얼 통신, 속도는 9600

}

void loop() {

state = digitalRead(flame);   // 불꽃 감지 센서값 입력받음

digitalWrite(led, LOW);       // 초기 LED값을 0FF로 설정해주기

if (state == 1){              // 불꽃감지 센서의 값이 1일때(불꽃이 감지 되었을 때)

Serial.println("ON");       // 시리얼 통신에 센서값 출력해 주기.

digitalWrite(led, HIGH);    // LED ON

delay(100);                

}

else {                        // 불꽃감지 센서의 값이 0일때 (불꽃이 감지 되지 않았을 때)    

Serial.println("OFF");      // 시리얼 통신에 센서값 출력해 주기.

digitalWrite(led, LOW);     // LED OFF

}

delay(100);

}