W tym artykule będziemy omawiać czujniki MQ. Działają one na podobnych zasadach więc nie ma przy nich za dużo pracy. Omówię sposób działania tych czujników krok po kroku abyście lepiej mogli je zrozumieć.
Spis treści
- Krótki opis
- Specyfikacja
- Przykład
- Rezultat
- Pliki do pobrania
Krótki opis
Czujniki MQ są dość dokładne dlatego program musi zawierać odpowiednie przeliczniki. Czujnik do prawidłowego działania musi się rozgrzać za pomocą grzałki, która umiejscowiona jest pod siatką.
Specyfikacja
- Zasilanie: od 2,5 V do 5 V
- Wyjście analogowe oraz cyfrowe
- Wyprowadzenia: złącza goldpin raster 2,54 mm
- Wymiary płytki: 20 x 32 mm
Przykład
Do wykonania tego przykładu potrzebny będzie czujnik MQ-3 (Alkoholu), Arduino, płytka stykowa (Opcjonalnie).
-
Czujnik dymu i łatwopalnych gazów MQ-28.17zł
-
Czujnik alkoholu MQ-38.51zł
-
Czujnik metanu MQ-46.52zł
-
Czujnik LPG, gazu ziemnego i gazu węglowego MQ-58.18zł
-
Moduł czujnika wodoru MQ-810.33zł
-
Czujnik tlenku węgla i łatwopalnych gazów MQ-910.13zł
-
Czujnik alkoholu, benzenu, amoniaku MQ-1357.52zł
-
Czujnik LPG, izobutanu, propanu MQ-68.03zł
-
Czujnik czadu MQ-7 – tlenku węgla CO z komparatorem do Arduino8.82zł
Podłączenie
Na czujniku możemy dostrzec 4 oznaczenia na piach. Są to A0, D0, GND, VCC. Nas interesują tylko A0, GND, VCC. Oznaczone piny odpowiadają kolejno za wyprowadzanie danych (A0), podłączenie do masy (GND), zasilanie (VCC). Bez znaczenia jest to jak wepniemy to na Arduino, ważne aby oznaczenia się zgadzały. Pamiętajmy jednak, że A0 trzeba wpiąć pod wejście analogowe bo inaczej nie zadziała. Całość możemy podpiąć poprzez płytkę stykową ale nie jest to konieczne.
Program
Gdy czujnik jest już podłączony do Arduino, można przystąpić do pisania programu. Czujniki MQ do swojego podstawowego działania nie potrzebują żadnych bibliotek dlatego poza napisaniem programu nie trzeba nic robić.
#define sensor A0
Jest to definicja pinu, do którego podłączony jest czujnik.
void setup(){ Serial.begin(9600); pinMode(sensor, INPUT); }
W funkcji void setup należy uwzględnić komunikację z portem szergowym (Serial.begin(9600)). Następnie należy uwzględnić nasz czujnik jako wejście aby wysyłał on dane do portu szeregowego. W tej funkcji do podstawowego działania czujnika nie będzie trzeba już nic pisać.
void loop() { { float adcValue=0; adcValue+= analogRead(sensor); delay(10);
W funkcji void loop() należy sprawić aby nasz czujnik przeliczał dane, które wysyła na jednostkę którą znamy. W tym przypadku są to promile, ponieważ czujnik MQ-3 wykrywa Alkohol. Poniżej będzie zamieszczony przelicznik na PPM jakby ktoś chciał się bardziej w to zagłębić. Linijka, która zawiera frazę analogRead(sensor) pozwala odczytywać dane z czujnika, więc gdyby do Wejścia A0 podłączyć inny czujnik jego wartość również została by podana w promilach.
float v= (adcValue/10) * (5.0/1024.0); float mgL= 0.05 * v;
Te dwie linijki odpowiadają za przeliczanie wartości czujnika na promile. Wartości te można przeliczyć na wcześniej wspomniane PPM-y. Przelicznik to 1promil=1000ppm. Na tej podstawie tego przelicznika można sprawić aby na porcie szeregowym pojawiały się wartości w PPM.
Serial.print("pom. "); Serial.print(mgL,4); Serial.print(" mg/L "); delay(1000); } }
Ostatnie linijki tego programu odpowiadają za wyświetlanie danych z czujnika w porcie szeregowym. Instrukcja Serial.print odpowiada za to aby te dane pojawiały się w porcie szeregowym.
Rezultat
Rezultatem tych działań powinny być wartości w promilach wyświetlane w porcie szeregowym.