реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Забавное поведение датчика BS18B20
haker_fox
сообщение Dec 1 2011, 06:16
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Здравствуйте!
Датчик DS18B20 подключен к AVR'ке проводом длиной 50 см. Система находится на улице и подключена к компьютеру через интерфейс RS485.
При чтении температуры иногда появляются ошибки. На улице -15, термометр показывает -3. Иногда появляются ошибки в контрольной сумме, но значение температуры верные, но это бывает очень редко (ошибка КС). Поскольку КС можно сказать, что сходится всегда, возникает вопрос, почему датчик выдает ошибочную отрицательную температуру? С положительной все ОК. Преобразование из дополнительного кода проводится правильно, т.к. иногда отрицательная температура читает правильно. Не могу уловить зависимость между правильными и неправильными показаниями.
Что еще интересно, по умолчанию при включении питания датчик настроен на 12-ти разрядный результат, что определяется конфигурационным регистром в "скратчпаде" (он равен после сброса питания 7F). Спустя некоторое время его значение становится 5F, хотя я не использую команду записи в "скратчпад".
Далее в документации на датчик написано, что байты 5 - 7 (считаем от нуля) имеют вполне определенные значения: FF, 0C, 10. Так вот, 5 и 7 читаются как надо, всегда причем, а 6 - изредко 0C, а так 04, 08.... Меняется иногда вместе с изменением температуры.

Да, как бы есть едва угадываемая закономерность: чем меньше температура (ближе к -14, -15), тем вероятнее ошибка. Но у нас на улице сейчас -8, так что пока все ОК, и нет возможности проверить гипотезу.

Теряюсь в догадках, думал датчик другой стоит (DS1820, DS18S20), но нет, проверил, все ок.

Заранее благодарен за любые советы!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Dec 1 2011, 08:04
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(haker_fox @ Dec 1 2011, 10:16) *
...Преобразование из дополнительного кода проводится правильно, т.к. иногда отрицательная температура читает правильно...


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

если преобразования ведутся согласно формуле из даташита - должно всё быть пучком. особенно в плюсовом диапазоне. в минусовом там немного переворачивается - но суть та же. про доп. код станет более понятно если зададитесь вопросом как устроен сам датчик. думаете там АЦП стоит? sm.gif у вас доп. код = два числа. один дополнение (сколько не уложилось в квант), второе - собственно сам квант. квант подстраивается под внешнии условия (возможно корректировка стоит) - посему изменяется но не сильно.

(круглый)
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 1 2011, 08:27
Сообщение #3


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (kolobok0 @ Dec 1 2011, 16:04) *
не факт.
прогоните по всему диапазону. для этого есть холодильник (к нулю), через ноль(морозилка) и далее, чайник - выше 30.

если преобразования ведутся согласно формуле из даташита - должно всё быть пучком. особенно в плюсовом диапазоне. в минусовом там немного переворачивается - но суть та же. про доп. код станет более понятно если зададитесь вопросом как устроен сам датчик. думаете там АЦП стоит? sm.gif у вас доп. код = два числа. один дополнение (сколько не уложилось в квант), второе - собственно сам квант. квант подстраивается под внешнии условия (возможно корректировка стоит) - посему изменяется но не сильно.

(круглый)

В документе на DS18B20 нет формулы) Там же весы (или веса) битов расписаны...
Преобразования делаю так: пусть с датчика получен LSB:MSB = 5F:FF.
Отбросим дробную часть и "лишние" знаковые биты S коих несколько, получим целую часть F5, что дает -11 гр. Цельсия. Ну с учетом дробной части это будет -10 с копейками. Это неправильно? Я буду рад, если ошибся в алгоритме. Датчики еще в наличие есть, но жаль тратить их)))
Кстати, сейчас 6й байт равен 1 (единица).

Как выполнять преобразования? В "даташитах" на более старые версии датчиков есть формула, на этот датчик нет... Или я путаю версии датчиков?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 1 2011, 13:24
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Вот сейчас на улице -14. С датчика приходит это
CODE
1F FF 25 A3 BF FF 0 88 FA

Порядок "scratchpad'а" такой же как и в документации.

А вот эту КС считает программа
CODE
1F


CODE
FA != 1F


Хотя еще 15 минут назад все было ОК, и весь день КС сходилась, температура была правильная. Такое ощущение, что датчик "замерзает", "боится холода"...

Вот еще для коллекции данных с датчиков. Температура похоже на верную... КС не сходится...
CODE
1D FF 25 A3 BF FF 1 8 FF

1C FF 25 A3 BF 7F 2 88 F4
1B FF 25 A3 BF FF 2 88 F1
1C FF 25 A3 BF 7F 2 88 F4
1B FF 25 A3 BF FF 2 88 F1
1C FF 25 A3 BF 7F 2 88 F4
Что же делать?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 1 2011, 13:28
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



На этот срочно шубу biggrin.gif .
Вы же говорили , что есть другой , что будет с ним


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 1 2011, 13:53
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ILYAUL @ Dec 1 2011, 21:28) *
На этот срочно шубу biggrin.gif .
Вы же говорили , что есть другой , что будет с ним

Другие проверю, но немного позже.

Просто мало ли, может быть нечто подобное уже было у кого-нить)

З.Ы. Только сейчас опечатку в названии темы заметил)))


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
xemul
сообщение Dec 1 2011, 13:54
Сообщение #7



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(haker_fox @ Dec 1 2011, 12:27) *
Как выполнять преобразования?

Если до 1 С, то T = (signed char) ((Th<<8) | Tl) / 16;
Если хочется больше цифр (правда, не знаю зачем, если датчики не калибруются) и не страшна плавучка, то T = (float) ((Th<<8) | Tl) / 16.0;
имхо, у Вас программные проблемы с обменом по ванвари. Добейтесь таки устойчивых 0xFF 0x0C 0x10 в скречпаде.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 1 2011, 13:59
Сообщение #8


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (xemul @ Dec 1 2011, 21:54) *
имхо, у Вас программные проблемы с обменом по ванвари. Добейтесь таки устойчивых 0xFF 0x0C 0x10 в скречпаде.

Возможно, что от низкой температуры плывут параметры интерфейса, и происходят ошибки... Чтож, буду копать.


Хотя, стоп! Когда последовательность 0xFF 0x0C 0x10 не наблюдается, КС считается верно, но это бывает, как я уже говорил, не всегда.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
xemul
сообщение Dec 1 2011, 14:16
Сообщение #9



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Упс-с, уже забыл. Глянул в ДШ:
Цитата
Bytes 5, 6, and 7 are reserved for internal use by the device and
cannot be overwritten; these bytes will return all 1s when read.

Перепутал с 0x05 0x50, которые должны возвращаться в Th:Tl до первого измерения.
0xFF 0x0C 0x10 в 5, 6, 7 байтах также будут только до первого измерения.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 1 2011, 14:43
Сообщение #10


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (xemul @ Dec 1 2011, 22:16) *
Упс-с, уже забыл. Глянул в ДШ:

Перепутал с 0x05 0x50, которые должны возвращаться в Th:Tl до первого измерения.
0xFF 0x0C 0x10 в 5, 6, 7 байтах также будут только до первого измерения.

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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
-SANYCH-
сообщение Dec 2 2011, 07:50
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



1) Не правельное измерение температуры может происходить по пречине просадки напряжения на датчике во время измерения температуры.
2) Вычитывается температура с датчика раньше чем происходит измерение температуры (измерение температуры происходит порядка 0,8 секунды). Поэтому чаще 1 секунды вычитывать с датчика температуру я бы не рекомендовал.

Если будет сбоить интерфейс то контрольная сумма не сойдется.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 2 2011, 08:50
Сообщение #12


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (-SANYCH- @ Dec 2 2011, 15:50) *
1) Не правельное измерение температуры может происходить по пречине просадки напряжения на датчике во время измерения температуры.

Гм... ритмика происходящего говорит о том, что это достаточно постоянный, стабильный негативный фактор. Просадки долгими не часто бывают, а у меня нет мощных потребителей на линии.
QUOTE (-SANYCH- @ Dec 2 2011, 15:50) *
2) Вычитывается температура с датчика раньше чем происходит измерение температуры (измерение температуры происходит порядка 0,8 секунды). Поэтому чаще 1 секунды вычитывать с датчика температуру я бы не рекомендовал.

У меня температура считывается раз в 1,5 - 3 сек.
QUOTE (-SANYCH- @ Dec 2 2011, 15:50) *
Если будет сбоить интерфейс то контрольная сумма не сойдется.

Маленько поправил функции обмена по шине. Ждем -15, на улице зима и как назло -12...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
xemul
сообщение Dec 2 2011, 09:42
Сообщение #13



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(haker_fox @ Dec 2 2011, 12:50) *
Гм... ритмика происходящего говорит о том, что это достаточно постоянный, стабильный негативный фактор. Просадки долгими не часто бывают, а у меня нет мощных потребителей на линии.

У меня получилось, что низкочастотная болтанка по питанию (10..20..50..100 Гц, 3..5 В) не вызывает погрешностей, выходящих за даташитные.
Цитата
У меня температура считывается раз в 1,5 - 3 сек.

Никакого смысла - постоянная времени датчика в still air у меня получилась 30..40 с, - а ошибку от саморазогрева (+2..3 С) получите.
Цитата
Маленько поправил функции обмена по шине. Ждем -15, на улице зима и как назло -12...

А я тогда узнал, что домашний холодильник в режиме экспресс-заморозки может выдавить из себя -24 С.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 2 2011, 09:54
Сообщение #14


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Похоже датчику придется принести извинения, т.к. если программно (т.е. не отключая питание) перезагрузить устройство, то температура начинает считываться правильная, все ошибки исчезают... ЗНаччит датчик не причем?! Что-то с программой, т.к. на датчике не прерывается питание, просто прекращается обмен на несколько секунд.
Программа с применением ОСРВ, теряюсь в догадках. Увеличил стек задача опроса датчика. Критические секции (запрет прерываний) во время опроса датчика имеются.

QUOTE (xemul @ Dec 2 2011, 17:42) *
Никакого смысла - постоянная времени датчика в still air у меня получилась 30..40 с, - а ошибку от саморазогрева (+2..3 С) получите.

Да, смысла нет. Увеличить время опроса не проблема.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 2 2011, 16:26
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(haker_fox @ Dec 2 2011, 13:54) *
Похоже датчику придется принести извинения, т.к. если программно (т.е. не отключая питание) перезагрузить устройство, то температура начинает считываться правильная, все ошибки исчезают... ЗНаччит датчик не причем?! Что-то с программой, т.к. на датчике не прерывается питание, просто прекращается обмен на несколько секунд.


Так может , это вообще не датчик , а RS485 дурит. Я свой уличный датчик читаю один раз в минуту и то думаю , что это очень часто.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 3 2011, 00:50
Сообщение #16


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ILYAUL @ Dec 3 2011, 00:26) *
Так может , это вообще не датчик , а RS485 дурит. Я свой уличный датчик читаю один раз в минуту и то думаю , что это очень часто.

На 485 не похоже, т.к. кроме температуры читаются другие датчики, их показания верны. Да и протокол с контрольной суммой.

Кстати, ошибка КС датчика исчезла. Сегодня утром проверяю температуру - на датчике -15, перезагрузил программно устройство, появилась реальная температура -20.

Такое ощущение, что то ли задача перестает выполняться (опрашивать датчик), то ли какие-то сервисы ОС перестают функционировать... данные с датчика как бы "замирают", "замораживаются".

Ладно, буду работать дальше... О результатах сообщу, м.б. кому-нибудь и будет полезен этот материал.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 3 2011, 06:07
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Была ситуация очень напоминающая Вашу, только датчик как бы... "сжаривался" при t > 90C.
Вообще не отрабатывалось условие START.
Времянки делал через UART (распространенное явление), так вот при высокой температуре времянки датчика "уплыли" и в UART приходило не то, что ожидалось.
Поборол софтово.
Go to the top of the page
 
+Quote Post
314
сообщение Dec 3 2011, 08:20
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 17-08-07
Пользователь №: 29 855



А то что у Вас АВР на улицу вынесен, случаем не с длиной проводов связано, в том смысле что на 10м провода сбои появляются, а на 0.5 нормально работает? И датчик с паразитным питанием или полным?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 3 2011, 09:14
Сообщение #19


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (314 @ Dec 3 2011, 16:20) *
А то что у Вас АВР на улицу вынесен, случаем не с длиной проводов связано, в том смысле что на 10м провода сбои появляются, а на 0.5 нормально работает? И датчик с паразитным питанием или полным?

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

И все таки все больше похоже, что низкоприоритетная задача опроса датчика наглухо перестает работать. Выходишь на улицу, дышишь на датчик, держишь его в теплых руках, а программа на компе "исправно" показывает -14. При нормальной работе, показания всегда меняются. Что интересно, задачи более высокого приоритета продолжают работать (там АЦП опрашивается). А задачи приоритетом еще ниже тоже встают, это видно по отсутствию мигания служебного светодиода.

Вот так вот я совершенно зря подозревал датчик...)))


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 5 2011, 02:05
Сообщение #20


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Полагаю, что проблема решена. 1,5 суток ни одного сбоя не замечено. Температура регистрируется правильно.

В чем было дело? Элементарно неверно былиз заданы размеры стеков для задач. После увеличения размера стеков задача опроса датчика и еще одно (приоритетом ниже), сбои пропали.

Большое спасибо Всем за помощь, участие и советы!!!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 1 2013, 07:09
Сообщение #21


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



И все таки оно плавает.... Столкнулся с этим вот сейчас. Вчера все работало. Сегодня утром - ошибка CRC. Что интересно, датчик расположен на этот раз на плате. Тот же самый код великолепно читает DS1990.

Вот прикоснулся рукой к DS18B20, температура изменилась - и КС снова совпала... Я уже разочаровался в этом мире) Еще 1 января)

Если игнорировать КС, то температура адекватная.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Jan 1 2013, 07:30
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Либо стека всё же не хватает, либо неверна процедура подсчёта CRC, таковы мои версии sm.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 1 2013, 07:44
Сообщение #23


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (RabidRabbit @ Jan 1 2013, 16:30) *
Либо стека всё же не хватает, либо неверна процедура подсчёта CRC, таковы мои версии sm.gif

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

Я же правильно считаю:
1. Принимаю scratchpad в буфер - 9 байт.
2. Подсчитываю CRC8 для 8 байт буфера.
3. Сравниваю эту КС с 9-м байтом буфера.

Уже шарики за ролики заходят)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 1 2013, 09:31
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(haker_fox @ Jan 1 2013, 11:44) *
Две разные процедуры подсчета выдают одно и тоже значение вкупе с онлайн-калькулятором
Причем если датчик "погреть" пальцами, то CRC начинает сходится...

Я же правильно считаю:
1. Принимаю scratchpad в буфер - 9 байт.
2. Подсчитываю CRC8 для 8 байт буфера.
3. Сравниваю эту КС с 9-м байтом буфера.

Уже шарики за ролики заходят)

А еще бывает, что тайминги "плывут" взависимости от температуры.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 1 2013, 14:04
Сообщение #25


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Herz @ Jan 1 2013, 21:20) *
Да потому что не тем в новогоднее утро занимаетесь. Оно для другого, ИМХО, изобретено.

Да нормааааально rolleyes.gif
Я же это с другими делами делаю)

Да, похоже, что дело чисто программное.

Снова напоролся на свои же грабли.

Но я почему вопрос поднял, дело в том, что о этих датчиках известно, что иногда у них слетает EEPROM, либо они просто "погибают". Подобные темы я нашел на этом форуме... Вот и не знал, куда податься....


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 1 2013, 17:32
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Ну EEPROM они победили и даже аппноут убрали с сайта. Я им лично вопрос по сему поводу задавал. Сейчас проверил , аж три датчика на одной линии с калькулятором - ни разу CRC не сошлась , а температуру показывают адекватную и дружненько так. Проверяю по BMP085.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 2 2013, 01:47
Сообщение #27


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ILYAUL @ Jan 2 2013, 02:32) *
ни разу CRC не сошлась

Энто как? Может быть у Вас тоже дело в софте?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 2 2013, 08:21
Сообщение #28


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Еще и времянки в драйвере 1wire были "замечательными": при положительной температуре все считывается отлично. Выставляешь датчик на улицу - температура плюс/минус за тысячу, КС не сходится))) Как я понимаю, у датчика RC-генератор внутри, которые от температуры немного плавает, и времянки шины плывут... Ну тема для начинающих, а!

________________________________
З.Ы. Все в куче: стэк, времянки, праздники...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 2 2013, 12:26
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
Может быть у Вас тоже дело в софте?

Да скорее не в софте, USART- там думать ни о чём не надо. Вот только драйвер согласования на биполярниках , что-то мне кажется "дурит", соберу его на полевиках , посмотрю что-будет.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 2 2013, 17:08
Сообщение #30


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(haker_fox @ Jan 2 2013, 12:21) *
..у датчика RC-генератор внутри...


тактовый да. а измеряющий - снаружи естественно резистор, термо который sm.gif

с временнЫми интервалами - строго по даташиту. и будет вам счастье. если не паразитное питание то вплоть до сотен метров по пром зоне обычной лапшой. если завалы наблюдаете - то подтягивайте линию возле самого датчика (как указано в некоторых даташитах) и снова счастье вас не забудет! sm.gif

и вообще С Новым Годом!
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 2 2013, 23:48
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Тоже самое и с полевиками, фронты - мама не горюй , все регистры читаются как положено , даже загонял значения в USER's registers - . Резервные 5 и 8 выдают строго по DS.
6 байт - о котором нет ни слова , каждый раз выдаёт новое значение, хотя на полученной температуре сие не сказывается.
Один из трёх (дома на макетке) "уложил в талую воду. Ну скачет температура у датчика +/- 0,0625 ( использую 12 разрядов точность ) , но CRC всё равно не сходится хоть ты ее тресни. Второй обнял ВМР085- и они дружненько так показывают одинаково температуру до запятой , сточностью у них понятненько есть разница.
Третий с таким же собратом только от другого проекта , болтаются на улице, и здесь наблюдается единое мнение до 2 знака после запятой.
Ну ее на хрен эту CRC.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 3 2013, 00:39
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ILYAUL @ Jan 3 2013, 01:48) *
Ну ее на хрен эту CRC.

Как так - на хрен?
Тогда уж лучше с плеча - 1-wire на хрен.
Если без CRC, то как тогда отличать, где верно, а где нет?

P.S. Есть ли адекватная замена 1-wire?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 3 2013, 02:52
Сообщение #33


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Всю ночь мой датчик проработал на улице. CRC совпадает. Без CRC строго не советую работать, температуры чудные выходят)

QUOTE (_Артём_ @ Jan 3 2013, 09:39) *
P.S. Есть ли адекватная замена 1-wire?

1-wire over RS-485? rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 3 2013, 10:08
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
CRC совпадает

C какой точностью работаешь?

Цитата
Если без CRC, то как тогда отличать, где верно, а где нет?

У этих датчиков есть один неприятный момомент , при частом опросе идёт саморазогрев, если CRC не совпало нужно повторить преобразование - чтение. Хорошо , если со второй попытки совпало , а если нет? Я бы не стал доверять такой температуре. У меня в MENU забит пункт - TIMEOUT опроса датчиков. Минимум , который можно задать- 1мин.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 3 2013, 11:26
Сообщение #35


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ILYAUL @ Jan 3 2013, 19:08) *
C какой точностью работаешь?

Та, которая по умолчанию - 12 бит.
QUOTE (ILYAUL @ Jan 3 2013, 19:08) *
У этих датчиков есть один неприятный момомент , при частом опросе идёт саморазогрев, если CRC не совпало нужно повторить преобразование - чтение. Хорошо , если со второй попытки совпало , а если нет? Я бы не стал доверять такой температуре. У меня в MENU забит пункт - TIMEOUT опроса датчиков. Минимум , который можно задать- 1мин.

Я опрашиваю датчики не чаще 30 секунд. Причем интервал разбит на две части:
1. Команда на конвертацию.
2. Пауза 15 сек.
3. Чтение температуры.
4. Пауза 15 сек.
5. Переход к п. 1.

Такие паузы пришлось взять по причине использования ОС. А для формирования точной времянке на шине, приходится использовать критические секции (читай запрет прерываний). Чтобы часто систему не вешать - интервал взять большой. По сути для уличного измерения температуры его можно увеличить вплоть до 30 минут, чаще вряд ли оправдано. Для дома (ИМХО) - 1 минута, если датчик работает как противопожарный. И до 10 - 20 минут, если "просто" измеряет.

Как-то так)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 3 2013, 12:10
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
1. Команда на конвертацию.
+ (~)750ms (обычно меньше)= данные. 0xF0 0x55 Rom 0x44 750ms 0xF0 0x55 Rom 0xBE ~= 800ms
У меня таймер работает по секундно , очень удобно 1Гц получать из USART-ого кварца.
Я это к чему, в течении 1 сек можно конвертировать и прочитать. Зачем
Цитата
2. Пауза 15 сек.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 3 2013, 13:35
Сообщение #37


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ILYAUL @ Jan 3 2013, 21:10) *
+ (~)750ms (обычно меньше)= данные. 0xF0 0x55 Rom 0x44 750ms 0xF0 0x55 Rom 0xBE ~= 800ms
У меня таймер работает по секундно , очень удобно 1Гц получать из USART-ого кварца.
Я это к чему, в течении 1 сек можно конвертировать и прочитать. Зачем

Так КС-то до сих пор не сходится?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 3 2013, 16:41
Сообщение #38


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Празник, не дадут посидеть нормально.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 3 2013, 17:58
Сообщение #39


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(haker_fox @ Jan 3 2013, 15:26) *
...приходится использовать критические секции (читай запрет прерываний). Чтобы часто систему не вешать - интервал взять большой....


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

типа совет дня.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 4 2013, 08:08
Сообщение #40


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (kolobok0 @ Jan 4 2013, 02:58) *
типа совет дня.

Спасибо, очень ценный совет!
В будущем, будет время заняться - попробую внедрить тему... Жаль в "ходовых" мегах один USART. Ну да ладно, таймерное прерывание лишнее найти думаю не проблема...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 4 2013, 15:21
Сообщение #41


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
Жаль в "ходовых" мегах один USART
И чему это мешает?
1-USART = N-sensors 1-Wire+4-KNOB(можно больше, но мне не надо)+LCD+(прикручиваю в данный момент)радиомодуль. Требует мультиплексор =1 транзистор +2 сигнала квинтирования. Естественно все используют свои прерывания.
Используй 164P- там их два. Если пишешь на С - максимальная версия этой линейки 1284


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 4 2013, 21:08
Сообщение #42


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(haker_fox @ Jan 3 2013, 17:35) *
Так КС-то до сих пор не сходится?

Охренеть ( личная цензура внесла коррективы в это слово) . Чем думал пИсатель этой проги от МАКСИМ. Всё раком.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 5 2013, 01:45
Сообщение #43


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ILYAUL @ Jan 5 2013, 00:21) *
И чему это мешает?
1-USART = N-sensors 1-Wire+4-KNOB(можно больше, но мне не надо)+LCD+(прикручиваю в данный момент)радиомодуль. Требует мультиплексор =1 транзистор +2 сигнала квинтирования. Естественно все используют свои прерывания.
Используй 164P- там их два. Если пишешь на С - максимальная версия этой линейки 1284

Сложно rolleyes.gif
У меня один USART постоянно под RS-485 занят)

QUOTE (ILYAUL @ Jan 5 2013, 06:08) *
Охренеть ( личная цензура внесла коррективы в это слово) . Чем думал пИсатель этой проги от МАКСИМ. Всё раком.

Да уж... тут же невоороженным глазом видно, что две суммы не сходятся...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 5 2013, 11:06
Сообщение #44


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(haker_fox @ Jan 5 2013, 05:45) *
Да уж... тут же невоороженным глазом видно, что две суммы не сходятся...

Да всё сходится и на первой и на второй картинке , только найдите семь отличий, такое вот предрождественское развлечение. А вот в конец можно писать слово из трёх букв и всё будет нормально.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 5 2013, 20:35
Сообщение #45


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(haker_fox @ Jan 4 2013, 12:08) *
..Жаль в "ходовых" мегах один USART...


сдался вам этот USART. можно в фоне, ногодрыганьем. да - таймер лучше разгрести. слишком разные временные интервалы - пришлось в своё время отказаться от "универсального временного задатчика" - таймер подправляю на лету, в зависимости от нужного интервала. обработчик зависит от карты считываемой из флэша. получается некая аля стэйт машина молотящая в фоновом режиме необходимые команды, описанные (и корректируемые уже чисто отдельно в таблице). сами мат. вычисления происходят в "основном потоке". для этого добавлены такие команды как: ожидание, перейти на начало и несколько ещё специфичных...реально в боевом железе надо быстро сканировать все датчики (штук 6-8), посему они все на одном порту и за каждую секунду реальная картина необходимая для принятия решения каждый раз известна. разогрев самих датчиков обычно лежит в пределах 0,2 градуса и при необходимости повышения точности - можно учитывать при задании корректирующего значения после линии сборки на самом производстве изделий (характеристика резисторных датчиков линейна - так, что достаточно одной точки).
речь шла о мега128, кварц 14,7456 МГц но в своё время реализовывал и на 51 серии с кварцем 24 и тактовой 2МГц. работает на ура.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 6 2013, 05:13
Сообщение #46


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Стейт-машина - я понял Вашу идею!!! Спасибо!

На счет саморазогрева. У меня уличный датчик показывает температуру в пределах погрешности.

Два независимых термодатчика дома показывают температуру одинаковую, но несколько выше (на 3 градуса) относительно термометра с биметаллической пластинкой. В нем стрелка на циферблате показывает температуру. В чем может быть дело? Алгоритм обработки датчиков - везде один. Сумасшедний разогрев? Вряд ли, датчик - не печка. Могут влиять какие-либо другие факторы на цифровые датчики? Типа инфраизлучение, фаза луны и настроение мысли?)))

З.Ы. Почему я верю механическому термометру? Не верю. Но его значение сходится со спиртовым... В общем КС сходится, но появилась "погрешность"...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 6 2013, 06:09
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(haker_fox @ Jan 6 2013, 09:13) *
В общем КС сходится, но появилась "погрешность"...


Купите TMP275A или LM92C - они проверено врут в пределах допустимого по даташиту с учетом всех этих виртуальных саморазогревов. И сравните с их результатом - будете знать, кто прав, а кто нет.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 6 2013, 09:19
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(haker_fox @ Jan 6 2013, 09:13) *
З.Ы. Почему я верю механическому термометру? Не верю. Но его значение сходится со спиртовым... В общем КС сходится, но появилась "погрешность"...

Дежа вю
http://caxapa.ru/378469.html
Вот вспомнил про него почитай
Прикрепленные файлы
Прикрепленный файл  app208.pdf ( 92.82 килобайт ) Кол-во скачиваний: 235
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 6 2013, 11:36
Сообщение #49


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Мама моя женщина) Как все сложно/просто)

Кажится тревого ложная. Механический термометр показал сегодня температуру с разницей в один градус. Вчера дома печка топилас. Наверно у механики большая постоянная времени, и он просто не успевал за цифровым коллегой) Да и не могут два цифровика ошибаться. У них результаты сходились и сходятся с оглашенной погрешностью по даташиту (0,5 градуса).

QUOTE (SM @ Jan 6 2013, 15:09) *
Купите TMP275A или LM92C - они проверено врут в пределах допустимого по даташиту с учетом всех этих виртуальных саморазогревов. И сравните с их результатом - будете знать, кто прав, а кто нет.

Спасибо! Я учту предложение rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 6 2013, 18:27
Сообщение #50


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Да и не могут два цифровика ошибаться. У них результаты сходились и сходятся с оглашенной погрешностью по даташиту (0,5 градуса).


Когда я только начинал применять DS18B20, в моем распоряжении был термошкаф с точностью поддержания температуры в 0.05 градуса. Вот установив там вентилятор, уложив кучку DS'ов и поверенный ртутный термометр с точностью 0.1 градуса в камеру, через часа 4 после включения выровнялись все температуры, и я увидел разброс между датчиками и образцовым термометром в 0.1 градуса. Проверил еще пару точек, все было аналогично. Правда, эти точки были выше 35 градусов (ибо холодильника не было).


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 7 2013, 02:41
Сообщение #51


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



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

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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 7 2013, 08:41
Сообщение #52


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Понятно, значит постоянные времени (для температуры) тут измеряются часами


Да у самого датчика не часами, а секундами. А вот температуры в разных точках помещения могут сильно отличаться. Два десятка датчиков, лежащих на столе на пространстве 0.5м*0.5м будут показывать разные температуры, иногда на пару градусов. Это нормально.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Herz
сообщение Jan 7 2013, 09:04
Сообщение #53


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



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

Ну, на столе, при расстоянии порядка полуметра-метра, на пару градусов - это Вы, кажется, преувеличиваете. Если, конечно, на них не дует с определённой стороны кондиционер в жаркую погоду.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 7 2013, 09:14
Сообщение #54


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Ну, на столе, при расстоянии порядка полуметра-метра, на пару градусов - это Вы, кажется, преувеличиваете.


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

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


Или через щели в окнах зимой. Или солнышко пригрело часть стола. И тысячи возможных причин.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 7 2013, 10:04
Сообщение #55


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Вот так стоят датчики, удобно работать. Вот их температура , рассматриваем только +. CRC сходится , иначе нет вывода на LCD. Запуск на преобразование , для каждого свой.
Timeout нет - (отказался) , используется состояние готовности самих датчиков. Кто виноват и что делать? Или всё таки датчики редкостное г... , хотя брал в Терре?

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 7 2013, 12:38
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



А если их местами поменять? Благо в колодках? Не грея руками разумеется.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 7 2013, 16:06
Сообщение #57


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (ILYAUL @ Jan 7 2013, 18:04) *
Кто виноват и что делать?

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

ILYAUL, дружище, желаю тебе забодать эту проблему! rolleyes.gif Очень хорошо тебя понимаю, т.к. сам несколько дней назад прошел через эти дски... Все будет нормально! Вот увидишь! Чуточку терпения rolleyes.gif С Рождеством!!!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 7 2013, 16:14
Сообщение #58


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Спасибо , тебе дружище!!! И тебя с Рождеством!!


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ARV
сообщение Jan 7 2013, 17:19
Сообщение #59


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(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-девайсов с этим интерфейсом.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 7 2013, 17:51
Сообщение #60


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(haker_fox @ Jan 6 2013, 09:13) *
...На счет саморазогрева...В чем может быть дело?...



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

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

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

Сообщение отредактировал kolobok0 - Jan 7 2013, 18:09
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 7 2013, 18:35
Сообщение #61


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



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

Цитата
Я в таком случае выводил "голые" дампы с датчиков,
кстати , твоя мысль натолкнула подключиться к терминалке через MAX232 , так что видел весь обмен с датчиками побитно. За , что тебе отдельное спасибо!


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 8 2013, 03:30
Сообщение #62


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
нечитатель
сообщение Mar 27 2013, 21:58
Сообщение #63


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 20-11-10
Пользователь №: 61 032



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+ градусов) всё выглядит прилично... но при быстром нагреве артефакт получается тоже. Но менее удобным для рассмотрения и осознавания.



На физический смысл артефакта имело бы смысл взмедитнуть через разъяснение интерфейса протокола библиотеки для принципа действия датчика внутри.
Где-то раньше попадалось мне такое разъяснение, но потерял его я - и осталось в в гугле моём по теме только про интерфейсы с библиотеками теперь. И всё это го оно разное одинаковое уныло, даже с пересказами на русский язык.

Сообщение отредактировал нечитатель - Mar 27 2013, 23:22
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Mar 28 2013, 03:04
Сообщение #64


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



А интерфейс-то у Вас правильно реализован? Я имею в виду программно/аппаратно. М.б. имеет смысл вместо термодатчика подключить тот же DS1990 и сверить считанный серийник с написанным на корпусе. Да варьировать при этом питанием, температурой, фазой луны)))


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
adnega
сообщение Mar 28 2013, 05:54
Сообщение #65


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(нечитатель @ Mar 28 2013, 01:58) *
ds18b20 (ds18b20+ ?)
никаких паразитов, никаких стометровых лапшей по промзонам, всеми тремя ногами воткнуто напрямую в клеммы на плате, столе и в обычной жилой комнате
...
0b01111111 ... 12 бит, т.е. разрешение 0.0625 градуса
...
раз в секунду:


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

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

Кстати, CRC совпадает?
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.02274 секунд с 7
ELECTRONIX ©2004-2016