Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

piątek, 1 kwietnia 2011

Arduino i czujniki gazów


Autor: Piotr Rzeszut (Piotrva)
Redakcja: Dondu

Artykuł jest częścią cyklu: Kurs Arduino

Dosyć ciekawymi modułami z punktu widzenia użyteczności są czujniki różnych gazów.

Układy te są dziecinnie proste w obsłudze, ale zanim przejdziemy do ich wykorzystania musimy nieco się im przyjrzeć.

Porady tu przedstawione dotyczą przede wszystkim czujników MQ-2 i MQ-3 (odpowiednio gazów łatwopalnych i alkoholu). W przypadku innych czujników sprawdź koniecznie czy nie są wymagane inne warunki ich uruchomienia niż podano w artykule.


Czujnik typu MQ
Czujnik typu MQ

Czujnik ten otrzymałem do testów ze sklepu:




Dokumentacja:

Budowa czujnika

Budowa czujnika jest z jednej strony prosta, ale z drugiej strony bardzo zaawansowana technologicznie.
Zasadniczo czujnik taki składa się (nie licząc metalowej siateczki będącej osłoną mechaniczną) z grzałki i elementu sensorowego. Grzałka ma za zadanie zapewnienie odpowiedniej temperatury pracy czujnika natomiast najważniejszym elementem sensora jest element wrażliwy na gaz.

Element ten działa na zasadzie powierzchniowej reakcji z danym gazem. W wyniku takiego kontaktu zmieniają się właściwości tej substancji i w konsekwencji, co dla nas interesujące, zmienia się rezystancja tego elementu, co możemy zmierzyć. Gdy gaz znika z otoczenia podwyższona temperatura pomaga w jego uwolnieniu z powierzchni i przywróceniu czujnika do pierwotnego stanu.

Warto zwrócić uwagę na 2 niepożądane właściwości tych czujników. Po pierwsze są one wrażliwe na zmiany temperatury - lekki podmuch powoduje obniżenie temperatury i wyraźny "skok odczytu". Drugą właściwością tych czujników jest brak ścisłej selektywności. To że dany czujnik jest dedykowany np. do wykrywania oparów alkoholu (MQ-3) nie oznacza, ze będzie wrażliwy tylko na ten gaz, a jedynie tyle, że na dany gaz będzie bardziej wrażliwy niż na inne. I tak wspomniany czujnik alkoholu dawał także wyraźny odczyt po potraktowaniu izobutanem (gaz do zapalniczek).

Oczywiście ostudzę nieco Wasz zapał (o budowie alkomatu za grosze na bazie Arduino), gdyż czujniki te nie mają wystarczającej stabilności ani certyfikatów do takich pomiarów a także jakakolwiek kalibracja jest trudna do przeprowadzenia poza warunkami laboratoryjnymi.

Podłączenie czujnika i typy "podstawek"

Oczywiście musimy odpowiednio zasilić i podłączyć nasz czujnik. Czujniki typu MQ-x mają 6 wyprowadzeń, jak pokazano na rysunku:


Czujnik typu MQ - widok pinów
Czujnik typu MQ - widok pinów


Środkowe piny po przeciwnych stronach to 2 wyprowadzenia grzałki, którą należy zasilić napięciem 5V +/-0,1V. Zewnętrzne piny po każdej ze stron powinny być połączone ze sobą. Każda para to jedna z elektrod elementu sensorowego (oznaczone A i B). Schemat podłączenia czujnika za notą katalogową jest następujący:


Podłączenie czujników typu MQ
Podłączenie czujników typu MQ

Oczywiście zamiast rezystora nastawnego polecam użycie rezystora 10k, powinien on w większości przypadków zapewnić dobry odczyt a z drugiej strony nie dopuścić do uszkodzenia czujnika. Jak widzimy w tej konfiguracji czujnik jest elementem rezystancyjnego dzielnika napięcia, zatem musimy zadbać by nie popłynął przez niego zbyt duży prąd, który mógłby go uszkodzić nieodwracalnie.

Ogólnie piny tych sensorów nie są wyprowadzone w wygodnym dla nas rozstawie, dlatego warto zastanowić się (celem uczynienia układu estetycznym) nad wykonaniem lub zakupem podstawki pod taki czujnik.

Podstawki, które możemy kupić, występują zwykle w 2 wersjach - prostej, posiadającej miejsce na sam czujnik, złącze goldpin oraz rezystor stanowiący drugą część dzielnika lub zaawansowanej, która zawiera na pokładzie zwykle niebieski potencjometr i komparator, dzięki temu oprócz sygnału analogowego z dzielnika, którego elementem jest sensor, mamy dostępny także sygnał cyfrowy informujący o przekroczeniu "wartości zaprogramowanej potencjometrem". Zwykle na tych płytkach znajduje się też dioda LED sygnalizująca stan wyjścia cyfrowego.


Moduł na czujniki MQ bez komparatora
Moduł na czujniki MQ bez komparatora


Moduł na czujniki MQ bez komparatora
Moduł na czujniki MQ bez komparatora


Moduł na czujniki MQ z komparatorem
Moduł na czujniki MQ z komparatorem

Na górnym zdjęciu widzimy także sposób montażu wspomnianego w tekście rezystora.


Arduino, czyli kropeczka nad i...

Teraz kolej na podłączenie czujnika do Arduino. Nie ma tu nic nadzwyczajnego, GND do GND, VCC do +5V a sygnał analogowy do dowolnego wejścia analogowego Arduino. Należy pamiętać tylko o jednej kwestii - grzałka czujnika pobiera znaczny prąd (około 150-200mA), w związku z czym cała płytka musi posiadać odpowiednio wydajne zasilanie. Należy uważać także na nieoryginalne zestawy pochodzące z niepewnych źródeł - zastosowane w nich stabilizatory 5V mogą nie mieć wystarczającej wydolności prądowej.

Następnie musimy odczekać aż czujnik się nagrzeje (może wydostać się z niego niewielka ilość "dymu" po długotrwałym okresie nieużywania). Do poprawnej pracy producent kazałby nam czekać aż kilkadziesiąt godzin (nawet 48), jednak pierwsze eksperymenty możemy zacząć wykonywać już po 10-15 minutach od podłączania zasilania grzałki.

Warto zwrócić uwagę na to, że czujnik CO jest nietypowy i wymaga modulacji napięcia zasilania grzałki między napięciami 5V i 1,5V - jest to przypadek wyjątkowy, którego nie omawiam i do którego poniższe porady nie mają zastosowania. Ogólnie musimy sprawdzić w karcie katalogowej stosowanego czujnika czy nie wymaga on innych parametrów niż podane przeze mnie. Dlatego nie biorę odpowiedzialności za wszelkie szkody powstałe w wyniku stosowania moich porad.

Zawsze najpierw wgraj nowy program a dopiero potem podłącz sprzęt. W przeciwnym wypadku, gdy stary program używał wykorzystywanych teraz wyprowadzeń możesz uszkodzić urządzenia.


A na koniec czas na dosłownie kilka linijek programu:

gas_software.c

void setup(){
  Serial.begin(9600);
  pinMode(A0, INPUT);
}

void loop(){
  int pomiar=analogRead(A0);
  Serial.print(pomiar);
  if(pomiar>100){
    Serial.print(" GAS DETECTED");
  }
  Serial.println();
  delay(250);
}


Do pobrania: gas_software.c (kopia)

Jedyne czego one dokonują to pomiaru napięcia na pinie A0 (tam akurat podłączyłem swój moduł), wyświetlenia wyniku na ekranie komputera (poprzez terminal RS232) a także porównania wyniku pomiaru z wartością powyżej której uznamy, ze wykryliśmy gaz. Wartość tę najlepiej dobrać eksperymentalnie do naszych warunków pracy, sprawdzając jaki będzie odczyt czujnika w obecności danej substancji.

Po zatrzymaniu dopływu substancji zaobserwujemy powolne spadanie odczytu do wartości początkowej (w miarę jak substancja będzie podlegała desorpcji pod wpływem temperatury). Możemy także zaobserwować wpływ temperatury biorąc czujnik w ręce czy dmuchając na niego oraz wpływ innych substancji na wartość odczytu.

Nigdy nie pozostawiaj czujnika na długotrwały kontakt z substancją w dużej ilości - może to doprowadzić do jego uszkodzenia w wyniku trwałego połączenia substancji z sensorem - naprawa po takim zdarzeniu wymaga specjalnego wygrzewania czujnika.

Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

1 komentarz:

  1. Witam,
    Czy wynik można by było wyświetlać w ppm? albo w promilach? a jeśli tak to jak tego dokonać?

    OdpowiedzUsuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.