Arduino İle Alkol Gaz Sensörü(MQ-3) Kullanımı
Bu yazımızda Arduino ile Alkol Gaz Sensörü Nedir ve Nasıl Kullanılır bunu öğreneceğiz. MQ-3 Alkol Gaz Sensörü, havada bulunan alkolün varlığını ve konsantrasyonunu algılar. Eğer insan vücudundaki alkol miktarını ölçmek için kendi alkolmetrenizi yapmayı planlıyorsanız, MQ3 alkol sensörü harika bir seçenektir.
MQ3 Alkol Sensörü Nedir?
MQ3, MQ sensör serisinde en sık kullanılan sensörlerden biridir. Metal Oksit Yarı İletken (MOS) tipi bir sensördür. Metal oksit sensörleri aynı zamanda Chemiresistörler olarak da bilinir, çünkü algılama, alkole maruz kaldığında algılama malzemesinin direncinin değişmesine dayanır. Böylece basit bir voltaj bölücü ağına yerleştirerek alkol konsantrasyonları tespit edilebilir.
MQ3 alkol sensörü 5V DC ile çalışır ve 800mW civarında çeker. 25 ila 500 ppm arasında herhangi bir yerde Alkol konsantrasyonlarını tespit edebilir.
MQ3 Alkol Sensörü Özellikleri
Çalışma Voltajı | 5V |
Yük Direnci | 200 KΩ |
Isıtıcı Direnci | 33Ω ± 5% |
Isıtma Tüketimi | <800mw |
Algılama Direnci | 1 MΩ – 8 MΩ |
Konsantrasyon Algılama Aralığı | 25 – 500 ppm |
Ön Isıtma Süresi | 24 saatten fazla |
MQ3 Alkol Sensörü Nasıl Çalışıyor?
SnO2 yarı iletken tabakası yüksek sıcaklıkta ısıtıldığında, yüzeyde oksijen adsorbe edilir. Temiz havada, kalay dioksit içindeki iletim bandındaki elektronlar oksijen moleküllerine çekilir. Bu, SnO2 parçacıklarının yüzeyinin hemen altında bir elektron tükenme tabakası oluşturur ve potansiyel bir bariyer oluşturur. Sonuç olarak, SnO2 filmi oldukça dirençli hale gelir ve elektrik akımı akışını engeller.
Ancak alkol varlığında adsorbe edilen oksijenin yüzey yoğunluğu alkollerle reaksiyona girdikçe azalır; potansiyel bariyeri düşürür. Elektronlar daha sonra kalay dioksite salınır ve akımın sensörden serbestçe akmasına izin verir.
MQ3 Alkol Sensör Modülü
Kullanımı çok kolay bir modüldür. 2 farklı modda kullanabilirsiniz.
Sensör tarafından sağlanan analog çıkış voltajı (AO pininde) alkol konsantrasyonuyla orantılı olarak değişir. Havadaki alkol konsantrasyonu ne kadar yüksek olursa, çıkış voltajı o kadar yüksek olur; Düşük konsantrasyon ise daha düşük çıkış voltajı sağlar. Aşağıdaki animasyon, alkol konsantrasyonu ile çıkış voltajı arasındaki ilişkiyi göstermektedir.
Aynı analog sinyal, onu sayısallaştırmak için bir LM393 Yüksek Hassasiyetli Karşılaştırıcı ile dijitl çıkışa çevrilir(5V-0V) ve Dijital Çıkış (DO) pininde kullanıma sunulur.
Modül, dijital çıkışın (DO) hassasiyetini ayarlamak için yerleşik bir potansiyometreye sahiptir. Bir eşik belirlemek için kullanabilirsiniz; böylece alkol konsantrasyonu eşik değerini aştığında, modül DÜŞÜK, aksi halde YÜKSEK çıkış verecektir.
Bu kurulum, belirli bir eşiğe ulaşıldığında bir eylemi tetiklemek istediğinizde çok kullanışlıdır. Örneğin, nefesteki alkol konsantrasyonu bir eşiği aştığında, birinin sarhoş olup olmadığını anlayabilirsiniz.
Bunun dışında modülde iki adet LED bulunmaktadır. Modüle güç verildiğinde Güç LED’i yanacaktır. Dijital çıkış DÜŞÜK olduğunda Durum LED’i yanacaktır.
MQ3 Alkol Sensör Modülü Pin Şeması
- VCC, modül için güç sağlar. Arduino’nuzdan 5V çıkışa bağlayabilirsiniz.
- GND, Topraklama pinidir ve Arduino’daki GND pinine bağlanması gerekir.
- D0, alkol varlığının dijital çıkış pinidir.
- A0, alkol konsantrasyonuyla orantılı olarak analog çıkış voltajı sağlar.
Analog Çıkış İle Alkol Konsantrasyon Ölçülmesi
Modülün hem analog hem de dijital çıkış sağladığını bildiğiniz gibi ilk deneyimizde analog çıkışı okuyarak alkol konsantrasyonunu ölçeceğiz.
Alkol Sensörü Analog Bağlantı Şeması:
Kalibrasyon
Alkol sensörünüzden doğru okumalar almak için önce kalibre etmeniz önerilir. Bir alkol ölçer durumunda hangi değerlerin belirli yüzdelere veya hatta kandaki alkol konsantrasyonuna eşit olduğunu bulmanız gerekir.
Alkol tükettikten sonra -vs- alkol tüketmeden sensöre nefesinizi üflediğinizde sensörünüzün hangi değerleri verdiğini not etmek için aşağıdaki çizimi kullanın.
Alkollü içecek tüketmenize yasal olarak izin verilmiyorsa, testiniz için izopropil alkol şişesi veya herhangi bir el dezenfektanı şişesi kullanın. Sensörü alkolle ıslatmayın! Alkolün buharını sensöre solumak için sıkın ve okumalarınızı yapın.
#define MQ3pin 0
float sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = analogRead(MQ3pin); // read analog input pin 0
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(2000); // wait 2s for next reading
}
Not: MQ3’ün ısıtıcıyla çalışan bir sensör olduğunu unutmayın. Doğru ölçüm için sensörün tamamen ısınması gerekir. Yukarıdaki örnek kodda 20 saniyelik bir ısınma vardır, ancak maksimum doğruluk için ısınma süresini 24-48 saate çıkarın.
Çizimi çalıştırdığınızda, seri monitörde aşağıdaki değerlere yakın değerler göreceksiniz:
- Nefeste alkol olmadığında (~120)
- Nefeste alkol olduğunda (~500)
Bu test biraz deneme yanılma gerektirebilir. Bu okumaları iyi bir şekilde ele aldığınızda, bir eylemi tetiklemeyi düşünüyorsanız, bunları eşik olarak kullanabilirsiniz.
Kalibrasyon değerlerine dayalı olarak, aşağıdaki program alkol konsantrasyonunu belirlemek için aşağıdaki aralıkları tanımlar:
- < 120 ayık
- 120-400 içiyor – ancak yasal sınırlar içinde
- >400
/* Change these values based on your calibration values */
#define Sober 120 // Define max value that we consider sober
#define Drunk 400 // Define min value that we consider drunk
#define MQ3pin 0
float sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = analogRead(MQ3pin); // read analog input pin 0
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
// Determine the status
if (sensorValue < Sober) {
Serial.println(" | Status: Stone Cold Sober");
} else if (sensorValue >= Sober && sensorValue < Drunk) {
Serial.println(" | Status: Drinking but within legal limits");
} else {
Serial.println(" | Status: DRUNK");
}
delay(2000); // wait 2s for next reading
}
Her şey yolundaysa, seri monitörde aşağıdaki çıktıyı görmelisiniz.
Dijital Çıkış Kullanılarak Alkol Tespiti
Önceki örnekteki devreyi kullanacağız. Bu sefer sadece ADC pin bağlantısını kaldırmamız ve modül üzerindeki DO pinini Arduino üzerindeki dijital pin #8’e bağlamamız gerekiyor.
Devrenizi aşağıda gösterildiği gibi bağlayın:
Modül, dijital çıkışı (DO) kalibre etmek için yerleşik bir potansiyometreye sahiptir.
Potansiyometrenin düğmesini çevirerek bir eşik ayarlayabilirsiniz. Böylece alkol konsantrasyonu eşik değerini aştığında Durum LED’i yanacak ve modül YÜKSEK çıkış verecektir.
Kalibrasyon
Şimdi sensörü kalibre etmek için, alkol nefesinizi sensöre üfleyin veya alkolün buharlarını sensöre solumak için izopropil alkol şişesini sıkın ve Durum LED’i AÇIK olacak şekilde kabı saat yönünde ayarlayın ve ardından kabı saat yönünün tersine ayarlayın. LED KAPANIR.
Sensörünüz artık kalibre edildi ve kullanıma hazır.
#define MQ3pin 8
int sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = digitalRead(MQ3pin); // read digital output pin
Serial.print("Digital Output: ");
Serial.print(sensorValue);
// Determine the status
if (sensorValue) {
Serial.println(" | Alcohol: -");
} else {
Serial.println(" | Alcohol: Detected!");
}
delay(2000); // wait 2s for next reading
}
Seri monitörde aşağıdaki çıktıyı görmelisiniz.