Датчик DHT
- Войдите на сайт для отправки комментариев
Чт, 09/11/2017 - 15:49
Пытаюсь использовать ардуино как платформу с библиотеками. Вроде все класс, но возникла проблема с датчиками температура-влажность DHT11 и 22 - система их не видит... Просто на ардуино - прекрассно, в схеме на чистом контроллере - фиг. Даже на основе примера в библиотеке... В чем могут быть проблемы??? Гоню на временные параметры (ардуинка - 16МГц, схема - на внутреннем (8 без делителя)). Попытался залезть в библиотеку, подшаманить. Но все без результата. Гуру, помогите...
п.с. Текст ставить смысла не вижу... В конечном случае он свернулся до базового.... толеко с др пином...
Что за библиотека? Что за скетч? Что там шаманил? ХЗ!
Ответ писать "смысла не вижу... В конечном случае он свернулся до базового.... " - если не работает, значит что-то неправильно сделано.
Библиотека DHT. А именно файлы DHT.h и DHT.cpp. Временные интервалы сформировыны в DHT.cpp, в п/п "boolean DHT::read(void)". Значения там уменьшил в 2 раза (по соотношению с частотой). Но это не повлияло на работоспособность - на УНО система работала с новыми значениями только быстрее....
Это так, код - эксперимент... Может действительно накосячил...
Что то здесь не так. При любом генераторе и верных фузах, delay(1000) будет равен секунде (в пределах погрешности генератора) и ничему иному. У меня по крайней мере так, хоть на отладочной УНЕ, хоть на МК в девайсе на внутреннем генераторе, программа никак не модифицируется. Если ушли тайминги, ищите где накуролесили.
bwn, нет. Не так.
Что то здесь не так. При любом генераторе и верных фузах, delay(1000) будет равен секунде (в пределах погрешности генератора) и ничему иному. У меня по крайней мере так, хоть на отладочной УНЕ, хоть на МК в девайсе на внутреннем генераторе, программа никак не модифицируется. Если ушли тайминги, ищите где накуролесили.
Не правда ваша... Это уже отловлено и не раз....
Правда 1-ware, например, на штатных библеотеках работает в схемах без проблем. А там жесткая временная привязка...
bwn, нет. Не так.
Растолмачь, плиз.
delay(1000) зависит не от фьюзов и внутреннего/внешнего кварца, а исключительно от константы F_CPU
если она правильная - delay() работает правильно, если нет - вреть ровно в стокараз, в скока частота установленная фьюзами отличается от F_CPU
delay(1000) зависит не от фьюзов и внутреннего/внешнего кварца, а исключительно от константы F_CPU
если она правильная - delay() работает правильно, если нет - вреть ровно в стокараз, в скока частота установленная фьюзами отличается от F_CPU
Упс, осознал. В камни лил с загрузчиками, а в платах верно все выставлено.
А вот это анегдот, да и только...
Использовал библиотеку от Adafruit записал программочку
ИИИИИИ....
Внутренние данные считывает а температуру не измеряет!!!!!!!
Что за хрень... Гуру, помогите...
Здравствуйте добрые люди! Помогите нубу. Делаю блок управления на котёл. Имеется Arduino Uno, датчик DS18B20, датчик DHT22, двухканальное реле. Не получается прописать в строке 172 что бы команда работала от показателей датчика DHT22.
Помогите нубу.
Помогаю
Делаю блок управления на котёл.
Лучшая помощь нубу - совет "держись от котла подальше".
Если нуб берётся за котёл, то закончится это как в Ижевске.
Помогите нубу.
Помогаю
Делаю блок управления на котёл.
Лучшая помощь нубу - совет "держись от котла подальше".
Если нуб берётся за котёл, то закончится это как в Ижевске.
Хватит болтологии лучше делом помоги.
Это и есть дело. Ты это поймёшь, когда твой обгорелый труп из-под завалов вытащат. Если ты самоубийца, то хрен с тобой, только без меня. Я в этом не участвую. Сам убивайся.
P.S. Котёл в отдельном доме? А то если в квартире, соседей бы хоть пожалел.
Вопрос болше не актуален.
Вопрос болше не актуален.
Ростов - твоя работа?
Вопрос болше не актуален.
Ростов - твоя работа?
?
Короче, спецы. Я в ауте полном...
Собрал макетку на винборде на проце...
Залил в него прогу, представленную выше. Так вот. Информация о САМОМ датчике - считывается.. А значения температуры и влажности - нет... Датчик исправен - на ардуинке с залитым скетчем все работает....
Вопрос - в чем проблема?? Не ужели ни кто с таким не сталкивался... Очень нужна помощь...
Попытался опрашивать датчик без библиотеки взяв за основву прогу из параллельной темы "DHT без тормозов - вопросы по скетчу" и НИ ЧЕГО....
Собрал макетку на винборде на проце...
питание на проц с обоих сторон подано? и аналоговое и цифровое? и тоже для земли...
Да. На схеме видно... Правда опорное проигнорировал - хотя аналоговая часть здесь не используется...
Надеюсь про подтяжку не забыли и БЛИНК мигает с правильным интервалом.
Тогда такая мысль. Функция digitalRead() при 16 МГц выполняется примерно 5 мксек, а при 8 МГц, как у Вас, будет 10 мксек. Соответственно задержки будут совсем другие... Попробуйте читать состояние пина напрямую через регистры.
Надеюсь про подтяжку не забыли и БЛИНК мигает с правильным интервалом.
Тогда такая мысль. Функция digitalRead() при 16 МГц выполняется примерно 5 мксек, а при 8 МГц, как у Вас, будет 10 мксек. Соответственно задержки будут совсем другие... Попробуйте читать состояние пина напрямую через регистры.
Пост 19 - пробовал... Это прога
Играть, я так понимаю нужно с выделенными строчками проги
Что касается задержек в скетчах - то в скетче на плату уно (точнее в библиотеке DHT.cpp) подправлял тайминги - и все, хоть и с большими интервалами, работало. Но я всеж думаю, что проблема где-то именно там...
Залил в него прогу, представленную выше. Так вот. Информация о САМОМ датчике - считывается.. А значения температуры и влажности - нет...
Что такое "информация о датчике" и откуда она считывается?
В датчике есть регистры со служебной информацией - тип, версия, разрешение и др. Вот эта инфа считывается (вроде как, содержимое библиотек не смотрел)...
Вы меня так поразили, что я даже в datasheet залез: "DATA=8 bit integral RH data+8 bit decimal RH data+8 bit integral T data+8 bit decimal T data+8 bit check-sum" - вот, всё, что может сказать о себе датчик.
Залил в него прогу, представленную выше. Так вот. Информация о САМОМ датчике - считывается.. А значения температуры и влажности - нет...
Что такое "информация о датчике" и откуда она считывается?
Тоже хотел спросить, да забыл. Конечно, нет такой инфы..
Ясссно. Тогда полез в библиотеку от ада... Судя по всему там просто все прописано - я честно сказать не туда лазил. Думал, что работа с ардуинкой и библиотеками упростят мне жизнь... И тут облом. Возвращаюсь к ассемблеру...
Попробуйте закоментировать строку 18 и отключите проверку контрольной суммы - вместо строк 30-32 поставьте return 1;. Будут ли какие-то данные-мусор.
Ясссно. Тогда полез в библиотеку от ада... Судя по всему там просто все прописано - я честно сказать не туда лазил. Думал, что работа с ардуинкой и библиотеками упростят мне жизнь... И тут облом. Возвращаюсь к ассемблеру...
Думаете, что DHT22 асма боится? Вот эту погоняйте, она может показать на какой стадии обмена облом происходит: https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib
Впрочем, я на вашей фотографии не вижу ни датчика, ни резистора к нему, что заставляет меня думать, что проблема таки в контакте.
Датчик на проводах (3 ввер уходят, не вошли в фотку), резистор 10к подпаян прям на датчике (smd 0805)...
Датчик на проводах (3 ввер уходят, не вошли в фотку), резистор 10к подпаян прям на датчике (smd 0805)...
10k не ставил, 4.7k ставил около самого МК - работает на 10м. кабеле. Впрочем, поначалу даже никакой ставил - тоже работало иногда. Даташит говорит так:
-------
Special instructions of the single-bus communication:
1.Typical application circuit recommended in the short cable length of 30 meters on the 5.1K pull-up resistor pullup resistor according to the actual situation of lower than 30 m.
2.With 3.3V supply voltage, cable length shall not be greater than 100cm. Otherwise, the line voltage drop will lead to the sensor power supply, resulting in measurement error.
3.Read the sensor minimum time interval for the 2S; read interval is less than 2S, may cause the temperature and humidity are not allowed or communication is unsuccessful, etc..
...
-------
Вобщем, надо выяснить на котором этапе обмен прекращается (и начинается ли он вообще). Я сталкивался с таким случаем: запитал датчик от 3,3V, а до него доходило... Мало, вобщем. И он всякую чушь гнал в линию. Еще один подводный камень - до того, как перед обменом уронить DQ в LOW, нужно его подержать в HIGH определенное время. Мой DHT гарантированно отвечает, если это время >= времени опроса. Иначе бывали разные эффекты, но чаще всего обмен просто не начинался. Ну, а после завершения обмена, я оставляю DQ в состоянии HIGH, чтобы на следующем раунде не терять времени даром.
to Pyotr
Изменений нет...