- Czujniki gazów serii MQ
- Przygotowanie sprzętu:
- Podejście do pomiaru PPM z czujników gazu MQ:
- Obliczanie wartości Ro w czystym powietrzu:
- Zmierz wartość Rs:
- Powiązanie stosunku Rs / Ro z PPM:
- Program do obliczania PPM za pomocą czujnika MQ:
- Wyświetlanie wartości PPM na sprzęcie z Arduino i MQ-137:
Od epoki przemysłowej my, ludzkość, szybko się rozwijamy. Z każdym postępem zanieczyszczamy również nasze środowisko i ostatecznie je degradujemy. Teraz globalne ocieplenie jest alarmującym zagrożeniem, a nawet powietrze, którym oddychamy, staje się krytyczne. Dlatego monitorowanie jakości powietrza również zaczęło nabierać znaczenia. W tym artykule dowiemy się, jak używać dowolnego czujnika gazu z serii MQ z Arduino i pokazywać wyjście w PPM (części na milion). PPM jest również wyrażane w miligramach na litr (mg / l). Czujniki te są powszechnie dostępne i są również niezawodne do pomiaru różnych rodzajów gazów przedstawionych poniżej
Czujniki gazów serii MQ
- Dwutlenek węgla (CO2): MG-811
- Tlenek węgla (CO): MQ-9
- Całkowite lotne związki organiczne (TVOC): CCS811
- Równoważny dwutlenek węgla (eCO2): CCS811
- Tlenek metalu (MOX): CCS811
- Amoniak: MQ-137
- Jakość powietrza: MQ-135
- LPG, alkohol, dym: MQ2
Użyliśmy już MQ2 do wykrywania dymu i MQ-135 do projektu monitorowania jakości powietrza. Tutaj będę używał czujnika MQ-137 firmy sainsmart do pomiaru amoniaku w ppm. Z czujnikiem w ręku przejrzałem wszystkie dostępne tutoriale i stwierdziłem, że nie ma odpowiedniej dokumentacji jak mierzyć gaz w ppm. Większość tutoriali dotyczy tylko wartości analogowych lub wprowadza pewne stałe, które nie są wiarygodne do pomiaru wszystkich rodzajów gazu. Tak więc po długim zabawie w Internecie w końcu znalazłem, jak używać tych czujników gazu serii MQ do pomiaru ppm za pomocą Arduino. Wyjaśniam wszystko od dołu bez żadnych bibliotek, abyś mógł użyć tego artykułu dla dowolnego dostępnego u Ciebie czujnika gazu.
Przygotowanie sprzętu:
Czujniki gazu MQ można zakupić jako moduł lub jako sam czujnik. Jeśli twoim celem jest pomiar tylko ppm, najlepiej kupić sam czujnik, ponieważ moduł jest dobry do używania tylko pinów cyfrowych. Jeśli więc kupiłeś już moduł, musisz wykonać mały hack, który zostanie omówiony dalej. Na razie załóżmy, że kupiłeś czujnik. Schemat pinów i podłączenie czujnika pokazano poniżej
Jak widać, wystarczy podłączyć jeden koniec „H” do zasilania, a drugi koniec „H” do masy. Następnie połącz oba A i oba B. Podłącz jeden zestaw do zasilania, a drugi do pinu analogowego. Rezystor R L odgrywa bardzo ważną rolę w działaniu czujnika. Więc zanotuj, której wartości używasz, zalecana jest wartość 47k.
Jeśli kupiłeś już moduł, powinieneś prześledzić swoje ślady PCB, aby znaleźć wartość swojego R L na płytce. Grauonline wykonał już tę pracę za nas, a schemat obwodu płytki czujnika gazu MQ znajduje się poniżej.
Jak widać rezystor R L (R2) jest podłączony między pinem Aout a masą, więc jeśli masz moduł, wartość R L można zmierzyć za pomocą multimetru w trybie rezystancji między pinami Vout i Vcc moduł. W moim czujniku gazu sainsmart MQ-137 wartość RL wynosiła 1K i znajdowała się tutaj jak na poniższym obrazku.
Jednak roszczenia stronie internetowej, że oferuje pulę zmienny R L, co nie jest prawdą, jak wyraźnie widać na schemacie, pula służy do ustawiania zmiennej napięcia na op-amp i nie ma nic wspólnego z R L. Musimy więc ręcznie przylutować rezystor SMD (1K) pokazany powyżej i musimy użyć własnego rezystora przez pin Ground i Vout, który będzie działał jako RL. Najlepsza wartość dla RL to 47K, jak sugeruje arkusz danych, dlatego użyjemy tego samego.
Podejście do pomiaru PPM z czujników gazu MQ:
Teraz, gdy znamy wartość R L, przejdźmy do rzeczywistego pomiaru ppm z tych czujników. Podobnie jak w przypadku wszystkich czujników, punktem wyjścia jest arkusz danych. Arkusz danych MQ-137 jest podany tutaj, ale upewnij się, że znalazłeś prawidłowy arkusz danych dla swojego czujnika. W arkuszu danych potrzebujemy tylko jednego wykresu, który zostanie wykreślony względem (Rs / Ro) VS PPM, jest to ten, którego potrzebujemy do naszych obliczeń. Więc pogadaj i trzymaj gdzieś pod ręką. Ten dla mojego czujnika pokazano poniżej.
Okazuje się, że czujnik MQ137 może mierzyć NH3, C2H6O, a nawet CO. Ale tutaj interesują mnie tylko wartości NH3. Możesz jednak użyć tej samej metody do obliczenia ppm dla dowolnego czujnika. Ten wykres jest jedynym źródłem, w którym możemy znaleźć wartość ppm i gdybyśmy mogli w jakiś sposób obliczyć stosunek Rs / Ro (oś X), moglibyśmy użyć tego wykresu do znalezienia wartości ppm (oś Y). Aby znaleźć wartość Rs / Ro, musimy znaleźć wartość Rs i wartość Ro. Gdzie Rs to rezystancja czujnika przy stężeniu gazu, a Ro to rezystancja czujnika w stanie czystym.
Tak… to jest plan, zobaczmy, jak możemy uciec z tego….
Obliczanie wartości Ro w czystym powietrzu:
Zauważ, że na wykresie wartość Rs / Ro jest stała dla powietrza (gruba niebieska linia), więc możemy to wykorzystać na swoją korzyść i powiedzieć, że gdy czujnik pracuje na świeżym powietrzu, wartość Rs / Ro wyniesie 3,6 patrz rysunek poniżej
Rs / Ro = 3,6
Z arkusza danych otrzymujemy również wzór do obliczenia wartości Rs. Wzór przedstawiono poniżej. Jeśli chcesz dowiedzieć się, w jaki sposób wyprowadza się tę formułę, możesz zapoznać się z systemami jay con, chciałbym również podziękować im za pomoc w rozwiązaniu tego problemu.
W tym wzorze wartość Vc to nasze napięcie zasilania (+ 5V), a wartość R L to ta, którą już obliczyliśmy (47K dla mojego czujnika). Jeśli napiszemy mały program Arduino, możemy również znaleźć wartość V RL i ostatecznie obliczyć wartość Rs. Daję się program Arduino poniżej którego odczytuje analogowe napięcie (V RL) czujnika i oblicza wartości R przy użyciu tego wzoru, i wreszcie wyświetla na monitorze szeregowego. Program jest dobrze wyjaśniony w sekcji komentarzy, więc pomijam jego wyjaśnienie tutaj, aby artykuł był krótki.
/ * * Program do pomiaru wartości R0 dla znanego RL przy klimatyzacji świeżego powietrza * Program: B.Aswinth Raj * Strona internetowa: www.circuitdigest.com * Data: 28-12-2017 * / // Ten program działa najlepiej w pomieszczeniu ze świeżym powietrzem o temperaturze Temp: 20 ℃, Wilgotność: 65%, Stężenie O2 21% i gdy wartość Rl wynosi 47K #define RL 47 // Wartość rezystora RL wynosi 47K void setup () // Działa tylko raz {Serial.begin (9600); // Inicjalizacja portu szeregowego COM w celu wyświetlenia wartości} void loop () {float analog_value; pływak VRL; float Rs; float Ro; for (int test_cycle = 1; test_cycle <= 500; test_cycle ++) // Odczytaj wyjście analogowe czujnika 200 razy {analog_value = analog_value + analogRead (A0); // dodaj wartości dla 200} analog_value = analog_value / 500.0; // Weź średnią VRL = analog_value * (5.0 / 1023.0);// Zamień wartość analogową na napięcie // RS = ((Vc / VRL) -1) * RL to wzór, który otrzymaliśmy z arkusza danych Rs = ((5.0 / VRL) -1) * RL; // RS / RO wynosi 3,6, jak otrzymaliśmy z wykresu arkusza danych Ro = Rs / 3,6; Serial.print ("Ro na świeżym powietrzu ="); Serial.println (Ro); // Wyświetl obliczone opóźnienie Ro (1000); // opóźnienie 1sek}
Uwaga: Wartość Ro będzie się zmieniać, pozwól czujnikowi na wstępne podgrzanie przez co najmniej 10 godzin, a następnie użyj wartości Ro.
Uznałem, że wartość Ro wynosi 30 kΩ dla mojego czujnika (gdy R L wynosi 47 kΩ). Twój może się nieznacznie różnić.
Zmierz wartość Rs:
Teraz, gdy znamy wartość Ro, możemy łatwo obliczyć wartość Rs za pomocą powyższych dwóch wzorów. Należy pamiętać, że wartość Rs, która została obliczona wcześniej, dotyczy stanu świeżego powietrza i nie będzie taka sama, gdy w powietrzu będzie obecny amoniak. Obliczenie wartości Rs nie jest dużym problemem, którym możemy bezpośrednio zająć się w finalnym programie.
Powiązanie stosunku Rs / Ro z PPM:
Teraz, gdy wiemy, jak zmierzyć wartość Rs i Ro, będziemy mogli obliczyć ich stosunek (Rs / Ro). Następnie możemy użyć wykresu (pokazanego poniżej), aby odnieść się do odpowiedniej wartości PPM.
Chociaż linia NH3 (kolor cyjan) wydaje się być liniowa, w rzeczywistości nie jest liniowa. Wygląd jest taki, że skala jest podzielona nierównomiernie dla wyglądu. Zatem związek między Rs / Ro i PPM jest w rzeczywistości logarytmiczny, co można przedstawić za pomocą poniższego równania.
log (y) = m * log (x) + b gdzie, y = stosunek (Rs / Ro) x = PPM m = nachylenie prostej b = punkt przecięcia
Aby znaleźć wartości m i b, musimy wziąć pod uwagę dwa punkty (x1, y1) i (x2, y2) na naszej linii gazowej. Tutaj pracujemy z amoniakiem, więc dwa punkty, które rozważałem, to (40,1) i (100,0,8), jak pokazano na powyższym obrazku (zaznaczone na czerwono) z czerwonym oznaczeniem.
m = / m = log (0,8 / 1) / log (100/40) m = -0,243
Podobnie dla (b) pobierzmy wartość punktu środkowego (x, y) z wykresu, który wynosi (70,0,75), jak pokazano na powyższym obrazku (zaznaczony na niebiesko)
b = log (y) - m * log (x) b = log (0,75) - (-0,243) * log (70) b = 0,323
To wszystko, teraz, gdy obliczyliśmy wartość m i b, możemy zrównać wartość (Rs / Ro) do PPM za pomocą poniższego wzoru
PPM = 10 ^ {/ m}
Program do obliczania PPM za pomocą czujnika MQ:
Kompletny program do obliczania PPM za pomocą czujnika MQ jest podany poniżej. Poniżej wyjaśniono kilka ważnych kwestii.
Przed przystąpieniem do programu musimy wprowadzić wartości oporu obciążenia (RL), nachylenia (m), przecięcia (b) oraz wartości oporu na świeżym powietrzu (Ro). Procedura uzyskiwania wszystkich tych wartości została już wyjaśniona, więc po prostu wprowadźmy je teraz
# zdefiniować RL 47 // Wartość rezystora RL to 47K # zdefiniować m -0,263 // Podać obliczone nachylenie # zdefiniować b 0,42 // Podać obliczony punkt przecięcia # zdefiniować Ro 30 // Podać znalezioną wartość Ro
Następnie odczytaj spadek napięcia na czujniku (VRL) i zamień go na napięcie (0 V do 5 V), ponieważ odczyt analogowy zwróci tylko wartości od 0 do 1024.
VRL = analogRead (MQ_sensor) * (5,0 / 1023,0); // Zmierz spadek napięcia i zamień na 0-5V
Teraz, gdy obliczana jest wartość VRL, możesz użyć wzoru omówionego powyżej, aby obliczyć wartość Rs, a także stosunek (Rs / Ro)
stosunek = Rs / Ro; // znajdź stosunek Rs / Ro
Na koniec możemy obliczyć PPM za pomocą naszego wzoru logarytmicznego i wyświetlić go na naszym monitorze szeregowym, jak pokazano poniżej
podwójne ppm = pow (10, ((log10 (stosunek) -b) / m)); // użyj wzoru do obliczenia ppm Serial.print (ppm); // Wyświetl ppm
Wyświetlanie wartości PPM na sprzęcie z Arduino i MQ-137:
Dość całej teorii pozwoli nam zbudować prosty obwód z czujnikiem i wyświetlaczem LCD do wyświetlania wartości gazu w PPM. Tutaj czujnik, którego używam, to MQ137, który mierzy amoniak, schemat obwodu dla mojej konfiguracji pokazano poniżej.
Podłącz czujnik i wyświetlacz LCD, jak pokazano na schemacie połączeń i załaduj kod podany na końcu programu. Musisz zmodyfikować wartość Ro, jak wyjaśniono powyżej. Dokonaj również zmian w wartościach parametrów, jeśli używasz innego rezystora jako RL innego niż 4,7K.
Pozostaw urządzenie włączone przez co najmniej 2 godziny przed wykonaniem jakichkolwiek odczytów (zaleca się 48 godzin w celu uzyskania dokładniejszych wartości). Czas ten nazywany jest czasem nagrzewania, podczas którego czujnik się nagrzewa. Następnie powinieneś być w stanie zobaczyć wartość PPM i napięcie wyświetlane na ekranie LCD, jak pokazano poniżej.
Teraz, aby upewnić się, że wartości są rzeczywiście związane z obecnością amoniaku, umieśćmy ten zestaw w zamkniętym pojemniku i wyślijmy do niego gaz amoniakalny, aby sprawdzić, czy wartości rosną. Nie mam ze sobą odpowiedniego miernika PPM skalibrować go i byłoby wspaniale, gdyby ktoś z miernikiem mógł przetestować tę konfigurację i dać mi znać.
Możesz obejrzeć poniższy film, aby sprawdzić, jak zmieniły się odczyty w zależności od obecności amoniaku. Mam nadzieję, że zrozumiałeś koncepcję i podobała Ci się nauka. Jeśli masz jakiekolwiek wątpliwości, zostaw je w sekcji komentarzy lub aby uzyskać bardziej szczegółową pomoc, skorzystaj z forum tutaj.