Датчик DHT21 + AtTiny2313

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Аватара пользователя
КАШАК
Это не хвост, это антенна
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Контактная информация:

Датчик DHT21 + AtTiny2313

Сообщение КАШАК »

Доброго времени суток :)

Задался я тут целью соединить датчик температуры/влажности DHT21 с AtTiny2313. Начал читать даташит, Написано, что интерфейс 1-Wire, не совместимый с Dallas. Далее написано, что после отправки старт последовательности от МК датчик начинает выплевывать данные в количестве 40 бит. Вот на этом я и завис, никак не могу разобраться с этой самой последовательностью. Что она включает в себя? Плюс на одном форме прочитал, что требуется преобразование полученных данных по формуле. Я как-то совсем запутался. Может кто работал с данным датчиком?

Заранее спасибо всем откликнувшимся :)
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Датчик DHT21 + AtTiny2313

Сообщение BOB51 »

С именно таким - нет.
А вот с даташитами при работе с новыми компонентами - постоянно.
Береш даташит изготовителя, распечатываеш, также распечатываеш перевод сего даташита. Лезеш на сайт изготовителя - ищеш апноты/рекомендации по применению. Все энто перерабатываеш. Пишеш пробную тест-программку, гоняеш макет. Сводиш результат в конспект и пользуешся полученными данными в дальнейшей работе.
:tea:
P.S.
То , что это заявлено как далласаподобный интерфейс совершенно не означает применения пакетного стандарта однопроводных "пуговичек".
Частенько это касается только аппаратной реализации внешней шины связи, а содержимое пересылаемых данных трактуется совершенно по-своему.
8)
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Датчик DHT21 + AtTiny2313

Сообщение Ser60 »

Ну почему при сегодняшнем изобилии сенсоров влажности люди выбирают самый непутевый, у которого еще зачем-то однопроводный интерфейс. Приобретите нормальный сенсор с i2c интерфейсом и радуйтесь жизни. Извините, не смог равнодушно пройти мимо.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Датчик DHT21 + AtTiny2313

Сообщение BOB51 »

Берут то, что имеется в продажи и подешевше. :cry:
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение RoboC »

КАШАК писал(а):никак не могу разобраться с этой самой последовательностью.
Сначала микроконтроллер настраивает порт на выход и прижимает шину к минусу на время не менее 500 мкс. Затем отпускает шину, настраивает порт на вход и ожидает ответа в течение 20-40 мкс. Если датчик не ответил (не выдал низкий уровень) то микроконтроллер формирует информацию об ошибке. В случае ответа датчика, шина отпускается на время 80 мкс, после чего начинается передача значений влажности и температуры. Бит, равный нулю, представляет собой импульс длительностью 26-28 мкс, а бит единицы – длительностью 70 мкс.

Пакет информации, получаемый микроконтроллером от датчика, состоит из 40 бит (5 байт) и представляет собой следующую последовательность – байт целых значений влажности, байт десятых значений влажности, байт целых значений температуры, байт десятых значений температуры, контрольная сумма. В датчике DHT-11, в отличие от DHT-22, десятые части влажности и температуры не используются и их значение всегда равно нулю. Контрольная сумма равна сумме всех предыдущих байтов.

Данные получаешь в формате BCD, т.е. байт нужно разделить на тетрады, что бы получить цифры.

Пример можно посмотретьздесь или другой метод здесь, но стартовый импульс для DHT-21 короче.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение ARV »

RoboC писал(а):Сначала микроконтроллер настраивает порт на выход и прижимает шину к минусу на время не менее 500 мкс. Затем отпускает шину, настраивает порт на вход и ожидает ответа ...
чтобы ваш совет не выглядел подозрительно, следует уточнить, как именно МК "прижимает" и "отпускает" шину.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение RoboC »

Сарказм не понят :dont_know:

Код: Выделить всё

//=============MCU send START
DHT_DDR|=(1<<DHT_BIT); //pin as output
DHT_PORT&=~(1<<DHT_BIT); //0
delay_ms(18);
DHT_PORT|=(1<<DHT_BIT); //1
DHT_DDR&=~(1<<DHT_BIT); //pin as input
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение ARV »

сарказма и не было.

ваш код показал, что мои опасения ненапрасны. если говорить об AVR, то ваш код в предпоследней команде при КЗ в линии (что почти норма для выносных датчиков) будет стараться выжечь порт МК. думаю, аналгичная ситуация и для других типов МК.

правильная работа с однопроводкой заключается в выводе в PORT нуля единожды и навсегда, а все прочие манипуляции делаются исключительно через переключение режима порта ввд-вывод, т.е. через DDR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Датчик DHT21 + AtTiny2313

Сообщение ibiza11 »

Согласен с ARV. Но если очень хочется включить внутреннюю подтяжку, то это нужно делать только после входа в режим "ввода". Соответственно, перед переводом пина в режим "вывода", предварительно отключить подтяжку.
вот выжимка из моей библиотеки 1-wire:

Код: Выделить всё

#define _SetLine(port,bit)    do{DDR##port  &= ~(1<<(bit)); PORT##port |= (1<<(bit)); }while(0)  /* input with pullup */
#define _ClrLine(port,bit)    do{PORT##port &= ~(1<<(bit)); DDR##port  |= (1<<(bit)); }while(0)  /* output with log "0" */
Последний раз редактировалось ibiza11 Ср апр 09, 2014 14:38:24, всего редактировалось 1 раз.
Ставим плюсы: )
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение RoboC »

Человек задал вопрос об алгоритме работы!! КАк ее организовать он, думаю, сам разберется..
ваш код показал, что мои опасения ненапрасны.
Зря опасались, код для примера взят из ветки http://radiokot.ru/forum/viewtopic.php?f=61&t=82040, можете туда обязательно написать об этой критической ошибке.
сарказма и не было
Ну- ну, Вы ждали этой ошибки :) :)) :))) и могли предупредить сразу. За замечание по делу "+", за отношение "-". :)
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение ARV »

знающий человек таких вопросов не задал бы, а начинающему нельзя давать подозрительные советы - он может поиметь неприятности.

вы идете на поводу чужих исходников, а мне все равно, откуда они взяты: если в коде есть ошибка или небрежность - я об этом говорю. до тех пор, пока я не удостоверился, что ошибка действительно есть - я назвал ваши рекомендации подозрительными, ведь вы могли и привести абсолютно корректный код в качестве примера.

если вы считаете, что плюсами или минусами вы как-то влияете на мое отношение, вы заблуждаетесь. если количество плюсов для вас равносильно подтверждению безошибочности - рекомендую интересоваться мнением кошшшки, у нее плюсов много.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение ARV »

ibiza11 писал(а):Но если очень хочется включить внутреннюю подтяжку
по какой причине это может хотеться в 1-wire? никакого заметного эффекта, кроме вреда, от этого не будет...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Датчик DHT21 + AtTiny2313

Сообщение HHIMERA »

ARV писал(а):если говорить об AVR, то ваш код в предпоследней команде при КЗ в линии (что почти норма для выносных датчиков) будет стараться выжечь порт МК. думаю, аналгичная ситуация и для других типов МК.

правильная работа с однопроводкой заключается в выводе в PORT нуля единожды и навсегда, а все прочие манипуляции делаются исключительно через переключение режима порта ввд-вывод,
Для "других типов МК" нет смысла переключать ввод-вывод... у них есть open drain... Например STM8 или STM32...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Датчик DHT21 + AtTiny2313

Сообщение ibiza11 »

ARV писал(а):по какой причине это может хотеться в 1-wire? никакого заметного эффекта, кроме вреда, от этого не будет...
я включал подтяжку для работы без внешнего резистора подтяжки. В моем случае работало на столе.
А какой вред может принести включение подтяжки?
Ставим плюсы: )
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Датчик DHT21 + AtTiny2313

Сообщение HHIMERA »

Внутренняя подтяжка вообще не для этого предназначена... к тому же она ещё и хлипкая... Чуть больше ёмкость линии и затянутся фронты... низкая помехоустойчивость...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение ARV »

ibiza11 писал(а):я включал подтяжку для работы без внешнего резистора подтяжки. В моем случае работало на столе.
А какой вред может принести включение подтяжки?
если мы говорим об 1-wire, то:
1. подтяжка AVR - это в лучшем случае 30К (в худшем 70-100К), в то время как стандарт 1-wire требует 4,7К (5,1К).
2. лишняя команда приводит к увеличению интервалов, а стандарт 1-wire очень жестко регламентирует временные интервалы - вы рискуете попасть в просак на 1 мкс и ничего работать не будет...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Serg22
Открыл глаза
Сообщения: 52
Зарегистрирован: Пт янв 22, 2010 16:10:30

Re: Датчик DHT21 + AtTiny2313

Сообщение Serg22 »

Еще добавлю... При работе с DHT22 мне не удалось добиться низкого энергопотребления. либо он все врямя кушает 150мка, либо гасить ему питание и при включении ждать примерно 2 секунды первого адекватного измерения. Может кто-то знает как понизить его аппетиты?
Аватара пользователя
КАШАК
Это не хвост, это антенна
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Контактная информация:

Re: Датчик DHT21 + AtTiny2313

Сообщение КАШАК »

Всем огромное спасибо, в принципе интересовала в основном стартовая последовательность :) Дальше все понятно. С 1Wire работал, а тут не особо отличается :)
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Ответить

Вернуться в «Периферия»