Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Забавное поведение датчика BS18B20
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
Страницы: 1, 2
haker_fox
QUOTE (Rst7 @ Jan 7 2013, 03:27) *
Когда я только начинал применять DS18B20, в моем распоряжении был термошкаф с точностью поддержания температуры в 0.05 градуса. Вот установив там вентилятор, уложив кучку DS'ов и поверенный ртутный термометр с точностью 0.1 градуса в камеру, через часа 4 после включения выровнялись все температуры, и я увидел разброс между датчиками и образцовым термометром в 0.1 градуса. Проверил еще пару точек, все было аналогично. Правда, эти точки были выше 35 градусов (ибо холодильника не было).

Понятно, значит постоянные времени (для температуры) тут измеряются часами rolleyes.gif И DS'ки врать не должны wacko.gif
Rst7
QUOTE
Понятно, значит постоянные времени (для температуры) тут измеряются часами


Да у самого датчика не часами, а секундами. А вот температуры в разных точках помещения могут сильно отличаться. Два десятка датчиков, лежащих на столе на пространстве 0.5м*0.5м будут показывать разные температуры, иногда на пару градусов. Это нормально.
Herz
Цитата(Rst7 @ Jan 7 2013, 10:41) *
Да у самого датчика не часами, а секундами. А вот температуры в разных точках помещения могут сильно отличаться. Два десятка датчиков, лежащих на столе на пространстве 0.5м*0.5м будут показывать разные температуры, иногда на пару градусов. Это нормально.

Ну, на столе, при расстоянии порядка полуметра-метра, на пару градусов - это Вы, кажется, преувеличиваете. Если, конечно, на них не дует с определённой стороны кондиционер в жаркую погоду.
Rst7
QUOTE
Ну, на столе, при расстоянии порядка полуметра-метра, на пару градусов - это Вы, кажется, преувеличиваете.


Так я и затеялся с термошкафом именно тогда, когда увидел разбросы.

QUOTE
Если, конечно, на них не дует с определённой стороны кондиционер в жаркую погоду.


Или через щели в окнах зимой. Или солнышко пригрело часть стола. И тысячи возможных причин.
ILYAUL
Вот так стоят датчики, удобно работать. Вот их температура , рассматриваем только +. CRC сходится , иначе нет вывода на LCD. Запуск на преобразование , для каждого свой.
Timeout нет - (отказался) , используется состояние готовности самих датчиков. Кто виноват и что делать? Или всё таки датчики редкостное г... , хотя брал в Терре?
SM
А если их местами поменять? Благо в колодках? Не грея руками разумеется.
haker_fox
QUOTE (ILYAUL @ Jan 7 2013, 18:04) *
Кто виноват и что делать?

Я в таком случае выводил "голые" дампы с датчиков, калькулятором (где-то в онлайне нашел) проверял КС, преобразовывал на бумажке температуру. Это мне помогло понять, что у меня проблемы с софтом.

ILYAUL, дружище, желаю тебе забодать эту проблему! rolleyes.gif Очень хорошо тебя понимаю, т.к. сам несколько дней назад прошел через эти дски... Все будет нормально! Вот увидишь! Чуточку терпения rolleyes.gif С Рождеством!!!
ILYAUL
Спасибо , тебе дружище!!! И тебя с Рождеством!!
ARV
Цитата(Herz @ Jan 7 2013, 13:04) *
Ну, на столе, при расстоянии порядка полуметра-метра, на пару градусов - это Вы, кажется, преувеличиваете. Если, конечно, на них не дует с определённой стороны кондиционер в жаркую погоду.

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

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


2. датчики ОЧЕНЬ ЧУВСТВИТЕЛЬНЫЕ. лежащие на столе при расстояниях в пределах полуметра очень даже нормально могут показывать разные температуры, потому что датчик реагирует на тепло ладони с расстояния в 10-15 см, на свет от настольной лампы с расстояния 1-1,5 м, на луч лазерной указки (!!!) с любого расстояния (секунд за 30 дает прибавку в 0,1 градуса и даже больше). так что если вы положите датчик на стол, где 15 минут до этого стояла кружка с кофе - вы получите совсем не ту температуру, которая будет на том же столе, но в 20 см от этого места!

3. датчики всегда саморазогреваются при постоянном поданном питании. когда они работают на морозе или в жидкостях - саморазогрев малозаметен, но в комнатных условиях следует ожидать завышение температуры на 2-4 градуса. избежать саморазогрева просто: подавать питание только на время измерения температуры (примерно 1 сек), а сами замеры делать достаточно редко - раз в 30 секунд и более. вот тогда можно ждать нормальных показаний.

если кому интересно, то на моем сайте arv.radioliga.com по теме 1-wire довольно много программных наработок - от калькулятора CRC до утилит, способствующих отладке самодельных slave-девайсов с этим интерфейсом.
kolobok0
Цитата(haker_fox @ Jan 6 2013, 09:13) *
...На счет саморазогрева...В чем может быть дело?...



1) возможно значения саморазогрева различаются от датчика к датчику(верится с трудом). я в основном работаю с 21-ми. они более полно отвечают требованиям задачи чем двадцатки. так вот максимальный разогрев = 0,2 градуса у этой модели. у господина ARV другие данные - (я верю в его опыт, хотя объяснить причину разброса не смогу. хз одним словом).

2) по поводу погрешности. тут уже прозвучало - датчики чуствительны и сразу показывают прирост воздействующей на них температуры. Но надо помнить, что _физически_ сам датчик прийдёт к _заданной_ температуре ТОЛЬКО ЧЕРЕЗ 5(!!) минут. это подтверждает и практика и теория процесса. поясню. идёт речь о теплопередаче от среда-пластик-терморезистор (речь идёт о конструктиве DS18xxx, что корпус PR35 - трёхножечный плстсмассовый). Т.е. датчик покажет реальную температуру(со своей погрешностью естественно) после 5 минутного успокоения в данной температуре.

отсюда понятно, что для вычисления погрешности необходима термостатичная камера и время, на приход к заданной температуре.
на термодатчиках обычно можно видеть даже движение воздушных масс (разрешение 0,01), а не только рука на 10-15 см..
ILYAUL
Цитата
2. датчики ОЧЕНЬ ЧУВСТВИТЕЛЬНЫЕ
Вот!! Ваши слова да Богу в уши. Т.е. мне. Чуть раньше. biggrin.gif
На фото датчики расположены перпендикулярно батарее с личной температурой +56,72 С (замерено DS18B20) . На расстоянии ~ 40 см. - этого вполне хватало при 12 битном разрешении для такого разброса. Повернул их параллельно - раброс 0,1 - 0,2.
Цитата
3. датчики всегда саморазогреваются при постоянном поданном питании...следует ожидать завышение температуры на 2-4 градуса
Что-то DS и APP об этом молчат или не нашёл?
Цитата
arv.radioliga.com
smile3046.gif Добавил в закладки.

Цитата
Я в таком случае выводил "голые" дампы с датчиков,
кстати , твоя мысль натолкнула подключиться к терминалке через MAX232 , так что видел весь обмен с датчиками побитно. За , что тебе отдельное спасибо!
haker_fox
QUOTE (ARV @ Jan 8 2013, 02:19) *
если кому интересно, то на моем сайте arv.radioliga.com по теме 1-wire довольно много программных наработок - от калькулятора CRC до утилит, способствующих отладке самодельных slave-девайсов с этим интерфейсом.

Вот это море информации! Спасибо!!! rolleyes.gif
QUOTE (ILYAUL @ Jan 8 2013, 03:35) *
За , что тебе отдельное спасибо!

rolleyes.gif
нечитатель
ds18b20 (ds18b20+ ?)
никаких паразитов, никаких стометровых лапшей по промзонам, всеми тремя ногами воткнуто напрямую в клеммы на плате, столе и в обычной жилой комнате



а). инициализация:

reset pulse
0xCC = "Skip ROM"

0x4E ... ""Write (to) Scratchpad"
0b01111101 ... "T low"
0b11001001 ..."T high"
0b01111111 ... 12 бит, т.е. разрешение 0.0625 градуса

reset pulse
0xCC ... "Skip ROM"

0x48 ... "Copy (from) Scratchpad (to EEPROM)"



б). раз в секунду:

reset pulse
0xCC ... "Skip ROM"
0xBE ... "Read Scratchpad", контрольная сумма сходится (или криво посчитана, но даже если - интерес не в ней, а далее по тексту)

reset pulse
0xCC ... "Skip ROM"
0x44 ... "Convert T"



в). дунул феном на датчик, убрал фен, датчик медленно остывает, внимательно смотрю на данные с него около 32 градусов:

10 0000 0000 = 32.0 С
01 1111 1111 = 31.9 С ___ 10 1111 1111 = 47.9 С ... старший байт так и остался
01 1111 1110 = 31.8 С ___ 10 1111 1110 = 47.8 С ... старший байт так и остался
01 1111 1101 = 31.7 С ___ 10 1111 1101 = 47.7 С ... старший байт так и остался
01 1111 1100 = 31.6 С ... старший байт просра актуализировался на конец
и далее остывает уже без вопросов

Так артефакт замечен при охлаждении конкретно на отметке 32.0 градуса ("сырые" с датчика двоичные данные соответственно и внимательно): старший байт обновляется с опозданием относительно младшего байта. Стабильно и повторяемо происходит.
В обратную сторону (при нагреве от 31 до 32+ градусов) всё выглядит прилично... но при быстром нагреве артефакт получается тоже. Но менее удобным для рассмотрения и осознавания.



На физический смысл артефакта имело бы смысл взмедитнуть через разъяснение интерфейса протокола библиотеки для принципа действия датчика внутри.
Где-то раньше попадалось мне такое разъяснение, но потерял его я - и осталось в в гугле моём по теме только про интерфейсы с библиотеками теперь. И всё это го оно разное одинаковое уныло, даже с пересказами на русский язык.
haker_fox
А интерфейс-то у Вас правильно реализован? Я имею в виду программно/аппаратно. М.б. имеет смысл вместо термодатчика подключить тот же DS1990 и сверить считанный серийник с написанным на корпусе. Да варьировать при этом питанием, температурой, фазой луны)))
adnega
Цитата(нечитатель @ Mar 28 2013, 01:58) *
ds18b20 (ds18b20+ ?)
никаких паразитов, никаких стометровых лапшей по промзонам, всеми тремя ногами воткнуто напрямую в клеммы на плате, столе и в обычной жилой комнате
...
0b01111111 ... 12 бит, т.е. разрешение 0.0625 градуса
...
раз в секунду:


Преобразование при такой разрядности занимает время порядка секунды (750мс).
Вполне можно нарваться на пограничное значение, что преобразование еще не закончилось, а результат уже считывается.
Попробуйте увеличить задержку до 10 секунд - опрашивать этот датчик все равно часто не нужно, поскольку будет саморазогрев.

Ну, и тайминги слотов проверить - может не правильно различаются "0" и "1".

Кстати, CRC совпадает?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.