Обсуждаем контроллеры компании Atmel.
Ответить

Re: Очередной термометр на DS18B20

Чт фев 06, 2020 14:58:27

pcb432, если надо - можно добавить кнопку и режим сна. Тогда потребление будет определяться прожорливостью дисплея в спящем режиме (+ на нем стоит свой LDO на 3.3 вольта) и холостым потреблением DS18B20.
-----
Что касается термисторов - можно и на них. Но стоит ли оно выделки?
Придется задействовать АЦП. Для АЦП нужен ИОН, а он у меги хреновый (и это мягко сказано), т.е. нужна еще и калибровка. Либо внешний нормальный ИОН. Соответственно, экономии на этом не будет. Ну и, кроме того, DS18B20 на том же Али стоит $1.43 за 5 шт. Т.е. 29 центов за штуку.
Так что мой выбор - DS. Их калибровать не надо, придумывать поправочные таблицы тоже.

Re: Очередной термометр на DS18B20

Чт фев 06, 2020 14:59:56

Вполне устраивает
Изображение
стоимость < 4$
ожидаемое время работы на одном комплекте элементов питания ~ 1 год
не требует зарядки
режим работы постоянный

Re: Очередной термометр на DS18B20

Чт фев 06, 2020 16:14:58

Так что мой выбор - DS. Их калибровать не надо, придумывать поправочные таблицы тоже.

Я тоже за DS, но справедливости ради ему тоже нужна таблица особенно в минусовом диапазоне… так как заявленная погрешность 0,5 от минус 10 не соответствует действительности. :)

Re: Очередной термометр на DS18B20

Сб июл 09, 2022 08:39:54

Уважаемый GoldenAndy! А опрос датчиков через какое время происходит?

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 12:33:01

Mr.Pupkin, каждые 800 мс

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 13:38:05

впром бытовых термометрах опрос идет раз в 5-40сек...
настеный китаец -ЧАСЫ КАРТИНА ССЕТЕВЫМ ПИТАНИЕм опрашивает термаметр раз 30сек а зачем чаше ???среда инерционая можно ваше раз в 5минут но тогда надо кнопку принидителного стата замера предусмотреть на случай переноса на другое место

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 14:54:01

Mr.Pupkin, каждые 800 мс

При небольшой корректировке библиотеки делал раз в 200 мс, работало.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 16:02:11

Лучше всего ждать необходимое время не менее, согласно разрешении: из документации, стр. 9.
Thermometer Resolution Configuration Table 3
Thermometer Resolution | Max Conversion Time
9 bit - 93.75 ms (tconv/8)
10 bit - 87.5 ms (tconv/4)
11 bit - 375 ms (tconv/2)
12 bit - 750 ms (tconv)

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 16:38:43

Комнатную температуру измеряю раз в минуту. Зачем спешить. Но время преобразования 750 мс.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 17:13:41

musor, OKF, Это не тот термометр, который комнату меряет. Заказчик просил оперативное измерение.
Включил, померял температуру где надо, и выключил. Как раз тут удобна динамика.
Вроде бы в теме говорилось об этом вначале.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 17:14:17

А вот если МК осуществляет динамическую индикацию, к примеру 5 сек время , и 5 сек температуру. Переход с опроса RTC не занимает видимого времени, а переход на температуру 0,8 сек . В течении 0,8 сек МК ждёт , и ничего не выводит.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 17:21:18

Alex_641, что значит "ждет и ничего не выводит"? Секунды за полторы (чтобы с запасом) до того, как нужно температуру отобразить, отсылаем измерение, измеряем и, как раз, как подойдет время, отображаем свежую.
Только нет смысла измерять температуру воздуха чаще раза в минуту-две-пять. Это ж вам не быстрые процессы. Вот в термостате - да, нужно несколько раз в секунду измерять температуру хотя бы в десятке разных мест, чтобы гарантировать стабильность с точностью в сотые К. А DS18 - это ж показометр, у него точность хуже ±0.5℃. На такую величину вряд ли за несколько секунд в комнате температура сможет измениться!
А для точного измерения есть более приличные датчики: начиная от полупроводниковых по 500..1500 рублей за штучку (но эти лучше ±0.05℃ не дадут, к сожалению) и заканчивая платиновыми термопарами (здесь уж сотка запросто), которые от 1500р за штучку (+ к ним нужно достаточно сложное устройство опроса сделать).

P.S. Кстати, на приличных МК, в которых есть DMA, работа с 1-wire идет практически не напрягая МК. И не нужно аж на сотню миллисекунд выключать прерывания и все нафиг блокировать.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 18:18:18

Eddy_Em писал(а):что значит "ждет и ничего не выводит"?

Библиотека в CAVR не подразумевает других действий , кроме ожидания.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 18:21:56

Alex_641, т.е. свое написать - западло что ли? Даже на 8-битке без DMA можно организовать работу с 1-wire, минимально напрягающую камень. Нет DMA - ОК, пользуйтесь прерываниями. Реализовать можно либо на любом таймере с режимом захвата, либо на UART/I2C и т.п.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 19:24:19

Ну для 8-битных АВР задержки при чтении/записи одного бита можно реализовать тупо на delay_us, запрещая на этот период прерывания.
т.е. отправка/чтение байта - это простенький цикл. В котором действительно будут ожидания по 50-60 мкс.
Чтение 8 байт из термометра - ну тут уже от задачи зависит. Можно в цикле читать.
А можно сделать машину состояний и дергать ее каждую миллисекунду. И она будет в каждый момент времени делать что то одно. Читать байт. Ждать 94/188/375/750 мс, слать reset, считывать presence...
И это все коротенькими действиями каждую миллисекунду. Все остальное время МК может делать все что угодно.
Если можно пожертвовать двумя выводами МК - Rx+Tx, можно сделать общение по 1wire средствами UART. Если без прерываний, то тоже периодическим поллингом из машины состояний. С прерываниями - иногда проще. Но овчинка выделки не стоит. Выигрыш по производительности там будет, но ценой проигрыша в объеме кода.
Но тут сильно зависит от задачи.
В какой то задаче, к примеру, у меня СТМка 80-85% времени была занята получением данных в реальном времени, раскидыванием их в ОЗУ и обработкой.
Вывод данных на дисплей, опрос управления - по остаточному принципу был. И там же - чтение DS-ки, при помощи какого то UARTа. В свободное время, по одному биту. Без блокирования. На чтение 8 байт из DS-ки занимало 64 мс. По биту в миллисекунду.

Так что читать датчик можно по разному.

Alex_641, Если МК показывает информацию каждые 5 сек разную, то датчик все равно можно читать раз в 30 сек и держать температуру в какой то переменной.

А вообще да, прибор странный у автора вышел. но там, насколько я понимаю - было такое ТЗ - новая прошивка под готовую схему.

Добавлено after 14 minutes 44 seconds:
Eddy_Em, кстати, а как на i2c сделать 1Wire?

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 20:50:09

Just_Fluffy писал(а):Alex_641, Если МК показывает информацию каждые 5 сек разную, то датчик все равно можно читать раз в 30 сек и держать температуру в какой то переменной.

Можно ! :)) Можно даже не держать, и не температуру :)))

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 20:59:11

Eddy_Em, кстати, а как на i2c сделать 1Wire?

Ну гугол же есть!
Я делал на UART, но таки больше мне понравилось на таймере с DMA. Правда, в любом случае, проще взять рублевый китайский NTC и использовать его вместо убогого DS18: точность примерно такая же (если откалибровать), зато накладных расходов 0. Просто DMA циклически опрашивает все нужные каналы АЦП и складывает данные в массивы. А ты, когда нужно, отбираешь из этого массива (я по 9 выборок делаю) данные и простейшей функцией из numerical receipies вычисляешь медиану. Ну, а потом элементарной кусочно-линейной интерполяцией получаешь температуру. Для интерполяции с точностью в районе ±0.5℃, как у убогого DS18, хватит 20-30 пар uint18_t.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 21:21:03

Eddy_Em, гугл блондинке начинает вываливать преобразователи i2c <-> OneWire
Поэтому ж и спросила... На юарте я делала.... накладных расходов практически нет. Особенно, если полудуплекс включить.

Re: Очередной термометр на DS18B20

Пт сен 23, 2022 22:43:07

Кстати, да: на некоторых STM32 вообще по 4 (а то и больше) уартов, многие из которых могут в полудуплексе работать. Если забульбенить с DMA, щикарно будет. Как и на таймере с DMA. А в случае I2C не везде можно отключить ненужную ногу SCL, да и старт придется ногодрыгом выпендривать с прерываниями или КА…
Кроме DS18, есть еще подобные 1-wire протоколы (сталкивался с несколькими) с разными закидонами. И, конечно же, никакие МК это аппаратно не поддерживают!!! Вот и, спрашивается, на кой [censored] эти [censored] выдумывают свои говнопротоколы вместо стандартных???

Re: Очередной термометр на DS18B20

Пн сен 26, 2022 21:13:17

:)) :))

Я про время опроса почему спросил. Есть несколько устройств на 18B20. И наблюдаю я саморазогрев (так что ли выразиться....) датчиков. Вот пример. Датчик в погребе (оный закрыт и проч.). Включаю термометр, у него опрос 750 мс, через 5 мин t° датчика возрастает на 0,5°C (точно не помню). Но ВРОДЕ! там где опрос 1 раз в мин (в моём, частном случае), там его, разогрева, ВРОДЕ нет. Вот и хочу провести калибровку.
А по погрешности измер. 18B20 : калибровал 5 шт (от разных продавцов алигадюшника), максимальная погрешность (я измерял в диап. -20°C...+40°C) 0,6°C после -10°C, а минимальная 0,1°C, но после +25°C возрастает тоже где-то до 0,5...0,6°C
Вложения
Термометр.jpg
Термометр
(91.5 KiB) Скачиваний: 112
Последний раз редактировалось Mr.Pupkin Пн сен 26, 2022 21:40:42, всего редактировалось 2 раз(а).
Ответить