Giriş
Merhaba arkadaşlar bugün projemizde alev algılayan sensör kullanarak herhangi bir yangın anında yangın söndürme sistemini devreye sokan projeyi gerçekleştireceğiz. Aynı zamanda flame(alev) sensörü kullanarak bu sensörün kullanımına değineceğiz.
Flame (Alev) Sensörü
Alev sensörü olarak bilinen Flame Sensörünü bu projede kullanabilirsiniz. Bu sensör ateşin az miktarda yaydığı IR ışınları algılar ve çıkışını 0 “LOW” değeri olarak gönderir. Yangın söndüren robotlarda ateş algılama sensörü olarak kullanabilmektedir. Üzerindeki trimpot ile hassasiyet ayarı yapılabilmekte ve hem analog hem de dijital şekilde çıkış alınabilmektedir.
Üzerinde iki adet led vardır. Bir tanesi enerji verilir verilmez yanar. Diğeri ise alev algılandığında yanar.
Kullanılan Malzemeler
- Arduino UNO
- Alev Sensör Modülü
- 5V Role
- 5V DC Su Pompası
- Buzzer
- 5V AC/DC Adaptör
- 7-12 Volt Pil
- Breadboard
Devre Bağlantı Şeması
Sensör pini 2. pine Buzzer pini 3. pine Role tetikleme pini 4. pine bağlanır.
Kodlar
Nasıl Çalışacak: Projemizde bir ateş algılandığı zaman buzzer direk alarm verecek. Yangın söndürme sistemi çalışması için ise 5 saniyelik bir süre var. Yani sürmekte olan bir ateş olduğundan emin olmamız gerekiyor. 5 saniye boyunca ateş algılaması olursa Röle tetikleniyor ve yangın söndürme sistemi devreye giriyor.
#define SENSOR_PIN 2
#define BUZZER_PIN 3
#define RELAY_PIN 4
#define SPRINKLER_START_DELAY 5000 //5 seconds
#define SPRINKLER_ON_TIME 3000 //3 seconds Sprinkler on time
unsigned long previousTime = millis();
void setup()
{
pinMode(RELAY_PIN, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
}
void loop()
{
//If there is fire then the sensor value will be LOW else the value will be HIGH
int sensorValue = digitalRead(SENSOR_PIN);
//There is fire
if (sensorValue == LOW)
{
analogWrite(BUZZER_PIN, 50); //Turn on buzzer
if (millis() - previousTime > SPRINKLER_START_DELAY) //We will wait for few seconds before sprinkler can be started once fire is detected.
{
digitalWrite(RELAY_PIN, LOW); //Relay is low level triggered relay so we need to write LOW to switch on the light
delay(SPRINKLER_ON_TIME); //Keep sprinkler on for sometime.
}
}
else
{
analogWrite(BUZZER_PIN, 0);
digitalWrite(RELAY_PIN, HIGH);
previousTime = millis();
}
}
millis() Fonksiyonu
Bekleme için Delay değil bu sefer Millis fonksiyonu kullandık. Çünkü delay komutu tüm sisteme gecikme yaparken Millis ile gecikme yaptığımızda, bekleme süresi devam ederken program da akışına devam eder.
millis() geçen zamandır. Yani anlık olarak geçen süre milisaniye cinsinden sürekli olarak sayar. 25. satırda millis kullandığımız zaman da aslında programa şu soruyu soruyoruz. Buzzer çalması üzerinden 5 saniye geçti mi?
if (millis() – previousTime > SPRINKLER_START_DELAY
Yani anlık süre – geçen zaman = 5 saniye oldu mu ?
Yukarıda define komutu ile SPRINKLER_START_DELAY zamanına hangi değeri tanımlarsak bu süreyi artırıp azaltabiliriz.
Proje Son
Konu hakkında görüşlerinizi ve yardımlarınızı bize iletebilirsiniz. Kolay gelsin !
bu alev sensorunden 4 adet calıstırmak ıstersek ve bunu milis kodunu kullanarak nasıl yapabılırız
Yağmur sensörlerini artırabiliriz bunda bir sorun yok yeterli pin sayımız mevcut. Projede kullandığımız komutlara benzer komutlar ekleyerek yapabilirsiniz. Sensörlerden gelen veriyi karşılaştırmak için karşılaştırma komutlarını eklemenizi öneririm.