Датчики серии MQ-* и библиотека TroykaMQ

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Андрей Новичок, 20 сен 2018.

Метки:
  1. Мне нужен был не квест, а официальное подтверждение производителя, так, чтобы чувствовать себя уверенно. Запрос был на hwsensors, ответ пришёл от Winsen :). Футболили запрос не долго, с учётом того, что он был сформирован 4 утра по Пекину.
    Ну, врочем, Вы были правы, надо было копать раньше, плюсую. Китайский не знаю, увы ;).
     
  2. Модели ppm и влажности по новому Data sheet.
    Здравствуйте, товарищи!
    Давайте скажем спасибо Davide Gironi за его пост: http://davidegironi.blogspot.com/2017/05/mq-gas-sensor-correlation-function.html
    Он подсказал идею использовать Web Pilot Degitizer : https://apps.automeris.io/wpd/. Сильно ускоряет работу.

    Формируем модели по принципам, изложенным ранее:
    Ppm: http://forum.amperka.ru/threads/Датчики-серии-mq-и-библиотека-troykamq.16377/page-5#post-214822
    Влажность и температура: http://forum.amperka.ru/threads/Датчики-серии-mq-и-библиотека-troykamq.16377/page-5#post-209152

    Картинок не будет - не охота делать. Смотрите все графики во вложенном файле.

    new humidity and temperature model
    Humidity - 0.0...1.0, т.е. нормированное к единице.
    Код (C++):
    k_hum = 0.00672096284322792*Hum + (-0.0159038179354688);
    b_hum = -0.741244323718154*Hum + 1.77535862501753;
    RsR0 = RsR0_getting*(k_hum*temp + b_hum);
    new ppm model
    Код (C++):
    float ppm = 23.9942804698987*pow(RsR0,-1,65929225852548);
     

    Вложения:

  3. Но это не победа здравого смысла. Это просто очередная модель.
    Давайте углубимся, так сказать в тему и сравним две модели для двух Data sheets. Посмотрим, что там получается.
    'ppm_old(Rs/R0)=1030,76484196051*(Rs/R0)^(-2,78859693913661)
    'ppm_new(Rs/R0)=23,9942804698987*(Rs/R0)^(-1,65929225852548)
    Я честно скажу - решил просто попробовать. Ребята, это ЗАЧОТ, через букву "о".
    Нормированный график практически совпадает. Все желающие могут ознакомиться, все данные есть здесь и в более ранних постах.
    График совпадений.png
    Это была модель ppm. С моделью влажности нас такое "счастье" не ждёт, т.к. данные всё-таки отличаются. Представлен график при 20 градусах Цельсия.
    Расхождения моделей влажности.png
    Можно, конечно, "подогнать" данные из предыдущего Data sheet, преиграв 33% влажности на 65%, но мы делать этого не будем.

    Всё равно ОЧЕНЬ ХОРОШО!!!
    Вы скажите, что ну, подумаешь, получил из двух бумажек одно и то же, то же невидаль! У нас нет и не может быть фактических исследований по простой причине - соблюдение техники безопасности с газом. Работаем с тем, что есть.
    Здесь важно другое: основная зависимость ppm от Rs/R0 принципиально подтвержена. Данные были получены разными способами из разных источников.
    Мы не сможем никогда с датчиками такого типа определить рельные частицы на миллион ppm, не сможем их перевести в проценты от объёма, НКПР, мг/м^3 и т.д. А "чистый воздух" вообще понятие относительное. Но зато у нас есть ЗАВИСИМОСТЬ.
    И с этой зависимостью можно работать.
    Я пока не знаю к чему это приведёт, но, похоже, имеет смысл, в отсутствии точки опоры, сместить акцент на ИЗМЕНЕНИЕ параметров.
    Все замечания принимаются.
     

    Вложения:

  4. parovoZZ

    parovoZZ Гуру

    Ты хочешь пройти поверку с этим датчиком?
     
  5. Уважаемый parovoZZ, это бессмысленно, точнее - экономически не эффективно. Я хочу выжать что можно в имеющихся уловиях.
     
  6. parovoZZ

    parovoZZ Гуру

    Так а есть повторяемость среди выборки экземпляров? Мне кажется, что 10 знаков после запятой это как-то много, когда первые знаки значащие.
     
  7. Вы чего то не то пишите. Давайте по делу. Измерений, кстати, у меня вагон, штук 30 где-то. Могу опубликовать, только смысла нет, т.к никому не надо без аналитики.
     
  8. parovoZZ

    parovoZZ Гуру

    Как не то? Вот я купил датчик. Гарантий того, что он абсолютно такой же - нет. Ну то бишь вот этот коэффициент
    у меня будет таким же лишь до определенной цифры после запятой. Может это будет третья цифра, может пятая - я не знаю. Все эти коэффициенты сводятся к некоему среднему параметру, которые гарантируют точность в партии. Либо же индивидуальная настройка, что, разумеется, дороже.
     
  9. Это МАТМОДЕЛЬ, елки-палки. Не фактические измерения.
     
  10. Модель "Чистого возуха".
    Здравствуйте, товарищи!
    Простите за поздний час - акклиматизация :(, ёлки палки.
    Для того, то бы имели место какие-то измерения ppm, ну или что-то похожего на ppm, нам нужно определить параметры датчика на так называемом "чистом воздухе".
    Но сначала давайте немного по моделям и Data sheets.
    http://wiki.amperka.ru/_media/продукты:mq4:troyka-mq4_datasheet.pdf
    http://forum.amperka.ru/attachments/mq-4_mp-4-datsaheets-zip.16615/
    Как видно из поста выше, это, в общем то, одно и то же. Только один график смещён по отношению к другому на 10, что в логарифмической шкале означает единичку (10^0). Смещён на 4 единицы, что мы и видим как 4.4=in clean air на графике по первой ссылке в этом посте.
    Для тех, кто не понимает разницу в логарифмической шкале и децибелах короткий жизненный анектод:

    Если разницы нет, то выбор должен был пасть и пал на второй Data sheet, т.к. он был официально прислан произодителем, а также потому, что зависимость Rs/R0 от температуры и влажности вменяемые.
    Теперь к "чистому воздуху".

    Теперь прошу внимания!!!
    Общая методика определения чистого воздуха должна быть такой:
    1. Формируем модель "чистого воздуха" из Data sheet аналитическим путём (будет дальше).
    2. Формируем модель "чистого воздуха" путем измерений:
    - напряжения на датчике;
    - текущей влажности и температуры;
    3. На основе измеренных данных для нашего понятия "чистого воздуха" формируем константы.
    4. Переводим или транслируем константы с учётом Модели влажности и температуры в значения "чистого воздуха", указанного в Data sheet для имеющихся там значений температуры и влажности.


    Т.е. простым русским языком: мы получили в домашних условиях некоторые данные. Предположим, что адекватные. Но температура и влажность отличаются. Воспроизвести условия, указанные в Data sheet, конечно, можно, но очень затратно. Для того, чтобы воспользоваться ЗАВИСИМОСТЬЮ степени загрязнённости воздуха (здесь - ppm) нам нужно транслировать наши данные при "чистом воздухе" в такие же данные при "чистом воздухе" в Data sheet, вопользовавшись переводчиком под названием "Модель температуры и влажности". Т.е. просто "вписаться" в гарфик, так, чтобы можно было пользоваться ЗАВИСИМОСТЬЮ без угрызений совести.
    Эта методика теоретически должна позволить измерять R0 на "чистом воздухе", скажем так, в "домашних уловиях". Без применения дорогостоящих средств на основе аналитики из Data sheet.
     
  11. Формируем модель "чистого воздуха" из Data sheet аналитическим путём
    Перейдем к первому пункту методики измерения R0 (ну или U0, здесь разницы нет).
    Используется: http://forum.amperka.ru/attachments/mq-4_mp-4-datsaheets-zip.16615/
    Сразу перевернём модель на 90 градусов, что бы потом не утруждаться.
    Модель чистого воздуха температура и влажность.png
    Да уж....
    Изначально Модель температуры и влажности формировалась на основе Data sheet. Все желающие могут посмотреть посты выше: никакого обмана, в ошибках не уличили, все желающие могут повторить самостоятельно.
    В диапазоне 30%-85% относительной влажности средняя погрешность линейной модели составляла 1,41%.
    Клёво... Но, увы, при поднятии по линейной шкале на 4 порядка мы имеем погрешность в 12.4%. Нечего добавить.
    Т.е. только в модели/моделях, основанных на Data sheets мы имеем погрешности будь здоров какие. А это только модели!
    Печально. Но делать нечего, придётся это использовать.
    Дальше красивые картинки для тех, кто хочет покрутить Data sheet в голове.
    Красивые картинки модели чистого воздуха.png
    В общем, печально. Но нужно двигаться дальше. Все разумные замечания по делу принимаются. Неразумные прошу оставить при себе.
     

    Вложения:

  12. Да, ещё. Производитель, в лице приятной собеседницы и менеджера по продажам в европе, прислала данные по другим датчикам данной серии:
    Приятного просмотра.
     

    Вложения:

    parovoZZ и ИгорьК нравится это.
  13. Мысли на тему.
    Дальше, в процессе моего изложения, должны следовать данные такого типа "Формируем модель "чистого воздуха" путем измерений". Измерений достаточно, но всё же...

    Пытаюсь работать с датчикам, так, чтобы получить хоть какой-то результат.
    Вроде как получается, а вроде как и нет. Пока результа показать не готов.
    Использовал датчики KY-013, DHT-11 разных производителей и MQ-4 от производителя. Мысли по этому поводу такие:
    • нас никто не обманывает - получаем, что заявлено производителем;
    • точность используемых датчиков оставляет желать лучшего, но нас снова никто не обманывает;
    • девиантность показаний определяется физикой процесса, и нас снова никто не обманывает (физика процесса важный момент - нужно думать головой, но как-то пока не получается...);
    • попытка пересчитать погрешности в логическую цепочку погрешностей, как в учебнике, терпит фиаско, т.к. хрен знает как умножать друг на друга, или складывать эти погрешности и по каким законам - не понятно;
    • самым точным датчиком оказался самый дешёвый аналоговый KY-013.

    Но, как говориться, нас никто не остановит!:) Практически уверен, что из "говна" "конфетку" можно сделать, если подойти грамотно к процессу. Буду работать. Гагарина фактически на тазике запустили (несогласные простите меня;)), а вон, видите, как все получилось. Главное - мысль! Грамотный инженерный подход нужен даже здесь, где все датчики не более 300 рублей, а в среднем и того меньше.
    Пока мои мысли не сформировались в чёткую картину, обрисую текущую как картину. Пока рисовал картинку ниже в дешёвом редакторе, мысли начали приходить в порядок, надеюсь что что-то выйдет.
    Стабилизация датчиков.png
     
  14. parovoZZ

    parovoZZ Гуру

    а ты точно ничего не курил при проведении тестов на датчиках?
     
  15. Уважаемый parovoZZ, я бросил курить 2,5 года назад. И всем того желаю!
    А картинка - это образ того, как сложно соотнести дешёвые поделки и желаемый результат. По-моему получилось это передать.
     
  16. Определение R0. Принципы определения R0 (U0).
    Здравствуйте, товарищи!
    Как мы понимем, "чистый воздух" понятие относительное. В Data sheet приведён пример для некоего "Clean_air". Чистый воздух у автострады на 10-м этаже не то же, что чистый воздух в деревне на уровне 1 метр от грунта рядом с ручьём.

    Здесь следует понимать, что "чистый воздух" это то наше допущение, которое нас устраивает. На примере ниже ГРАФИК1 - это график зависимости ppm из Data sheet, а ГРАФИКИ2 - это возможные графики для "чистого воздуха" в той или иной ситуации.
    Гипотетические примеры чистого воздуха.png

    И всё, что мы будем измерять дальше, когда всё заработает, будет основано на нашем значении R0 (или U0), полученным из нашего "чистого возуха". Думаю, это нужно принять как данность.

    Техническое отступление. ДОБАВЛЕНО 23.04.2019.
    Возможно лишнее, но я всё-таки поясню что к чему. За данность, данные на т.н. "чистом воздухе" можно и не принимать, а например, пересчитать модель ppm, так, чтобы у нас всегда (Rs/R0)_clean_air было равно 1 (константа) для используемого Data sheet (или 4.4 для другого Data sheet, разницы нет).
    График ниже неправильный (подогнал по-быстрому для красоты), но показательный. Красным - модель ppm из Data sheet, а также красным - полученное нами значение отношения Rs/R0 = R0/R0 при нашем "чистом воздухе". Зелёным - соответственно тоже самое, но при смещении Rs/R0 = R0/R0 при нашем "чистом воздухе" к единице.
    Гипотетический пример смещения матмодели.png
    В таком случае, мы фактически формируем для себя свой Data sheet, но не с параметрами t=20 град., Rh_влаж.=55% из Data sheet, а с теми, которые получены нами при измерении R0 (U0).
    В принципе, это те же яйца, только сбоку. Если смещаем значения при чистом воздухе - смещаются значения ppm. Ну, можно и так, конечно. Вертел - крутил все варинаты в голове. Преимуществ не увидел. Если датчик только один, то можно поизвращаться, но скорее для удовольствия: получить глубокую оптимизацию кода, т.к. 1 есть один и вставлять эту единицу в код не нужно. Минусов больше: а)через полгода вообще не понятно будет что это за фигня; б)если датчиков больше одного (тестовый стенд, как у меня), то каждую модель придётся пересчитать, что при кол-ве датчиков > 1 превращается из забавы в гемморой.
    Итоги: Можно по-другому - Можно! Работает? - Работает! Целесообразно? - Нет!

    Конец технического отступления. КОНЕЦ ДОБАВЛЕНИЯ от 23.04.2019.


    Теперь я покажу как ЧЕЛОВЕК влияет на ситуацию. И покажу не на примере кухни, где полный трэш, а на примере спальни.
    Смотрите мои личные данные. В weekend легли спать в районе часа ночи, тогда и включил свой аппарат. Никто не пил, никто бобов с капустой не ел, тем не менее вот такие данные. Подъём в районе 9:45. А проветривание комнаты только в районе 18 часов. Видите как влияет ЧЕЛОВЕК своим присутствием и действиями на показания.
    Влияние человека.png

    Самая главная проблема измерений - ЧЕЛОВЕК. Есть ЧЕЛОВЕК - есть проблемы, нет ЧЕЛОВЕКА - нет проблем:mad:.

    Принципы определения R0 (U0).
    1. Устранить ЧЕЛОВЕКА. Лучше надолго, до нескольких дней, скажем, на отпуск.
    2. Внимательно смотрим помещение и что там есть:
    • удаляем все цветы, кактусы и пр.;
    • удаляем все пахнущие предметы (духи, алкоголь, банки с краской, ВСЮ КОСМЕТИКУ, вонючие носки :) и т.п.);
    • удаляем все китайские поделки из дешёвого вонючего пластика (впрочем их и так нужно устранить, просто для нормальной жизни);
    • вытираем, чистим, пылесосим, моем пол нейтральным средством;
    • обязательно всё проветриваем;
    • убеждаемся в том, что вентиляция работает, возможно необходимо установить микропроветривание или что-то в этом духе;
    3. Физически отключаем все приборы в помещении от сети; если датчик подключен к компьютеру, решаем проблемы взаимного влияния;
    4. Оставляем датчик в положении, когда возможна циркуляция воздуха вокруг него, рядом, но не буквально в направлении осуществления вентиляции в помещении.

    Остальные рекомендации для помещения, где бы оно ни было, квартира, частный дом, котельная или сарай вырабатывайте сами на основе здравого смысла.
     
    Последнее редактирование: 23 апр 2019
  17. Определение R0. Влажность и температура.
    У нас есть 2 варианта:
    • использовать модель влажности и температуры;
    • не использовать модель влажности и температуры, выдвинув, например, такой тезис:
    Можно забить.png
    Мои эксперименты имеют достаточно много измерений. Даже не считал: то ли 30, то ли 40 уже, в разных условиях и достаточной длительности, т.к. измерения проводились фактически непрерывно с 20 октября 2018 и проводятся по текущий день.
    Данные Data sheet и мои личные изыскания говорят о следующем:
    • зависимость от температуры есть, но она небольшая в диапазоне комнатных температур;
    • зависимость от влажности есть и она существенно больше зависимости от температуры, девиация в пределах процентов 20-ти в линейной шкале; много или мало судить каждому самостоятельно. В логарифмической шкале должно быть существенно меньше.
    Не хочу сейчас всё это доказывать, есть кое-какие данные. Если есть особо дотошливые особы, то при наличии времени готов продемонстрировать им данные, если они сами готовы взяться за их обработку (но несколько позже).
    Т.е. я хочу подчеркнуть, что оба похода имеют право на существование, как с учётом модели температуры и влажности, так и без её учёта. Здесь многое зависит от конкретной ситуации и то, каким образом будет использоваться датчик.
    Но, раз уж я так "заморочился" с этим вопросом, то считаю нужным решить задачу в общем виде, а именно - с учётом температуры и влажности.
     
    Последнее редактирование: 22 апр 2019
  18. Здравствуйте товарищи! В будние дни по ночам, конечно, спать надо, но уж не смог остановиться.
    Определение R0. Непосредственно определение.
    И так, подобрались к определению R0 (или U0).
    Я использовал всего несколько данных для интересующего меня объекта. Есть много других измерений, но мне сейчас интересны именно эти и именно на этом объекте.
    Графики-доноры R0.png
    В основе данных лежит измерение напряжения на датчике. Я использовал простой принцип: берём минимальное напряжение (т.е. когда воздух максимально "чистый"), а также в дополнение к нему данные по влажности и температуры при этом напряжении.
    Затем загоняем их в "Модель влажности и температуры", усредняем и получаем Rs/R0=R0/R0 при "чистом возухе".
    Вот, что получилось:
    График R0 измерения.png

    Ну что же, не плохо. Почему отличается от единицы смотрите выше. Даже с учётом кривости всех используемых элементов получаем в логарифмической шкале практически сливающийся график. Из этого следует вывод, что так называемая "Модель влажности и температуры" криво-косо, но работает.
    Ставлю себе Зачёт :).
    Давайте посмотрим на полученные значения ближе:
    График значения R0.png
    Вот уже видна разница значений. Всё равно, клёво, - модель то работает :)!
    Правда, из моих постов выше, где рисовал "Гипотетические примеры чистого воздуха", получается, что данные совпадают с данными из "Квартиры кошатницы с 30-ю кошками, 2-мя попугайчиками и крокодилом в ванной". Прикольно, прям как знал:) :) :)! Если серьёзно, то вроде всё работает.

    А теперь результат по графикам:
    U0 = 92 единицы из 1024
    Rs/R0 = 1,31848506314236 единицы просто

    Меня интересует U0, т.к. нет смысла сначала определять R0 по формуле, а потом снова определять Rs по формуле, и затем уже их делить друг на друга, но для желающих, а таже для успокоения души значение R0 по графикам:
    Formula3.png
    Rs = R0 = 202608,695652174 Омов.

    Далее оффтоп: теперь только понял почему Data sheets разные, это зависит от установленного на датчик резистора RL, значения которого вариьируются от 4.7кОм до 20кОм как здесь. Так проще просто измерять :)). Спасибо Амперке за это решение!

    Если есть замечания, предложения, то прошу по-существу, пожалуйста.
     

    Вложения:

  19. Реализация для MQ-4 без учёта модели влажности и температуры.
    Делать учёт влажности и температуры при измерениях начал раньше, но так намудрил, что сам запутался. Поэтому простой код без этого.
    В общем, это не совсем то, что я хотел бы показать. Но тем не менее данные ниже.

    Я проверял обе модели, Модель 1 несколько в сторону уходит, Модель 2 ближе к действительности. Погрешности Модели 1 означают только то, что значения точек для модели определялись "через одно место". Будет время - поправлю неточности. Но, в целом, вроде всё нормально. Проверял модели - если исходные данные верны, то ровно на столько же верны модели ppm. Я подтверждаю! Проверял.

    Ключевой элемент - определение R0 на "чистом воздухе". Он у каждого разный. Если R0 (U0) определены на достаточно загрезнённом воздухе или при высокой влажности, то вполне могут быть отрицательные значения ppm. Это нормально, т.к. модель таких вещей не предусматривает. Разумеется, требуется длительный предварительный прогрев датчика MQ-XX (здесь MQ-4) вплоть до 168 часов.

    Приципиально здесь одно - ЗАВИСИМОСТЬ ppm от параметров работает. С учётом отрицательных значений ppm и значений, более 1 миллиона ppm, пока могу сделать вывод о том, что ppm следует переделать в "попугаи" и смотреть не на значения, а на динамику значений. Во всяком случае, в бытовых условиях вряд ли чего можно получить большего, чем то, что есть.
    В любом случае, здесь правильные модели, а в других источниках, находящихся в свободном доступе - нет. Если что не так, то модели всегда сгодятся.

    Как рекомендация, для тех, кто хочет попробавать код, смотрите на значения АЦП в терминале и корректируйте данные "float U0adc = 200;" в программе.
    Код (C++):
    //Реализация для MQ-4 без учёта модели влажности и температуры
    //1. Исходные данные.
    //Data sheet 1: http://wiki.amperka.ru/_media/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:mq4:troyka-mq4_datasheet.pdf
    //Data sheet 2: https://www.winsen-sensor.com/d/files/PDF/Semiconductor%20Gas%20Sensor/MQ-4%20(Ver1.4)%20-%20Manual.pdf
    //Схема платы: http://wiki.amperka.ru/_media/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:mq4:troyka-mq4_schematic.png
    // Значение RL из схемы платы: RL=20кОм, но оно нам не должно пригодиться.
    //2. Модели из исходных данных.
    //|-----------------------------------------------------------------------------------------|
    //|Data sheet# | RsR0_Clean_air | Модель ppm                                                |
    //|-----------------------------------------------------------------------------------------|
    //|          1 |            4.4 | float ppm = 1030.76484196051*pow(RsR0,-2.78859693913661); |
    //|          2 |            1.0 | float ppm = 23.9942804698987*pow(RsR0,-1,65929225852548); |
    //|-----------------------------------------------------------------------------------------|
    //3. Значение при чистом воздухе.
    //Ранее полученное значение U0 в чистом воздухе, справедливое для всех моделей (это не напряжение, это показания АЦП от 0 до 1023):
    // U0adc=92
    //4. Данные переходного периода (предварительный прогрев).
    //Исходим из того, что ранее был совершён "прожиг" датчика (просто прогрев, без измерений) в течении достаточно длительного времени, а именно от 24 часов до 168 часов (до недели).
    //Не смотря на длительный "прожиг", всё равно, после каждого включения датчика требуется время для выхода на рабочий режим.
    // Tconfidential_interval = 3600000 //Среднее значение составляет 38 минут для измеренных экземпляров, часа ожидания точно должно хватить, если ранее был совершён "прожиг".

    float U0adc = 200; // Если определено U0adc, то в этой строке нужно написать, например, "#define U0adc 100", где 100 - ранее определённое значение U0adc
    #define Tconfidential_interval 3600000 //3600000 - 1 час
    #define RsR0_clean_air_1 4.4
    #define RsR0_clean_air_2 1.0
    #define MQ4_PIN A1 //Подключаем датчик к аналоговому контакту 1


    void setup() {
      // put your setup code here, to run once:
      pinMode(MQ4_PIN,INPUT); //Чтобы наверняка:)
      Serial.begin(9600);
      Serial.println("Начинаем работу.");
    }

    void loop() {
      // put your main code here, to run repeatedly:
      unsigned int Uadc;
      float ppm1;
      float ppm2;
      String DataMessage;
      String MyLine = "--------------------------------------------------------------------------------" ;

      Uadc = analogRead(MQ4_PIN);
      ppm1 = ppm_1(Uadc);
      ppm2 = ppm_2(Uadc);
      delay(5000);

      if (millis()<Tconfidential_interval){
        DataMessage+="Текущее значение АЦП = "; DataMessage+=String(Uadc); Serial.print(DataMessage);
        DataMessage ="; Прогрев выполнен на "; DataMessage+=String((millis()/float(Tconfidential_interval))*100); DataMessage +="%; Осталось минут: "; DataMessage+=String((float(Tconfidential_interval)-millis())/60000);Serial.println(DataMessage);Serial.println(MyLine);
     
      }
      else{
        Serial.println("Рабочий режим. ");
        DataMessage ="Значение АЦП = "; DataMessage+=String(Uadc); DataMessage+=". Значение ppm1 = "; DataMessage+=String(ppm1,6); Serial.println(DataMessage);
        DataMessage ="Значение АЦП = "; DataMessage+=String(Uadc); DataMessage+=". Значение ppm2 = "; DataMessage+=String(ppm2,6); Serial.println(DataMessage);
        Serial.println(MyLine);
      }

    }
    float ppm_1(unsigned int Us){
      //Определяет данные ppm на основе модели 1
      float RsR0=((1024/float(Us)-1)/(1024/float(U0adc)-1)*RsR0_clean_air_1); //http://forum.amperka.ru/attachments/formula5-png.16324/
      float MyPPM=(1030.7648*pow(RsR0,-2.788597));
      return MyPPM;
    }

    float ppm_2(unsigned int Us){
      //Определяет данные ppm на основе модели 2
      float RsR0=((1024/float(Us)-1)/(1024/float(U0adc)-1)*RsR0_clean_air_2); //http://forum.amperka.ru/attachments/formula5-png.16324/
      float MyPPM=(23.99428*pow(RsR0,-1.659292));
      return MyPPM;
    }
     
    argent_smith нравится это.
  20. Здравствуйте, товарищи!
    Ну, в прочем, не всё так уж и плохо. Проверял модель без учёта влажности и температуры, т.е. та, которая в посте выше. Я поместил устройство на тот же объект и ровно на том же сам месте, где измерял R0 без участия человека. Естественно, подождал. Получается вполне нормально, даже если зажигалкой ткнуть в датчик, то модель ppm выдаёт где-то 22 тысячи + мелочи. 10000, конечно, предел, но мы эту аналитику пока оставим :). После 20-30 минут датчик выдаёт значение, близкое к полученному при измерении R0.
    Однако, моё "нормально" это моё субъективное мнение, основанное на моём же опыте на конкретных объектах. Оно совершенно не означает, что всем следует руководствоваться только полученными значениями R0(U0) на "моих объектах".
    Тем не менее, считаю, что модели работоспособные. Конечно, превышение лимитов это не очень хорошо, но во всяком случае используемые мной модели корректны и не являются подгонкой. Ну и конечно, для получения результата, нужно датчик греть и греть, долго и долго.