Skocz do zawartości

Czujnik jakości powietrza


Pomocna odpowiedź

Witam forumowiczów,

jestem w trakcie tworzenia pracy inżynierskiej i jako temat mam "Czujnik jakości powietrza" oparty o Arduino. Dostępne mam następujące czujniki:  gazu (MQ-2, MQ-3, MQ-5, MQ-135), temperatury (BME280) oraz cząstek stałych (PMS7003). W planach mam jeszcze zakup modułu WiFi, żeby móc przesłać i wyświetlać dane mobilnie. Całość będzie oparta o płytkę Maker Uno. W planach nie mam korzystać z każdego elementu z listy, a prawdopodobnie skupię się na dwóch czujnikach gazu (najpewniej z czujnika MQ-2 oraz MQ-135), czujniku temperatury oraz cząstek stałych wraz z modułem wifi.

Pierwsze podłączenia i testy czujników są już za mną poza czujnikiem pyłu. W tym momencie staram się zrozumieć i  znaleźć sposób na kalibrację MQ-2. Chodzi mi zarówno od strony technicznej (zrozumienie wykresów z dokumentacji) jak i od strony praktycznej. Oczywiście, jeśli ktoś ma chęci i czas to nie pogardziłbym pomocą w tej materii. Poza tym udało mi się znaleźć jakiś kod do kalibracji, który w większości rozumiem, poza niektórymi zmiennymi.

Pozdrawiam

Link do komentarza
Share on other sites

2 godziny temu, Krst0 napisał:

Oczywiście, jeśli ktoś ma chęci i czas to nie pogardziłbym pomocą w tej materii. Poza tym udało mi się znaleźć jakiś kod do kalibracji, który w większości rozumiem, poza niektórymi zmiennymi.

@Krst0 na pewno zwiększysz swoje szanse na jakąś pomoc, gdy zadasz jakieś konkretne pytanie, bo fajnie opisałeś projekt, ale nie zadałeś właściwie żadnego pytania 😉

Link do komentarza
Share on other sites

(edytowany)

Okej, jeśli chodzi o czytanie wykresu, to chyba rozumiem o co tam chodzi, znalazłem fajny filmik gdzie zostało to wytłumaczone i jeśli można go tu wrzucić dla osób, które w przyszłości chciałyby z tego skorzystać to to zrobię. Doszedłem do momentu, w którym chciałbym przetestować kod na płytce Arduino, jednakże problem jest taki, że w czujniku MQ-2 ustawia się na potencjometrze opór i ten opór wpisuje się w kod programu, a w mojej wersji czujnika (Waveshare 9529) potencjometru nie ma i póki co nie mogę znaleźć jaki jest opór. 

Edit:

Jest malutki potencjometr na układzie, ale dalej nie wiem jak znaleźć wartość jego oporu. 

Edytowano przez Krst0
Link do komentarza
Share on other sites

15 godzin temu, Krst0 napisał:

Jest malutki potencjometr na układzie, ale dalej nie wiem jak znaleźć wartość jego oporu. 

@Krst0 nie ma na nim żadnych oznaczeń? Przy odłączonym zasilaniu możesz spróbować zmierzyć opór potencjometru - pomiary mogą być zakłamane przez pozostałe elementy w układzie, ale na pewno jakieś wnioski z pomiarów uda Ci się wyciągnąć.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Przeglądałem wiele już poradników jak kalibrować, przeczytałem kilka wersji dokumentacji i w dokumentacji napisali, żeby ustawić czułość czujnika MQ-2 (potencjometrem) na wartość 1000PPM, tyle, że nie ma tam żadnych oznaczeń na potencjometrze jaki opór to jaki PPM i nie ma też nigdzie w specyfikacji tego napisanego albo to przeoczyłem. Wie ktoś może w jaki sposób to wykonać?

Link do komentarza
Share on other sites

A więc poszukiwań ciąg dalszy. Znalazłem jakąś metodę do obliczania PPM gdzie nie trzeba było podawać wartości oporu na potencjometrze (tak mi się zdaje, że to o ten opór chodzi), ale wyniki były nieprawidłowe i potrzebna jest ta informacja w programie do kalibracji, bo bez niej program jest bez sensu, bo wiadomo, że sensor ten oblicza stężenia gazu na podstawie zmiany oporu.

I doszedłem zatem do wniosku, że bez ustawiania oporu się nie obędzie. Próbuję sposobu opisanego w tym poradniku (metoda obliczania rezystancji tam zawarta występuje w większości poradników dot. kalibracji):  https://medium.com/@bloomaman/mq2-gas-sensor-arduino-in-smoke-detector-348375937609. Problem z tym, że nie bardzo rozumiem w jaki sposób ustawić ten opór. Miałby może ktoś chwilkę spojrzeć na ten poradnik i stwierdzić czy dobrze rozumiem z tym oporem i jeśli tak to w jaki sposób mam to zrobić? Przewertowałem cały internet i nie znalazłem pomocnej mi informacji.

Link do komentarza
Share on other sites

Hej!

Wszystko masz opisane w dokumentacji czujnika MQ-2. Aby układ mógł działać prawidłowo, musisz wykonać kalibrację. Do tego celu będziesz potrzebował gazu o znanej koncentracji (ang: span gas). Trochę cię naprowadzę bo w pracy mam trochę do czynienia z czujnikami gazów.

W dokumentacji zalecają użycie i-butane 1000ppm w powietrzu. W praktyce dostępne są gazy kalibracyjne 25% lub 50% LEL in Air (LEL = lower explosion limit).

Do przeliczeń użyjemy 25% LEL bo zmieści się w zakresie pomiarowym czujnika.

Teraz musisz sobie przeliczyć te 25% LEL na stężenie w powietrzu. W MSDS (Material Safety Data Sheet) dla i-butane można sprawdzić że LEL dla tego gazu wynosi 1,8% obiętości.

Czyli 25% LEL to 0,45% Volume. Teraz to stężenie musisz przeliczyć na PPM (parts per milion). Wystarczy pomnożyć przez 10000. czyli 0,45% Vol = 4500 PPM.

Podłączamy gaz do czujnika (będziesz potrzebował reduktora ciśnienia z butli oraz specjalnej nakładki na czujnik).

Ustawiamy sobie RL = 20kOhm (tak jak zalecane w dokumentacji) i mierzymy rezystancję na czujniku Rs.

Znamy co następuje:
- Stężenie 4500 PPM
- RL = 20kOhm
- Rs = zmierzone podczas kalibracji.
- Z wykresu odczytujemy że dla i_butane (LPG) przy danej koncentracji stosunek Rs/Ro = 0.4

Z powyższego łatwo policzyć Ro:
Ro = Rs / 0.4


W dokumentacji jest jeszcze druga tabelka do kompensacji względem temperatury i wilgotności. Dlatego żeby uniknąć dodatkowych przeliczeń, przeprowadzaj kalibrację w temperaturze otoczenia > 20C.

To wyliczone Ro zapisujesz w pamięci urządzenia, a konkretnie zapisujesz wartość napięcia jakie się odkłada na sensorze. Od teraz możesz dokonać normalnych pomiarów.

Kalibrację (ponowne wyliczenie Ro dla czujnika) należy powtarzać co jakiś czas. W profesjonalnych urządzeniach kalibrację przeprowadza się co 3 lub 6 Miesięcy.

Kolejne kalibracje można też przeprowadzić łatwiej, zmieniając wartość potencjometru RL tak aby spadek napięcia na sensorze odpowiadał temu jaki był przy pierwszej kalibracji.

Przeliczanie stężenia gazów: https://www.levitt-safety.com/blog/units-of-measure-lel-vs-percent-by-volume-bv-vs-parts-per-million-ppm-vs-parts-per-billion-ppb/

MSDS dla i-butane: https://www.airgas.com/msds/001030.pdf

Pozdrawiam,
Marek

 

Edytowano przez MR1979
Link do komentarza
Share on other sites

Dziękuję Ci bardzo za odpowiedź, ale powiem Ci szczerze za dużo z niej nie rozumiem. Trochę mam sieczkę w głowie. Jak wrócę z pracy to powiem z czym mam problemy. Tylko może zapytałbym wtedy na priv zamiast tutaj i dopiero gotowe rozwiązanie dla potomnych udostępniłbym w tym miejscu.

Link do komentarza
Share on other sites

Swoją drogą tak teraz pomyślałem, że czujnik może dawać złe wyniki, bo testuję zły gaz. Mam tu na myśli, że kod mam napisany pod testy CO, a jak wiadomo, czujnik ten reaguje również na inne gazy jak butan, itd. I tutaj pojawia się problem, bo testując butanem otrzymuję olbrzymie wyniki CO i pytam skąd mógłbym uzyskać w domowych warunkach CO? W czym on się znajduje? Wiem, że to czad, ale może istnieje możliwość uzyskania małej ilości tego związku.

Link do komentarza
Share on other sites

No dobra, a może ktoś będzie w stanie mi to rozgryźć? To w sumie podstawowe zagadnienie dotyczące tego czujnika, ale możliwe, że tutaj się mylę. A więc czytając wartość na pinie analogowym co dokładnie odczytuję? Napięcie czy może stosunek Rs/Ro (oczywiście wartości nieprzetworzone, bo są w stanie surowym)? 

Link do komentarza
Share on other sites

Odczytujesz spadek napięcia na czujniku. Znając RL i napięcie wejściowe możesz policzyć Rs.

Dnia 4.12.2020 o 08:51, Krst0 napisał:

Swoją drogą tak teraz pomyślałem, że czujnik może dawać złe wyniki, bo testuję zły gaz. Mam tu na myśli, że kod mam napisany pod testy CO, a jak wiadomo, czujnik ten reaguje również na inne gazy jak butan, itd. I tutaj pojawia się problem, bo testując butanem otrzymuję olbrzymie wyniki CO i pytam skąd mógłbym uzyskać w domowych warunkach CO? W czym on się znajduje? Wiem, że to czad, ale może istnieje możliwość uzyskania małej ilości tego związku.

Możesz napisać więcej jak testujesz butanem? Skąd masz butan? Jakie ma stężenie?

Link do komentarza
Share on other sites

(edytowany)

Butan jako gaz z zapalniczki. Z tego co wyczytałem to on najczęściej znajduje się w zapalniczkach, ale może się mylę.

Czyli w zasadzie wartość na wyjściu analogowym to moje napięcie wyjściowe, które jest z zakresu 0-5V, ale zapisane w postaci 0-1023 więc wartość tę dlatego dzielimy w programie na 1023?

Edytowano przez Krst0
Link do komentarza
Share on other sites

W dokumentacji masz wyraźnie napisane: zakres pomiarowy czujnika dla butanu to: 300-5000ppm. Czyli to 0.03 - 0.50% volume. Ty przykładasz 100% stężenie (z zapalniczki) i dziwisz się że dostajesz ogromne wartości.

Nie chcę cię zniechęcać, ale przed kontynuacją projektu polecam zapoznanie się z podstawami kalibracji detektorów gazów, podstawami elektroniki. Później powinieneś zakupić butlę gazu kalibracyjnego z bezpiecznym stężeniem gazu który chcesz mierzyć. I wtedy możesz podjąć próbę budowy detektora.

Wszelkie zabawy z gazami (LPG jak butan, propan, i-butan) są niebezpieczne. A szczególnie niebezpieczne są zabawy z toksycznymi gazami CO i H2S. Zwłaszcza gdy nie wie się co się robi, a z twoich postów wynika że nie wiesz co robisz.

Dnia 4.12.2020 o 08:51, Krst0 napisał:

 Wiem, że to czad, ale może istnieje możliwość uzyskania małej ilości tego związku.

Odradzam ci to. Wszelkie samodzielne próby wytworzenia tlenku węgla są niebezpieczne i mogą stanowić zagrożenie życia dla ciebie i osób postronnych. Nawet małe ilości.

Mam nadzieję że nie czujesz się urażony. Baw się w elektronikę ale lepiej wybierz jakiś inny temat.

Pozdrawiam,
Marek

Link do komentarza
Share on other sites

Oczywiście, że nie czuję się urażony.

Rozumiem nawet Twoje obawy. Ogólnie podstawy kalibracji takich prostych czujników znam (z małymi problemami jak znalezienie oporu czujnika - RL) i przez to, że czytam coraz więcej takich informacji w internecie robi mi się sieczka i kwestionuję to co już wiem. Ze względu na to, że nigdy nie byłem asem z chemii i jest to dziedzina, którą od zawsze omijałem szerokim łukiem to bardziej mam w tym projekcie natury czysto-chemicznej przez co nie jestem w stanie przetestować układu czy zwraca poprawne relatywnie wyniki (wiadomo, nie jest to dokładny czujnik), co z kolei powoduje, że sprawdzam czy, aby w moim programie nie pojawia się błąd wyliczeniowy dający błędne wyniki. Niemniej czytając moje wypowiedzi trudno się z Tobą nie zgodzić, że wygląda jakbym robił projekt po omacku.

15 minut temu, MR1979 napisał:

Mam nadzieję że nie czujesz się urażony. Baw się w elektronikę ale lepiej wybierz jakiś inny temat.

Otóż na ten moment nie mogę wybrać innego tematu, gdyż jest to moja praca inżynierska i nie sądziłem, że zostanę w ten sposób zaskoczony od strony chemicznej.

Link do komentarza
Share on other sites

Stwierdziłem, że przejdę do czujnika MQ-135 i w podobny sposób wtedy postąpię z czujnikiem MQ-2. Znalazłem kilka artykułów w jaki sposób się go kalibruje. Wszędzie korzystają z gotowej biblioteki dostępnej na githubie w tym miejscu. Zamiast bezmyślnie korzystać z niej chciałbym zrozumieć co tam się dzieje i w większości tak jest, ale mam kilka pytań co do tego.

Chciałbym wiedzieć na jakiej podstawie wyliczane są podane poniżej parametry:

/// Calibration resistance at atmospheric CO2 level
#define RZERO 76.63
/// Parameters for calculating ppm of CO2 from sensor resistance
#define PARA 116.6020682
#define PARB 2.769034857

/// Parameters to model temperature and humidity dependence
#define CORA 0.00035
#define CORB 0.02718
#define CORC 1.39538
#define CORD 0.0018

/// Atmospheric CO2 level for calibration purposes
#define ATMOCO2 397.13

O ile RZero jestem jeszcze w stanie zrozumieć, bo podejrzewam, że wartość ta wyliczana jest w podobny sposób co w MQ-2, o tyle nie bardzo wiem skąd jest wzięta wartość dla ATMOCO2 czy dla parametrów do obliczania PPM CO2. Spróbowałem wyliczyć to poprzez policzenie stosunku zlogarytmowanych wartości z wykresu z dokumentacji, ale mi wychodzą zupełnie inne wyniki. Parametr "a" dla wykresu wyliczałem z następującego wzoru: log(0.8/2.3)/log(200/10) co daje mi wynik -0.35251904303.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.