불꽃감지 센서는 포토 트랜지스터라고 불린다. 기본적으로 빛을 받으면 전기에너지로 변환시켜 증폭하는 작용을하며 빛을 많이 받을 수록 생성되는 전기 에너지가 커진다. 불꽃도 결국은 빛 이므로 이를 감지하여 화재여부를 감지하는 센서로 사용이 된다. 포토트랜지스터에 불꽃이 감지되면 피에조부저를 통하여 경보음을 내도록 만들어 보자
짧은 단자가 콜렉터(Collector)이며 긴 단자가 에미터(Emitter)이다.
포토트랜지스터 데이터시트:
아두이노와의 연결은 다음과 같다. 콜렉터는 5V단자에 에미터에는 GND단자에 연결하는데 10㏀의 저항을 사용하였다.
프리징 파일:
##소스##
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);
}