|
DHT22 завышает температуру
| |
| Вт, 20.06.2017, 14:36 | Сообщение # 1
|
Nik9900
Постов: 11
ОК |
Всегда использовал отдельные датчики для измерения температуры/влажности/давление. Решил попробовать DHT22 (влажность + температура), подключил к одному МК DTH22 и DS18B20 и вот что получаем на выходе: Packet: 6321 ReportID: 0 Size: 10 Data: 01 01 26 01 A8 D0 EB 01 EA 00 Result: DHT22_OK CRC: D0 DHT22 Temp: 29,40 C DHT22 RH: 42,40 % DS1820 Temp: 24,50 C
Показывает температуру на 5 градусов больше чем Dallas, контрольная сумма проходит проверку, т.е. данные с датчика считаны корректно. По отзывам в сети этот датчик имеет неплохие (по сравнению с DHT11) параметры, из - за чего может быть такое расхождение ?
|
|
| Вт, 20.06.2017, 18:46 | Сообщение # 2
|
msmmmm
Постов: 891
Друзья |
В ответе должно быть 40 бит (5 байт), а тут целый поток. Если продолжение после CRC - данные от того же датчика, то там уже 49,1% 23,4 С. Показания прибора неправильные, но стабильны? Питание датчика в порядке?
Добавлено (20.06.2017, 19:46) --------------------------------------------- Да, и по даташиту первой идет влажность, затем температура, затем контрольная сумма. В данных наоборот.
|
|
| Вт, 20.06.2017, 18:48 | Сообщение # 3
|
Nik9900
Постов: 11
ОК |
Извиняюсь за путанницу, Data: 01 01 26 01 A8 D0 EB 01 EA 00 это пакет данных не только от датчика, в этом пакете данные от датчика: 01 26 01 A8 D0, 5 байт, контрольная сумма D0, далее идут данные не относящиеся к датчику. Датчик опрашивается 1 раз в 2 секунды, контрольная сумма всегда верная, подтяжка 4.7к на шину данных есть.
Цитата Да, и по даташиту первым идет влажность, затем температура, затем контрольная сумма. В данных наоборот.
Всё верно, читаю данные именно так:
Код AData^.RH_Byte1 := ReadData(); AData^.RH_Byte2 := ReadData(); AData^.T_Byte1 := ReadData(); AData^.T_Byte2 := ReadData(); AData^.CRC := ReadData();
Это просто уже в протоколе передачи данных на ПК местами поменял, ну и соответственно на ПК при выводе температуры и влажности это учтено.
|
|
| Вт, 20.06.2017, 18:59 | Сообщение # 4
|
msmmmm
Постов: 891
Друзья |
От руки температура растет? От дыхания влажность увеличивается? Напряжение питания выше 3,3В?
|
|
| Вт, 20.06.2017, 19:06 | Сообщение # 5
|
Nik9900
Постов: 11
ОК |
От руки температура растёт и влажность немного растёт, если дыхнуть на датчик то под 90% влажность подскакивает, потом постепенно спадает. На данный момент питается от АКБ на 3.7В, но подавал и 5В, разницы никакой.Добавлено (20.06.2017, 20:06) --------------------------------------------- вот несколько часов макетка с датчиком лежит на балконе, сейчас данные такие: ******************** Packet: 209 ReportID: 0 Size: 10 Data: 01 00 DA 01 E1 BC 62 01 28 0F Result: DHT22_OK CRC: BC DHT22 Temp: 21,80 C DHT22 RH: 48,10 % DS1820 Temp: 17,70 C ******************** Показания от DS1820 совпадают с .....метеоданными на данный момент ) но DHT22 опять уполз вперёд на 4 градуса.
|
|
| Вт, 20.06.2017, 19:08 | Сообщение # 6
|
msmmmm
Постов: 891
Друзья |
Если датчик врет, то есть 2 способа проверить: 1. Подкинуть другой такой же, сразу все будет понятно. 2. Если датчика под рукой нет, собрать схему в протеусе, проверить прошивку. Если с прошивкой порядок, значит с датчиком не повезло. Вариант бракованного датчика здесь, по-моему, самый вероятный.
|
|
| Вт, 20.06.2017, 19:12 | Сообщение # 7
|
Nik9900
Постов: 11
ОК |
Другого такого же нет, этот то взял на пробу, ездил на другой конец города. Попробую в Протеусе собрать, просто дело в том, что на нескольких форумах встречал подобные жалобы, и расхождения были примерно в этом же диапазоне, но решений так и не было, темы просто заглохли. Попробую его ещё к Ардуине поцепить и стандартной библиотекой прочитать.
|
|
| Вт, 20.06.2017, 19:19 | Сообщение # 8
|
msmmmm
Постов: 891
Друзья |
Почитал свое предыдущее сообщение - данные читает, КС каждый раз совпадает, данные изменяются согласно внешнему воздействию, программная конвертация совпадает с расчетной - программа, скорее всего, ни при чем.
|
|
| Вт, 20.06.2017, 19:27 | Сообщение # 9
|
Nik9900
Постов: 11
ОК |
Сам датчик покупал у местного барыги, в магазинах у нас не нашёл, но думаю приехал он с Али, где тогда лучше заказывать эти датчики более приемлемого качества ? Сейчас заказал еще Si7021 с Али, мне нужно добиться точности хотя бы в 0.5 - 1 градус по температуре. Если ни тот ни другой не допинаю до нужных значений, придётся ставить отдельный датчик на влажность и старый добрый Dallas на температуру.
|
|
| Вт, 20.06.2017, 21:49 | Сообщение # 10
|
msmmmm
Постов: 891
Друзья |
Как вариант - откалибровать то, что есть. Нужен образцовый датчик и возможность задавать температуру в возможно широком диапазоне. Погрешность, судя по всему мультипликативная, легко исправляется изменением тангенса наклона номинальной статической характеристики преобразователя температуры. Знать бы еще - погрешность линейная или нет. Мороки не много, но прописывать константы для серийного прибора как-то не комильфо. А вот для единичного экземпляра можно и повозиться. Есть правда "но": в формуле есть умножение, которое в контроллерах выполняется довольно медленно. t`=a*t+b, a и b - коэффициенты полинома (находятся линейной аппроксимацией), t - температура, которую выдал датчик, t`- скорректированная температура. Кстати, все промышленные цифровые преобразователи имеют возможность подстройки. Для этого датчика по ранее выложенным данным a=0,894736842 b=-1,80526316
|
|
Внимание! Форум переехал на Tehnodium.ru
|
|