Сравнение датчиков влажности-температуры-давления на шине I2C
Показов 3783
Комментарии 0
Метки c, electronics, i2c, microcontroller, влажность, давление, датчик, си, температура
|
Накопилось у меня уже прилично всяких датчиков, вот и решил собрать "стенд", чтобы проверить их. Пока датчики не все: еще с десяток едет с алиэкспресса, но пока опишу в общих чертах суть эксперимента. Т.к. городить на МК монстра мне совершенно не хочется, я подключил датчики непосредственно к компьютеру через преобразователь на основе CP2112. При этом появляется HID-устройство:
hid_cp2112 (руками его грузить не нужно, т.к. все связанное с plug-and-play уже давным-давно обслуживается udev'ом). Но у датчиков есть неудобная особенность: очень многие имеют один и тот же адрес, причем зачастую не имеют никаких средств его смены (только у некоторых можно поменять 1-3 младших бита адреса). Поэтому нам понадобится еще и мультиплексор на основе PCA9548a. Ну и небольшая "беспаечная макетка" + источник питания. Вот так это сейчас выглядит: Для часть имеющихся у меня датчиков я уже писал код или под STM32, или под Orange Pi Zero 2 (второй удобней, т.к. его можно вообще почти без изменений использовать). Набросал тестовую утилитку для работы с датчиками по-одиночке, которая в итоге превратилась в библиотеку. Файл для работы по-одиночке я превратил в один из примеров использования библиотеки. Вторым примером как раз написал работу с этими датчиками на макетке (напомню, это еще не все: как через 2-3 недели подъедут оставшиеся датчики, проведу более расширенный тест). Для простоты перечисления имеющихся датчиков и их адресов в портах мультиплексора, сделал так:
Параметры командной строки минимальные:
Видно, что SI7005 периодически "выкаблучивается", выдавая неправильные данные (в среднем один раз на 20-25 измерений), да еще и по влажности сильно выбивается от остальных. По температуры "каждый в своей поре". И даже BME280, которые я считал точными, выдают примерно на 0.7% различающиеся показания. По давлению тоже как-то вразнобой, но хотя бы в ±0.5гПа укладываются. Для калибровки нужны нормальные тарированные психрометр и барометр. Платиновые термодатчики у меня есть, при измерении сразу по трем-пяти точность вполне приличная получается (порядка ±0.1℃). Надеюсь, на БТА можно будет найти советские приборы и попробовать сравнить датчики на точность показаний. Жаль только, для дистанционной записи показаний придется на эти приборы навести видеокамеру и вручную записывать (лень заниматься изготовлением калибровочных приборов самому, да и ртуть для барометра, боюсь, я вряд ли где достану сейчас, а ее хотя бы с поллитра надо). P.S. более-менее подробные сравнения датчиков в интернете уже делали, например это или это. А я решил повторить, заодно написать код для поддержки всех этих датчиков (все равно пригодится). | ||||||||||||||||||||||||||||||
Метки c, electronics, i2c, microcontroller, влажность, давление, датчик, си, температура
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


