Всем привет. Столкнулся с проблемой обработки данных с датчика газа. Дело в том, что он каждый раз возвращает разрозненные значения, например такие: Код (Text): 59 348 341 360 351 350 354 359 344 364 229 71 233 369 416 Код: Код (Text): #define SMOKE_DETECTOR_SENSOR_PIN 43 int smokeDetectorValue = 0; void smokeDetectorSensorInit() { pinMode(SMOKE_DETECTOR_SENSOR_PIN, INPUT); } void smokeDetectorSensorHandler() { // Если время работы более минуты, то датчик // стабилизировал показания и готов к работе if (workTime > 60000) { smokeDetectorValue = analogRead(smokeDetectorValue); Serial.println(smokeDetectorValue); delay(1000); } } int getSmokeDetectorValue() { return smokeDetectorValue; } Как видно из кода, я начинаю читать с него данные, спустя 60 секунд после запуска arduino. Я, наивный, думал, что данные стабилизируются, но не тут-то было... я наблюдал за показаниями в течении 5 минут, и все эти пять минут он прыгал от ~90 до ~500. А когда я поджигаю бумажку (дымлю), то никаких заметных скачков в показаниях не вижу. Собственно, как с ним правильно работать?
Странно, в спецификации говориться, что этот датчик определяет наличие воспламеняемый и ядовитых газов. Далее вообще говориться, что он мереет водород. (hydrogen): http://files.amperka.ru/datasheets/qm-ng1.pdf
Промышленные газоанализаторы, следящие за концетрацией отравляющих газов, например СО, прогреваются в течении часа. При этом не могу ничего сказать об этом, но в промышленном варианте поднесенная сигарета сильно портит датчик, вплоть до выхода из строя.
Не хорошо. Но это изречение было сделано на основе проведённого эксперимента. Он действительно реагирует на сигаретный дым. А то, что он греется — абсолютно нормально. Более того, он работает не стабильно пока не прогреется до нужного уровня. Это происходит где-то за минуту.
Может быть я не прав, но у меня такое придчувствие складывается что вам надо попробовать внедрить в код экспонентциальный фильтр
Вот страница где обсуждалась проблема идентичная вашей, остановились на экспонентциальном фильтре http://forum.amperka.ru/threads/Помогите-проблема-с-сервой.1450/
На сколько мне известно все газовые датчики работающие по данному принципу, требуют предварительного прогрева перед замером, я на работе пользуюсь подобным, только он промышленный, у него работа начинается с предварительного прогрева в течении 60 секунд, только после этого времени им можно пользоваться, то что он греется это нормально!. Перед замером всегда нужно калибровать датчик, так же данные датчики чувствительны к резкому перемене климата (например лежал прибор в теплом сухом помещении, вы его взли и сразу пошли мерить параметры на зимнюю улицу, 100% что погоду покажет ), Мой вам совет держите его по дальше от влаги, и не пытайтесь его продуть выдыхаемым воздухом!
Желательно этот датчик установить в какую нибудь емкость через которую будет прокачиваться замеряемый воздух при помощи маленького воздушного насоса, на всасывающей стороне желательно подсоединить небольшой отрезок трубки диаметром примерно 1,5 см, длинной примерно такой же, набитую ватой(фильтр)