MQ-5 ile LPG Gaz Ölçümü (PPM)
Orta30 dkMQ-5 gaz sensörünün analog çıkışını okuyup önce voltaja, sonra sensör direncinin temiz havadaki direncine oranına (Rs/Ro) çeviren ve datasheet eğrisi formülüyle tahmini LPG yoğunluğunu (PPM) iki saniyede bir Seri Monitöre yazdıran proje. Açılışta ısıtıcının kararlı hale gelmesi için 10 saniye beklenir. Temiz havada oran yüksek, PPM düşüktür; ortama gaz verildiğinde ADC ve PPM değerleri belirgin şekilde yükselir. PPM değeri tahminidir: doğru sonuç için sensörü temiz havada kalibre edip Ro değerini güncellemen gerekir. Ek kütüphane gerekmez.
Uygulamada adım adım yapGerekli malzemeler
1 × Arduino Uno R3
1 × MQ-5 LPG / Doğalgaz Sensörü
4 × Jumper Kablo - Erkek/Dişi
Bağlantı adımları
- 1
Sensöre güç ver

Kırmızı jumper kabloyu Arduino’nun POWER başlığındaki 5V pinine tak. Diğer ucunu MQ-5 modülünün pin sırasındaki en üstteki 1. pinine (VCC) bağla. Sensörün ısıtıcısı 5V ile çalışır ve çalışırken ısınır.
- 2
Toprak (GND) bağlantısı

Siyah jumper kabloyu Arduino’nun POWER başlığındaki GND pinine tak. Diğer ucunu modülün 2. pinine (GND) bağla.
- 3
Dijital çıkışı (DOUT) bağla

Mavi jumper kabloyu Arduino’nun dijital 2 numaralı pinine tak. Diğer ucunu modülün 3. pinine (DOUT) bağla. Bu pin, gaz seviyesi kart üzerindeki trimpotla ayarlanan eşiği geçince durum değiştirir. Bu projedeki kod yalnızca analog çıkışı kullanıyor; bu bağlantı eşik uyarısı eklemek istersen hazır dursun diye var.
- 4
Analog çıkışı (AOUT) bağla

Yeşil jumper kabloyu Arduino’nun ANALOG IN başlığındaki A0 pinine tak. Diğer ucunu modülün en alttaki 4. pinine (AOUT) bağla. Kod gaz yoğunluğunu bu pinden 0-1023 arası bir değer olarak okur ve PPM hesabını bununla yapar (sensorPin = A0).
Arduino kodu
const int sensorPin = A0;
// Sensör modülünün arkasındaki SMD direncin değeri (Genelde 1k ile 10k Ohm arasıdır)
const float RL = 10.0;
// Temiz havadaki sensör direnci (Bu değeri gerçekte kalibrasyon koduyla bulman gerekir, örnek olarak 9.83 verilmiştir)
const float Ro = 9.83;
// MQ-2 datasheet'indeki logaritmik grafikten çıkarılmış LPG eğri eğimi ve kesişim noktası
const float m = -0.473;
const float b = 1.413;
void setup() {
Serial.begin(9600);
Serial.println("Sensor isiniyor, lutfen bekleyin...");
delay(10000); // Sensörün içindeki ısıtıcının stabil hale gelmesi için süre
}
void loop() {
int adc_value = analogRead(sensorPin);
// 1. Adım: 0-1023 arası ADC değerini 0-5V arası voltaja çevir
float voltaj = adc_value * (5.0 / 1023.0);
// Sıfıra bölme hatasını engellemek için güvenlik kontrolü
if (voltaj == 0) {
Serial.println("Sensörden veri okunamiyor veya baglanti hatali.");
delay(2000);
return;
}
// 2. Adım: Sensörün o anki direncini (Rs) hesapla formül: Rs = RL * (5V - Voltaj) / Voltaj
float Rs = RL * (5.0 - voltaj) / voltaj;
// 3. Adım: Rs / Ro oranını bul
float oran = Rs / Ro;
// 4. Adım: Datasheet'teki log-log grafiği formülüne göre PPM'i hesapla
// Formül: ppm = 10 ^ ((log10(Rs/Ro) - b) / m)
float ppm = pow(10, ((log10(oran) - b) / m));
// Çıktıyı yazdır
Serial.print("Ham ADC: ");
Serial.print(adc_value);
Serial.print(" | Voltaj: ");
Serial.print(voltaj, 2);
Serial.print("V | Rs/Ro Orani: ");
Serial.print(oran, 2);
Serial.print(" | Tahmini PPM: ");
Serial.println(ppm, 2);
delay(2000); // 2 saniyede bir ölçüm al
}
Seri Monitörde göreceğin
Sensor isiniyor, lutfen bekleyin... Ham ADC: 145 | Voltaj: 0.71V | Rs/Ro Orani: 6.15 | Tahmini PPM: 21.34 Ham ADC: 148 | Voltaj: 0.72V | Rs/Ro Orani: 6.04 | Tahmini PPM: 22.18 Ham ADC: 152 | Voltaj: 0.74V | Rs/Ro Orani: 5.86 | Tahmini PPM: 23.50 Ham ADC: 410 | Voltaj: 2.00V | Rs/Ro Orani: 1.53 | Tahmini PPM: 456.82 Ham ADC: 435 | Voltaj: 2.13V | Rs/Ro Orani: 1.37 | Tahmini PPM: 580.14
Bir kablo yerinde değilse
Sensörden veri okunamiyor veya baglanti hatali.
Uygulamada her bağlantıyı tek tek işaretle, envanterindeki parçalarla eşleştir ve kaldığın yerden devam et.
Uygulamada adım adım yap