Co potrzebujemy?
- moduł ATMEGA 2560 (klon)
- wyświetlacz LCD keypad SHIELD (nakładka)
A także:
- dowolny buzzer (piezzo)
- moduł czujnika tlenku węgla MQ-5
https://kamami.pl/czujniki-gazow/211360-modmq-5-modul-z-czujnikiem-stezenia-gazow-ziemnych-i-lpg.html
(pamiętajcie: rozróżniamy samodzielny czujnik oraz moduł z czujnikiem, bierzemy ten z modułem czyli gotową płytką z wlutowanym już czujnikiem)
lub opcjonalnie jeśli chcemy zamiast alarmu (lub wraz alarmem) mieć automatyczny wyłącznik pieca 230 volt, wentylatora lub cokolwiek innego co chcemy uruchomić lub rozłączyć w przypadku podwyższonego stężenia czadu
- 1 kanałowy przekaźnik 5V 10A AVR ARM ARDUINO 230 volt
https://nowyelektronik.pl/index.php?id_product=89205&controller=product
Schemat połączeń
Możemy oczywiście sterować czułością alarmu lub zadziałania przekaźnika, specjalnym potencjometrem wbudowanym w czujnik, np. możemy próbnie popuścić trochę gazu z kuchenki lub butli gazowej i zweryfikować odczyt, a potencjometrem ustalić górną granicę przy której zadziała alarm, zalecam ustawienie minimum 50 ppm
Program do wgrania
const int DOUTpin=22;
const int ledPin=52;
int limit;
int value;
#include <LiquidCrystal.h>
int sensorout = A8;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{
lcd.begin(16, 2);
pinMode(DOUTpin, INPUT); //pin cyfrowy czujnika
pinMode(ledPin, OUTPUT); //pin wyjściowy LED lub buzzera
}
long RL = 1000; // 1000 Ohm
long Ro = 830; // 830 ohm
void loop()
{
limit= digitalRead(DOUTpin);
int sensorvalue = analogRead(sensorout);
float VRL= sensorvalue*5.00/1024;
float Rs = ( 5.00 * RL / VRL ) - RL;
float ppm = 100 * pow(Rs / Ro,-1.53); // ppm = 100 * ((rs/ro)^-1.53);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Stezenie gazu: ");
lcd.setCursor(0, 1);
lcd.print(ppm);
lcd.println(" ppm ");
delay(500);
lcd.clear();
delay(50);
if (limit == HIGH){
digitalWrite(ledPin, LOW);
}
else{
digitalWrite(ledPin, HIGH);
}
}
Sketch do pobrania
https://drive.google.com/open?id=11WU3tuA7MIOyr9j-xiiHVRG0wswwQPN0