Последние статьи из блога
- MegaD-485-TTL - изолированный конвертер индустриального класса
- MegaD-4VC - подключаем сигналы 0-10В и 4-20мА к контроллеру
- MegaD-4CM - высокоточный 4-х канальный измеритель тока
- MegaD-4US - 4-х канальный датчик напряжения на DIN-рейку
- Как я боролся с собаками с помощью нейросети
- Интеграция ультразвукового датчика скорости и направления ветра
- Установка WiFi-камеры на робота-газонокосилку
- Твердотельный датчик направления и скорости ветра. Эксперимент
- iPhone на стене в качестве панели управления домом
- MegaD-16M-XT - подсветка выключателей и не только
- Переделка выключателей в кнопки и мини-обзор текущего рынка
- RadSens - модульный счетчик Гейгера с интерфейсом I2C
- "U" - значит универсальный. Обзор модуля MegaD-16U-XT
- SCD4x - современная альтернатива для измерения концентрации CO2
- HTU31D - новый датчик температуры и влажности с нагревательным элементом
- Измерение коэффициента пульсации ламп с помощью MegaD-2561
SCD4x - современная альтернатива для измерения концентрации CO2
28/05/2022 11:16:54
Уже достаточно давно контроллер MegaD-2561 поддерживает работу с датчиками углекислого газа T6703 компании Amphenol. Данные сенсоры, выпущенные в 17-19 годах, зарекомендовали себя хорошо. Надежные, предсказуемые. Но датчики, изготовленные в 20 году и позже, получили изъян. В произвольный момент времени они могут выдавать некорректные показания измерений. Эта тема обсуждалась на нашем форуме. Была предпринята попытка реализовать компенсацию некорректных показаний в прошивке, но полностью это проблему не решило. Фильтрация на стороне сервера с помощью многократных запросов и отбрасывания лишних значений помогала не всегда. В довершение всего, на рынке образовался дефицит датчиков T6703, а цены на них резко подскочили. Стали ходить слухи, что производитель и вовсе снял эти сенсоры с производства, оставив в линейке только более дорогую версию T6713.
В связи с этим было принято решение поискать аналогичные датчики у других производителей. Отыскались SCD40 и SCD41 компании Sensirion. Продукция швейцарцев давно известна нам по датчикам SHT31 (температура / влажность) и SPS30 (взвешенные частицы / пыль), которые поддерживаются контроллером и работают весьма стабильно.

Датчик углекислого газа SCD40
Что известно про ключевые особенности датчиков SCD4x из даташитов в сравнении с T6703.
* SCD41 отличается от SCD40 более высокой точностью измерений и увеличенным диапазоном (до 5000 ppm вместо 2000 ppm у SCD40).
| Характеристика | T6703 | SCD41 |
|---|---|---|
| Точность | +/- 75 ppm | +/- 40 ppm |
| Размеры датчики | 30 x 15.6 x 8.6 mm | 10.1 x 10.1 x 6.5 mm |
| Питание | +5V | +3.3V / 5V |
| Измерение влажности | Нет | Да |
| Измерение температуры | Нет | Да |
Из таблицы видно, что датчики SCD4x имеют ряд значимых преимуществ: более высокая точность (особенно SCD41), меньшие габариты, возможность питания от напряжения 3.3В, способность измерять относительную влажность воздуха и температуру. И что особенно важно, эти датчики дешевле и доступнее. Поэтому мы решили добавить поддержку SCD4x в прошивку контроллера, а после тщательного тестирования, применить их в следующей версии комбинированных настенных датчиков MegaD-Wallmount-Sensor вместо связки T6703 + HTU21D.
Графики работы датчиков SCD40 и T6703 в течение 3 суток.

SCD40 vs T6703. Измерение концентрации CO2
В процессе тестирования получены следующие результаты. Формы графиков SCD40 и T6703 (2021 года выпуска) в целом очень похожи. Однако уровень концентрации CO2, измеряемый с помощью нового датчика SCD40 почти всегда выше. Любопытно, что иногда оба устройства возвращают почти одинаковый результат, а иногда разница доходит до 100 ppm. Также следует отметить, что заявленный диапазон измерений обоих датчиков начинается от 400 ppm, но T6703 довольно часто выдает менее 380 ppm. Ничего подобного не было зафиксировано у SCD40. При проветривании помещения уровень концентрации углекислого газа опускался до 400 ppm, но не ниже. Говорит ли это о более адекватной работе SCD40? Возможно. На графике T6703 также хорошо видны аномальные пики. Это как раз то, о чем было написано выше. Неприятная особенность всех датчиков T6703 последних двух лет выпуска. Причем часть совсем уж неправильных значений было отфильтровано на уровне сервера. За тот же период у SCD40 сбоев или некорректных значений не зафиксировано.

SCD40 vs HTU21D vs SHT31. Измерение влажности воздуха
Полезной особенностью новых датчиков SCD4x является возможность измерения влажности и температуры. Тест показал, что все 3 исследуемых датчика очевидно измерили одно и тоже. Если ввести поправочные коэффициенты, то графики сольются. Но если говорить как есть, без коэффициентов, то HTU21D показал самую низкую влажность (некоторое занижение влажности, пожалуй, отличительная особенность всех сенсоров данного типа), а SHT31 самую высокую, но разница с SCD40 очень незначительная.

SCD40 vs HTU21D vs SHT31 vs TMP117. Измерение температуры воздуха
С измерением температуры ситуация чуть иная. У SHT31 здесь самые низкие значения, а у SCD40 самые высокие. Разница - 1 градус. HTU21D расположился где-то между ними. Более высокие значения температуры у SCD40 в общем не стали неожиданностью. Процесс измерения CO2 с помощью NDIR сенсора требует больше энергии, внутренности датчика греются, что очевидно, оказывает влияние на показания температуры. В тесте также участвовал высокоточный датчик температуры TMP117 (зеленый график). Как видно, ближе всего к нему оказался датчик SHT31. Но и разница с SCD40 не очень велика - всего порядка 0,7С. Если кто-то захочет взять показания TMP117 за эталон, то данные SCD40 легко скорректировать на уровне сервера.
Для работы с датчиками SCD40 и SCD41 в Web-интерфейсе контроллера необходимо настроить порт как I2C и выбрать группу Air Quality. Версия прошивки должна быть 4.56b5 или более поздней.

Датчик требует инициализации, поэтому если к шине подключено несколько I2C-устройств, в настройках должен был выбран SCD4x.
Сенсор обновляет данные каждые 5 секунд. По этой причине нет смысла опрашивать его чаще. Если все же произвести повторной запрос ранее, чем через 5 секунд после предыдущего, датчик вернет статус "Busy". Это отличает новый датчик от T6703, который также обновляет значение каждые 5 секунд, но отдает информацию при любой частоте запросов.
Для облегчения интерпретации показаний на стороне сервера при запросе с параметром "cmd=get", контроллер не будет выводить текстовую информацию "CO2, temp, hum", а передаст на сервер только значения.
Пример запроса: http://192.168.0.14/sec/?pt=31&cmd=get Пример ответа: 564/26.14/34.51
Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Добавить комментарий:
Сортировка комментариев: Последние сверху | Первые сверху
2022-05-28 21:03:37 | Ruslan
Здорово, что расширяется линейка поддерживаемых датчиков! Спасибо, что ведете такую работу!
Будет ли возможность запроса индивидуальных значений измеряемых датчиком параметров по отдельности, как у остальных "многостаночных" I2C-датчиков? Лично я в своей системе УД пользуюсь именно таким способом опроса.
Ну и как дойдут руки, инструкцию к Меге было бы неплохо дополнить информацией о новом функционале.
2022-05-28 21:22:21 | Andrey_B
Ruslan, тут проблема в том, что все три значения считываются одновременно. После того, как контроллер считал данные, соответствующий регистр обнуляется (состояние busy) до тех пор, пока датчик не заполнит его новыми значениями (раз в 5 секунд). Поэтому разделять на три разных запроса в общем большого смысла не имеет. Во-первых, потому что это не сократит время, которое требуется для обмена информацией с датчиком. Контроллер все равно будет каждый раз считывать все три значения. Во-вторых, следующий параметр возможно будет запросить не ранее, чем через 5 секунд. То есть, разделение на отдельные запросы, конечно, возможно, но нужно будет понимать, что контроллер будет в сущности делать каждый раз одно и то же, только отображать при этом не все значения. Не уверен, что это целесообразно в данном случае.
2022-05-28 21:30:22 | Ruslan
Спасибо за пояснения!
Что ж, раз датчик имеет такие особенности, тогда действительно запрос индивидуальных параметров лишен смысла, и даже в каком-то смысле вреден. В конце концов, вытащить нужные данные с помощью сервера не проблема.
2022-07-13 07:25:22 | Юрий
Подскажите почему у меня показания влажности CO2:703/temp:24.51/hum:619.23 такие, на двух разных датчиках и разных мегах
2022-07-13 07:26:10 | Юрий
датчик 41
2022-07-13 11:04:48 | Andrey_B
Юрий, поправил в 4.57b4.
2022-07-13 11:36:57 | Юрий
Спасибо пошел тестировать
2022-07-27 00:30:13 | Юрий
Заработало,спасибо, а в интеграйии home asistant датчик не виден можно как то решить
2022-07-28 21:31:50 | Andrey_B
Юрий, это лучше спросить на форуме.
2022-08-20 10:28:26 | Андрей
Доброе утро. Подскажите, как получить значение СО2 с помощью сервера ? Как не пробовал, получаю значение температуры. /sec/?pt=34&scl=35&i2c_dev=scd4x&i2c_par=1
2022-08-20 15:08:53 | Andrey_B
Андрей, по запросу cmd=get контроллер всегда будет возвращать все три значения: CO2, температура, влажность. Как и указано в статье. Разделитель - символ "/". Почему это так я описал ниже в ответе Руслану.
2023-08-30 12:03:11 | Антон
Здравствуйте.
Подскажите возможно ли несколько таких датчиков разместить на одной шине i2c? Можно ли у них поменять адрес? Может ли мега работать с несколькими датчиками на одном порте?
2023-08-30 22:06:46 | Andrey_B
Антон, нельзя. У SCD4x смена адреса не предусмотрена производителем.
2023-10-11 15:05:59 | Григорий
Подскажите, получается, что scd41 завышает значение, какой к нему нужно применить коефициент, чтобы показывал правду?
У меня при открытых окнах показывает 380-400, ночью с закрытыми окнами может доходить до 2700
2023-10-11 21:29:04 | Andrey_B
Григорий, а почему вы решили, что SCD41 завышает показания? То, что в моем исследовании он давал показания чуть выше, чем T6703 ни о чем не говорит. Может быть, это T6703 занижал. Чтобы судить о корректности показаний нужен эталонный, поверенный прибор. Только в быту метрологическая точность чаще всего не нужна.
Показания около 400 ppm при открытых окнах скорее говорят о том, что датчик работает корректно.
Значение 2700 ppm при закрытых окнах в небольших помещениях вполне возможно. Если нет никакой вентиляции. Например, у меня дома огромный объем и довольно существенный естественный воздухообмен. И то 3-4 человека за ночь могут надышать до 800-850 ppm. При этом датчик установлен в холле, а не непосредственно в спальне. Поэтому 2700 не кажутся мне чем-то удивительным. Ну и большое значение имеет место установки датчика. Чем ниже к полу, тем выше будет концентрация CO2, так как углекислый газ тяжелее воздуха. Вблизи нахождения людей он также будет показывать выше.
2024-01-10 16:15:42 | Виталий
Андрей, а есть ли что-то для угарного газа? Для загородного дома, мне кажется, весьма востребованный запрос
2024-01-10 18:35:56 | Andrey_B
Виталий, у нас в наличии нет, но на Алиэкспрессе можно найти большое количество разнообразных датчиков, которые достаточно легко интегрировать в систему домашней автоматизации. Только не стоит брать дешевые полупроводниковые датчики, так как у них низкая селективность. Такие могут реагировать не только на угарный газ и давать ложные срабатывания. Лучше взять более дорогие устройства, в которых заявлено применение электрохимических сенсоров. И здесь есть выбор. Китайские производители делают такие устройства с дисплеем или без него и с широким выбором интерфейсов: RS485, 0-10В, 4-20мА, 0-5В, ШИМ. Интерфейс RS485 цифровой и можно получать уже готовые значения концентрации в PPM, но потребуется участие сервера. А вот с устройствами с выходом 0-5В напрямую или 4-20мА через адаптер можно работать автономно без сервера, используя АЦП-порт и настроив на контроллере соответствующую логику работы (через функцию "термостата" или Program).
2024-08-07 09:25:12 | Павел
А как их правильно подключать, что бы задействовать минимально кол-во портов?
2024-08-07 10:32:06 | Andrey_B
Павел, любые I2C-устройства используют 2 цифровых порта: SCL и SDA. В некоторых случаях, когда у устройств разные адреса и они подключены к одной шине (к одному кабелю), можно использовать общую линию SCL. Но если речь о нескольких одинаковых датчиках типа SCD41, то к сожалению потребуется 2 цифровых порта на каждый датчик. Адрес у них не меняется.
2024-12-15 21:09:19 | КОляя
Андрей здравствуйте) А есть такой датчик в природе чтоб показывал только СО и можно было подключить к мегад. Дело в том что пользуюсь мажордомо,
и там в простых устройствах он все три показателя выводит одной строчкой затирая программу в андройд. и иконку выводит не ту. А СО отдельно бы вывел красиво. А так получается с мажордомо ИМЕННО с блоком простые устройства использовать не возможно(. или может как то в прошивке не сложно было бы поправить возможность выбора только СО
2024-12-18 16:53:14 | Andrey_B
КОляя, запросить отдельно значение CO2 можно запросом вида
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=scd4x&i2c_par=1
2024-12-19 19:31:26 | КОляя
В мажордомо Сергей показал как разделить отдельно. оказывается все есть)))