- Czujnik gazu MQ6
- Jak mierzyć PPM za pomocą czujników gazu MQ?
- Wymagane komponenty
- Schematyczny
- Czujnik MQ z programowaniem PIC
Czujniki gazów serii MQ to bardzo powszechne typy czujników stosowanych w detektorach gazu do wykrywania lub pomiaru niektórych rodzajów gazów. Czujniki te są szeroko stosowane we wszystkich urządzeniach związanych z gazem, od prostych czujników dymu po przemysłowe monitory jakości powietrza. Użyliśmy już tych czujników gazu MQ z Arduino do pomiaru niektórych szkodliwych gazów, takich jak amoniak. W tym artykule dowiemy się, jak używać tych czujników gazu z mikrokontrolerami PIC, aby mierzyć wartość PPM gazu i wyświetlać ją na wyświetlaczu LCD 16x2.
Jak wspomniano wcześniej, na rynku dostępne są różne rodzaje czujników serii MQ, a każdy czujnik może mierzyć różne rodzaje gazów, jak pokazano w poniższej tabeli. Na potrzeby tego artykułu będziemy używać czujnika gazu MQ6 z PIC, który może służyć do wykrywania obecności i stężenia gazu LPG. Jednak przy użyciu tego samego sprzętu i oprogramowania układowego można również używać innych czujników serii MQ bez większych modyfikacji kodu i części sprzętowej.
Czujnik | Wykrywa |
MQ-2 | Metan, butan, LPG, dym |
MQ-3 | Alkohol, etanol, dym |
MQ-4 | Metan, gaz CNG |
MQ-5 | Gaz ziemny, LPG |
MQ-6 | LPG, butan |
MQ-7 | Tlenek węgla |
MQ-8 | Wodór |
MQ-9 | Tlenek węgla, gazy palne. |
MQ131 | Ozon |
MQ135 | Jakość powietrza (benzen, alkohol, dym) |
MQ136 | Siarkowodór gazowy |
MQ137 | Amoniak |
MQ138 | Benzen, toluen, alkohol, aceton, propan, formaldehyd, wodór |
MQ214 | Metan, gaz ziemny |
MQ216 | Gaz ziemny, Gaz węglowy |
MQ303A | Alkohol, etanol, dym |
MQ306A | LPG, butan |
MQ307A | Tlenek węgla |
MQ309A | Tlenek węgla, gazy palne |
MG811 | Dwutlenek węgla (CO2) |
AQ-104 | Jakość powietrza |
Czujnik gazu MQ6
Poniższy rysunek przedstawia schemat pinów czujnika MQ6. Jednak lewy obraz przedstawia modułowy czujnik MQ6 do połączenia z jednostką mikrokontrolera, schemat pinów modułu jest również pokazany na tym obrazie.
Pin 1 to VCC, Pin 2 to GND, Pin 3 to wyjście cyfrowe (stan logiczny niski po wykryciu gazu), a pin 4 to wyjście analogowe. Potencjometr służy do regulacji czułości. To nie jest RL. Rezystor RL jest prawym rezystorem diody LED DOUT.
Każdy czujnik serii MQ ma element grzejny i rezystancję wykrywania. W zależności od stężenia gazu zmienia się rezystancja wykrywania, a po wykryciu zmieniającej się rezystancji można zmierzyć stężenie gazu. Aby zmierzyć stężenie gazu w PPM, wszystkie czujniki MQ zapewniają wykres logarytmiczny, co jest bardzo ważne. Wykres przedstawia przegląd stężenia gazu ze stosunkiem RS i RO.
Jak mierzyć PPM za pomocą czujników gazu MQ?
RS to opór zwrotny w obecności określonego gazu, natomiast RO to opór zwrotny w czystym powietrzu bez określonego gazu. Poniższy wykres logarytmiczny zaczerpnięty z arkusza danych przedstawia przegląd stężenia gazu wraz z oporem czujnika MQ6. Czujnik MQ6 służy do wykrywania stężenia gazu LPG. Dlatego czujnik MQ6 będzie zapewniał szczególną rezystancję podczas czystego powietrza, gdy gaz LPG jest niedostępny. Rezystancja zmienia się również po wykryciu gazu LPG przez czujnik MQ6.
Musimy więc nanieść ten wykres na nasze oprogramowanie, podobnie jak w naszym projekcie detektora gazu Arduino. Formuła ma mieć 3 różne punkty danych. Pierwsze dwa punkty danych to początek krzywej LPG we współrzędnych X i Y. Trzecie dane to nachylenie.
Tak więc, jeśli wybierzemy ciemnoniebieską krzywą, która jest krzywą LPG, początek krzywej we współrzędnych X i Y to 200 i 2. Zatem pierwszy punkt danych na skali logarytmicznej to (log200, log2), czyli (2, 3, 0,30).
Zróbmy to jako, X1 i Y1 = (2,3; 0,30). Koniec krzywej to drugi punkt danych. W tym samym procesie opisanym powyżej X2 i Y2 wynoszą (log 10000, log0,4). Zatem X2 i Y2 = (4, -0,40). Aby uzyskać nachylenie krzywej, wzór jest następujący
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Wykres, którego potrzebujemy, można podać jako
LPG_Curve = {początek X i początek Y, nachylenie} LPG_Curve = {2,3, 0,30, -0,41}
W przypadku innych czujników MQ, pobierz powyższe dane z arkusza danych i wykresu logarytmicznego. Wartość będzie się różnić w zależności od czujnika i zmierzonego gazu. W tym konkretnym module ma cyfrowy pin, który dostarcza tylko informacji o obecności lub braku gazu. W tym projekcie jest również używany.
Wymagane komponenty
Wymagane komponenty do połączenia czujnika MQ z mikrokontrolerem PIC podano poniżej:
- Zasilanie 5V
- Płytka prototypowa
- Rezystor 4,7 k
- LCD 16x2
- Rezystor 1k
- Kryształ 20 Mhz
- Kondensator 33pF - 2szt
- Mikrokontroler PIC16F877A
- Czujnik serii MQ
- Berg i inne przewody połączeniowe.
Schematyczny
Schemat tego czujnika gazu z projektem PIC jest dość prosty. Pin analogowy jest połączony z RA0, a cyfrowy z RD5 w celu pomiaru napięcia analogowego dostarczanego przez moduł czujnika gazu. Jeśli jesteś zupełnie nowy w PIC, możesz zajrzeć do samouczka PIC ADC i samouczka PIC LCD, aby lepiej zrozumieć ten projekt.
Obwód jest zbudowany w płytce stykowej. Po wykonaniu połączeń moja konfiguracja wygląda tak, jak pokazano poniżej.
Czujnik MQ z programowaniem PIC
Główną częścią tego kodu jest główna funkcja i inne powiązane funkcje peryferyjne. Kompletny program można znaleźć na dole tej strony, a ważne fragmenty kodu są wyjaśnione w następujący sposób
Poniższa funkcja służy do uzyskania wartości rezystancji czujnika na wolnym powietrzu. Ponieważ używany jest kanał analogowy 0, dane są pobierane z kanału analogowego 0. Służy to do kalibracji czujnika gazu MQ.
float SensorCalibration () { int count; // Ta funkcja skalibruje czujnik w swobodnym przepływie powietrza val = 0; for (count = 0; count <50; count ++) {// pobierz wiele próbek i oblicz średnią wartość val + = calculator_resistance (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // podzielone przez RO_CLEAN_AIR_FACTOR daje wartość zwrotną Ro ; }
Poniżej Funkcja służy do odczytywania wartości analogowych czujnika MQ i uśredniania ich w celu obliczenia wartości Rs
float read_MQ () { int count; float rs = 0; for (count = 0; count <5; count ++) {// pobierz wiele odczytów i uśrednij je. rs + = oblicz_opór (ADC_Read (0)); // rs zmienia się w zależności od stężenia gazu. __delay_ms (50); } rs = rs / 5; return rs; }
Poniższa funkcja służy do obliczania rezystancji z rezystora dzielnika napięcia i rezystancji obciążenia.
float calculator_resistance (int adc_channel) {// czujnik i rezystor obciążenia tworzą dzielnik napięcia. więc używając wartości analogowej i zwracanej wartości obciążenia (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // znajdziemy rezystor czujnika. }
Wartość RL_VALUE jest definiowana na początku kodu, jak pokazano poniżej
#define RL_VALUE (10) // zdefiniuj rezystancję obciążenia na płycie, w kilo-omach
Zmień tę wartość po sprawdzeniu rezystancji obciążenia na płycie. W innych płytkach czujników MQ może być inaczej. Aby wykreślić dostępne dane na skali logarytmicznej, używana jest poniższa funkcja.
int gas_plot_log_scale (float rs_ro_ratio, float * curve) { return pow (10, (((log (rs_ro_ratio) -curve) / curve) + curve)); }
Krzywa to krzywa LPG zdefiniowana w powyższym kodzie, która została wcześniej obliczona w naszym artykule powyżej.
float MQ6_curve = {2,3,0,30, -0,41}; // Wykres wykresu, zmień to dla konkretnego czujnika
Na koniec główna funkcja, w której mierzymy wartość analogową, obliczamy PPM i wyświetlamy ją na LCD, jest podana poniżej
void main () { system_init (); czysty ekran(); lcd_com (FIRST_LINE); lcd_puts ("Kalibracja…."); Ro = SensorCalibration (); //czysty ekran(); lcd_com (FIRST_LINE); lcd_puts ("Gotowe!"); //czysty ekran(); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("kiloomów"); __delay_ms (1500); gas_detect = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Gaz jest obecny"); lcd_com (SECOND_LINE); lcd_puts ("Gaz ppm ="); float rs = read_MQ (); współczynnik zmienności = rs / Ro; lcd_print_number (gas_plot_log_scale (ratio, MQ6_curve)); __delay_ms (1500); czysty ekran(); } else { lcd_com (FIRST_LINE); lcd_puts ("Brak gazu"); } } }
Po pierwsze, RO czujnika jest mierzona w czystym powietrzu. Następnie odczytuje się pin cyfrowy, aby sprawdzić, czy gaz jest obecny, czy nie. Jeśli gaz jest obecny, mierzony jest zgodnie z podaną krzywą LPG.
Użyłem zapalniczki, aby sprawdzić, czy wartość PPM zmienia się po wykryciu gazu. Te zapalniczki mają w sobie gaz LPG, który po uwolnieniu w powietrzu zostanie odczytany przez nasz czujnik, a wartość PPM na wyświetlaczu LCD zmieni się jak pokazano poniżej.
Całość pracy można znaleźć w filmie podanym na dole tej strony. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy lub skorzystaj z naszych forów, aby uzyskać odpowiedzi na inne pytania techniczne.