- MQ6 Gaz Sensörü
- MQ Gaz sensörlerini kullanarak PPM nasıl ölçülür?
- Gerekli bileşenler
- Şematik
- PIC Programlamalı MQ Sensörü
MQ serisi Gaz sensörleri, belirli Gaz türlerini algılamak veya ölçmek için Gaz Dedektörlerinde kullanılan çok yaygın sensör türleridir. Bu sensörler, basit Duman Dedektörlerinden Endüstriyel Hava Kalitesi Monitörlerine kadar Gazla ilgili tüm cihazlarda yaygın olarak kullanılmaktadır. Amonyak gibi bazı zararlı gazları ölçmek için bu MQ gaz sensörlerini Arduino ile zaten kullandık. Bu yazımızda, bu gaz sensörlerinin PIC Mikrodenetleyiciler ile nasıl kullanılacağını, gazın PPM değerini ölçmeyi ve 16x2 LCD ekranda göstermeyi öğreneceğiz.
Daha önce belirtildiği gibi, piyasada farklı türde MQ serisi sensörler bulunmaktadır ve her sensör aşağıdaki tabloda gösterildiği gibi farklı gaz türlerini ölçebilir. Bu makalenin iyiliği için, LPG gazının varlığını ve konsantrasyonunu tespit etmek için kullanılabilecek PIC'li MQ6 Gaz sensörünü kullanacağız. Bununla birlikte, aynı donanım ve aygıt yazılımını kullanarak diğer MQ serisi sensörler de kod ve donanım bölümünde büyük bir değişiklik yapılmadan kullanılabilir.
Sensör | Algılar |
MQ-2 | Metan, Bütan, LPG, duman |
MQ-3 | Alkol, Etanol, duman |
MQ-4 | Metan, CNG Gazı |
MQ-5 | Doğal gaz, LPG |
MQ-6 | LPG, bütan gazı |
MQ-7 | Karbonmonoksit |
MQ-8 | Hidrojen gazı |
MQ-9 | Karbonmonoksit, yanıcı gazlar. |
MQ131 | Ozon |
MQ135 | Hava Kalitesi (Benzen, Alkol, duman) |
MQ136 | Hidrojen Sülfür gazı |
MQ137 | Amonyak |
MQ138 | Benzen, Toluen, Alkol, Aseton, Propan, Formaldehit gazı, Hidrojen |
MQ214 | Metan, Doğal gaz |
MQ216 | Doğal gaz, Kömür gazı |
MQ303A | Alkol, Etanol, duman |
MQ306A | LPG, bütan gazı |
MQ307A | Karbonmonoksit |
MQ309A | Karbonmonoksit, yanıcı gazlar |
MG811 | Karbondioksit (CO2) |
AQ-104 | Hava kalitesi |
MQ6 Gaz Sensörü
Aşağıdaki resim MQ6 sensör pin şemasını göstermektedir. Bununla birlikte, soldaki görüntü, mikro denetleyici birimiyle arayüz oluşturmak için modül tabanlı bir MQ6 sensörüdür, modülün pim diyagramı da bu görüntüde gösterilmiştir.
Pin 1 VCC'dir, Pin 2 GND'dir, Pin 3 Dijital çıkıştır (gaz algılandığında mantık düşüktür.) Ve Pin 4 Analog çıkıştır. Pot, hassasiyeti ayarlamak için kullanılır. RL değil. RL direnci, DOUT LED'inin sağ direncidir.
Her MQ serisi sensörün bir ısıtma elemanı ve bir algılama direnci vardır. Gazın konsantrasyonuna bağlı olarak, algılama direnci değişir ve değişen direnç tespit edilerek gaz konsantrasyonu ölçülebilir. İçin PPM gaz konsantrasyonunu ölçmek tüm MQ sensörleri çok önemli bir logaritmik grafiğini vermektedir. Grafik, RS ve RO oranıyla gaz konsantrasyonuna genel bir bakış sağlar.
MQ Gaz sensörlerini kullanarak PPM nasıl ölçülür?
RS, belirli bir gazın varlığı sırasında duyu direncidir, oysa RO, herhangi bir özel gaz olmadan temiz havadaki duyu direncidir. Veri sayfasından alınan aşağıdaki logaritmik grafik, MQ6 sensörünün algılama direnci ile gaz konsantrasyonuna genel bir bakış sağlar. MQ6 sensörü, LPG gaz konsantrasyonunu tespit etmek için kullanılır. Bu nedenle MQ6 sensörü, LPG gazının bulunmadığı temiz hava koşullarında belirli bir direnç sağlayacaktır. Ayrıca, MQ6 sensörü tarafından LPG gazı algılandığında direnç değişecektir.
Bu nedenle, bu grafiği Arduino Gaz dedektörü Projemizde yaptığımıza benzer şekilde ürün yazılımımıza yerleştirmemiz gerekiyor. Formül, 3 farklı veri noktasına sahip olmaktır. İlk iki veri noktası, X ve Y koordinatlarında LPG eğrisinin başlangıcıdır. Üçüncü veri eğimdir.
Öyleyse, LPG eğrisi olan derin mavi eğriyi seçersek, X ve Y koordinatındaki eğrinin başlangıcı 200 ve 2'dir. Yani, logaritmik ölçekten ilk veri noktası (log200, log2) 'dir ve 2.3, 0.30).
X1 ve Y1 = (2.3, 0.30) olarak yapalım. Eğrinin sonu ikinci veri noktasıdır. Yukarıda açıklanan aynı işlemle, X2 ve Y2 (log 10000, log0.4). Böylece, X2 ve Y2 = (4, -0.40). Eğrinin eğimini elde etmek için formül şu şekildedir:
= (Y2-Y1) / (X2-X1) = (- 0.40 - 0.30) / (4 - 2.3) = (-0.70) / (1.7) = -0.41
İhtiyacımız olan grafik şu şekilde verilebilir:
LPG_Curve = {başlangıç X ve başlangıç Y, eğim} LPG_Curve = {2.3, 0.30, -0.41}
Diğer MQ sensörleri için, yukarıdaki verileri veri sayfasından ve Logaritmik grafik grafiğinden alın. Değer, sensöre ve ölçülen gaza göre farklılık gösterecektir. Bu belirli modül için, yalnızca mevcut olan veya olmayan gaz hakkında bilgi veren dijital bir pime sahiptir. Bu proje için de kullanılmaktadır.
Gerekli bileşenler
MQ sensörünün PIC mikro denetleyiciyle arayüzlenmesi için gerekli bileşenler aşağıda verilmiştir.
- 5V güç kaynağı
- Breadboard
- 4.7k direnç
- LCD 16x2
- 1k direnç
- 20Mhz kristal
- 33pF kondansatör - 2 adet
- PIC16F877A mikrodenetleyici
- MQ serisi sensör
- Berg ve diğer bağlantı telleri.
Şematik
Bir PIC projesine sahip bu Gaz sensörü için şematik oldukça basittir. Gaz sensör modülü tarafından sağlanan analog voltajı ölçmek için Analog pin RA0 ve dijital olan RD5 ile bağlanır. PIC'de tamamen yeniyseniz, bu projeyi daha iyi anlamak için PIC ADC öğreticisine ve PIC LCD öğreticisine bakmak isteyebilirsiniz.
Devre, bir devre tahtasında inşa edilmiştir. Bağlantılar tamamlandıktan sonra kurulumum aşağıda gösterildiği gibi görünüyor.
PIC Programlamalı MQ Sensörü
Bu kodun ana kısmı, ana işlev ve diğer ilişkili çevresel işlevlerdir. Komple program bu sayfanın alt kısmında bulunabilir, önemli kod parçacıkları aşağıda açıklanmıştır.
Serbest havada sensör direnç değerini elde etmek için aşağıdaki fonksiyon kullanılır. Analog kanal 0 kullanıldığında, analog kanal 0'dan veri alıyor. Bu, MQ Gaz sensörünü kalibre etmek içindir.
float SensorCalibration () { int count; // Bu fonksiyon, sensörü serbest hava float val = 0; for (count = 0; count <50; count ++) {// birden fazla örnek alın ve ortalama değeri hesaplayın val + = calculate_resistance (ADC_Read (0)); __delay_ms (500); } değer = değer / 50; val = değer / RO_VALUE_CLEAN_AIR; // RO_CLEAN_AIR_FACTOR'a bölünmesi, Ro dönüş değerini verir ; }
Aşağıdaki Fonksiyon, MQ sensörü analog değerlerini okumak ve Rs değerini hesaplamak için ortalamak için kullanılır.
float read_MQ () { int sayım; float rs = 0; for (count = 0; count <5; count ++) {// birden fazla okuma alın ve ortalayın. rs + = hesapla_resistance (ADC_Read (0)); // rs gaz konsantrasyonuna göre değişir. __delay_ms (50); } rs = rs / 5; dönüş rs; }
Aşağıdaki fonksiyon, gerilim bölücü direncinden ve yük direncinden gelen direnci hesaplamak için kullanılır.
float calculate_resistance (int adc_channel) {// sensör ve yük direnci bir voltaj bölücü oluşturur. analog değer ve yük değeri kullanarak dönüş (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // sensör direnci bulacağız. }
RL_VALUE, aşağıda gösterildiği gibi kodun başında tanımlanır
#define RL_VALUE (10) // kilo-ohm cinsinden kart üzerindeki yük direncini tanımlayın
Yerleşik yük direncini kontrol ettikten sonra bu değeri değiştirin. Diğer MQ sensör kartlarında farklı olabilir. Mevcut verileri günlük ölçeğine çizmek için aşağıdaki işlev kullanılır.
int gas_plot_log_scale (float rs_ro_ratio, float * eğri) { dönüş pow (10, (((log (rs_ro_ratio) -curve) / eğri) + eğri)); }
Eğri, yukarıdaki makalemizde daha önce hesaplanmış olan kodun yukarısında tanımlanan LPG eğrisidir.
float MQ6_curve = {2.3,0.30, -0.41}; // Graph Plot, bunu belirli sensör için değiştirin
Son olarak, analog değeri ölçtüğümüz, PPM'yi hesapladığımız ve LCD'de görüntülediğimiz ana fonksiyon aşağıda verilmiştir.
void main () { system_init (); temiz ekran(); lcd_com (FIRST_LINE); lcd_puts ("Kalibre ediliyor…."); Ro = Sensör Kalibrasyonu (); //temiz ekran(); lcd_com (FIRST_LINE); lcd_puts ("Bitti!"); //temiz ekran(); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohm"); __delay_ms (1500); gas_detect = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Gaz var"); lcd_com (SECOND_LINE); lcd_puts ("Gaz ppm ="); float rs = okuma_MQ (); şamandıra oranı = rs / Ro; lcd_print_number (gas_plot_log_scale (oran, MQ6_curve)); __delay_ms (1500); temiz ekran(); } başka { lcd_com (FIRST_LINE); lcd_puts ("Gaz yok"); } } }
İlk olarak, sensörün RO'su temiz havada ölçülür. Ardından gazın mevcut olup olmadığını kontrol etmek için dijital pin okunur. Gaz varsa, gaz sağlanan LPG eğrisi ile ölçülür.
Gaz algılandığında PPM değerinin değişip değişmediğini kontrol etmek için bir çakmak kullandım. Bu çakmakların içinde LPG gazı vardır, bu gaz havaya bırakıldığında sensörümüz tarafından okunur ve LCD üzerindeki PPM değeri aşağıda gösterildiği gibi değişir.
Tam çalışma, bu sayfanın altında verilen videoda bulunabilir. Herhangi bir sorunuz varsa lütfen yorum bölümüne bırakın veya diğer teknik sorular için forumlarımızı kullanın.