В помощь ПОЖАРНЫМ

koxx
Offline
Зарегистрирован: 26.11.2014

   Всем доброго времени суток! Господа, нужна помощь. Вчера на пожаре пострадало три бойца. Было возгорание мебели на кухне, ребята пошли на разведку в дыхательных аппаратах, и тут....БАХ...утечка газа.

   Так вот задача сделать персональный газоанализатор, естественно для начала только прототип, из дешёвых китайских деталий. 

   В наличии имеется - Ардуино Уно (будет заменяна на НАНО), датчик MQ135, регистр сдвига 74HC595, и много разных ЛЕД диодиков. Далее сенсор газа будет заменён на импортный дорогой, направленный только на пропан, бутан, метан. Для индикация концетрации газа будут использованы 8 диодов.  

   Помогите со скетчем!!! 

  

ng0d
Offline
Зарегистрирован: 04.05.2013

Никто Вам не будет писать скетч, особенно под китайские датчики. Почему, если кто то погибнет из за такого вот скетча, бред какой то вы просите. Для этого применяются профессиональные устройства.

toc
Offline
Зарегистрирован: 09.02.2013

ng0d,
вас же не заставляют документ подписывать.
на этом сайте читал несколько историй. В одной самоделка на китайских датчиках спасла от потопа, в другой от дымящей кастрюли на плите.

koxx,
предлагаю:
1. много светодиодов заменить одной пищалкой (не самой тихой)
2. прибор должен работать так
- включили, воздух чистый - попискивает раз в 10 сек, мол "я включён". Если батарейки слабые - двойные писки.
- унюхал чуть-чуть газа - настойчивее пищит раз в 2 сек тройные писки
- много - не переставая гудит.
3. в инструкции написать "включать и выключать прибор только на открытом воздухе!"
4. носить в нагрудном кармане из сеточки
5. у меня пока нет датчика, а вы почитайте http://playground.arduino.cc/Main/MQGasSensors

p.s. недавно меня спасали пожарные, газовщики и электрики.
Народ, ставьте "изолятор" между газовой трубой и гибкой подводкой!!!

toc
Offline
Зарегистрирован: 09.02.2013

koxx, кажется, что ваш MQ135 не годен для бытового газа: "Sensitive for Benzene, Alcohol, smoke."

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ну датчик то точно не для реальных задач, частота измерения совсем небольшая, а в данном случае нужно постоянно отслеживать концентрацию газа, хотя для отладки принципа решения задачи - можно, конечно. Потом всё равно входную часть переделывать под другие датчики.

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

для начала нужно определится с датчиком

http://www.sensorica.ru/d9-1.shtml

например MQ-216A

да и вот почитать

http://playground.arduino.cc/Main/MQGasSensors

ng0d
Offline
Зарегистрирован: 04.05.2013

Мой Вам совет, не выдумывайте устройство, ради которого зависят жизни, если это только тестовый вариант, то да, но если это будет играть реальную роль, не стоит. Потом будут такие вопросы, ребята, погиб человек, в скетче была ошибка, даумайте головой!!!

koxx
Offline
Зарегистрирован: 26.11.2014

Не надо меня отговаривать это делать, я же не спрашивал, стоит ли это делать или нет. Использывать буду только лично для себя. Про датчик, другого сейчас нету, он служит чисто для того, что-бы был. Будут и диоды, и вибро, и пищалка.

В коде много лишнего, но как-то так. Дисплей подключен временно, так нагляднее. 

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define DIODE_DROP  0.7 

int mqx_analogPin = A3; 
int sensorValue = 0; 
int max_analogPin = A2;


#define led 5
#define led2 6
#define led3 7
#define led4 8
#define led5 9
#define led6 10
#define buzzer 4
#define led7 11
#define led8 12


void setup() {
Serial.begin (9600);

pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);

lcd.init();
lcd.backlight();
lcd.begin(16,2); 
lcd.setCursor(0,0);
lcd.print("GAS");
lcd.setCursor(9,0);
lcd.print("ALK");
lcd.setCursor(0,1);
lcd.print("Battery");

}
void loop() {

int sensor = analogRead(mqx_analogPin);
float voltage = analogRead(A0) / 1024.0 * 10.0;
  if (voltage > 0.1)
  voltage += DIODE_DROP;
int alk = analogRead(max_analogPin);  

if (sensor < 90) 
{
  digitalWrite(led,HIGH);
  digitalWrite(led2,LOW);
  digitalWrite(led3,LOW);
  digitalWrite(led4,LOW);
  digitalWrite(led5,LOW);
  digitalWrite(led6,LOW);

  
  
}
if (sensor > 90)
{
digitalWrite(led2,HIGH);
digitalWrite(led,HIGH);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);


}
if (sensor > 100)
{
digitalWrite(led3,HIGH);
digitalWrite(led,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);


}
if (sensor > 110)
{
  digitalWrite(led4,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led,HIGH);
  digitalWrite(led5,LOW);
  digitalWrite(led6,LOW);

  
}
if (sensor >  120)
{
  digitalWrite(led4,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led,HIGH);
  digitalWrite(led5,HIGH);
  digitalWrite(led6,LOW);
 
}
if (sensor > 140)
{
  digitalWrite(led4,HIGH);
  digitalWrite(led3,HIGH);
  digitalWrite(led2,HIGH);
  digitalWrite(led,HIGH);
  digitalWrite(led5,HIGH);
  digitalWrite(led6,HIGH);
  delay(100);
  digitalWrite(led4,LOW);
  digitalWrite(led3,LOW);
  digitalWrite(led2,LOW);
  digitalWrite(led,LOW);
  digitalWrite(led5,LOW);
  digitalWrite(led6,LOW);
  delay(100);
  }
 if(voltage > 6.00)
  {
    digitalWrite(led7,HIGH);
    digitalWrite(led8,LOW);
  }
  if(voltage > 4.00)
  if(voltage < 6.00)
  {
  digitalWrite(led7,HIGH);
  delay(500);
  digitalWrite(led7,LOW);
  delay(500);
  digitalWrite(led8,HIGH);
  delay(500);
  digitalWrite(led8,LOW);
  delay(100);
  }
 if(voltage < 4.00)
  {
    digitalWrite(led8,HIGH);
    digitalWrite(led7,LOW);
  }
  {
  lcd.setCursor(4,0);   //Set Cursor again to first column of second row
  lcd.print(sensor); //Print measured distance
  lcd.print(" ");
  lcd.setCursor(8,1);
  lcd.print(voltage);
  lcd.print("V");
  lcd.setCursor(13,0);
  lcd.print(alk);
  lcd.print(" ");
  delay(100);
}
Serial.print("sensor = " );                       
  Serial.println(sensor);  
  
Serial.print("voltage = ");
Serial.println(voltage);
delay(100);
}

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

koxx пишет:

Про датчик, другого сейчас нету, он служит чисто для того, что-бы был.

Я бы организовал как-то прокачку анализируемого воздуха через датчик, хоть немного уменьшится время обнаружения газа. С другой стороны, чем оно Вам поможет в ситуации, описанной выше? Обычно, перед тем, как начинать какие-то действия на пожаре - помещение обесточивают. Ну, надо просто так же и газ превентивно отключать... Получится и безопаснее и надежнее...