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

 
 
> DS18B20 - протекают ли конверсия температуры и чтение данных одновременно?
zheka
сообщение Jan 8 2016, 19:23
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



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

До этого с датчиками температуры DS18x работал пару раз и извлек для себя только то, что 9-ти битный режим - это точность 0.5 градуса, но зато 90 мсек для получения температуры, а 12-ти битный точность повыше, но время конверсии аж 750 мсек.
То есть если скорость критична, а точность неважна, 12-ти битный режим не подходит. В одном проекте 12-ти битный режим мне не подошел лишь потому, что в программе на экране часто обновляются данные и пауза в 750 мсек существенно заметна.
Меняя настройки и длительность паузы я случайно допустил ошибку и НЕ ПЕРЕВЕЛ датчик в 9 битный режим, а паузу уменьшил. К моему удивлению, данные на экране были верные.
То есть получается, что после того как мы дали команду на конверсию температуры, нам не обязательно ждать 750 мсек, датчик открыт для общения, просто данные в регистре чтения будут старые, так? А пока мы что-то делаем, датчик параллельно получает данные.

Я убрал задержку вообще. У меня в программе цикл - получение данных и вывод на экран. До 10 раз в секунду. То есть пока температура вычисляется, я безболезненно обращаюсь к датчику 7 раз и он 6 раз выдает мне одни и те же данные, и на 7-й раз - обновленные.

Я все правильно понял?
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 42)
adnega
сообщение Jan 8 2016, 20:13
Сообщение #2


Гуру
******

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



Цитата(zheka @ Jan 8 2016, 22:23) *
Я все правильно понял?

Нет. Во время преобразования температуры линию DQ нужно подключить к питанию, даже при наличии активного питания датчика (не паразитного).
При высоких температурах (более 85C) видно, что линия DQ при отсутствии значительной подтяжки начинает "плыть к земле" и данные искажаются.
Например, датчик может начать выдавать максимальные показания 127C.
Разумеется, что при активной подтяжке DQ во время преобразования никакой обмен не может быть осуществлен.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jan 8 2016, 20:28
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Цитата(adnega @ Jan 8 2016, 23:13) *
Нет. Во время преобразования температуры линию DQ нужно подключить к питанию, даже при наличии активного питания датчика (не паразитного).
При высоких температурах (более 85C) видно, что линия DQ при отсутствии значительной подтяжки начинает "плыть к земле" и данные искажаются.
Например, датчик может начать выдавать максимальные показания 127C.
Разумеется, что при активной подтяжке DQ во время преобразования никакой обмен не может быть осуществлен.


Планиируемые температуры - комнатные и уличные. Я могу думать, что мне такая постановка датчика в позу не повредит?
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 8 2016, 20:39
Сообщение #4


Гуру
******

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



Цитата(zheka @ Jan 8 2016, 23:28) *
Планиируемые температуры - комнатные и уличные. Я могу думать, что мне такая постановка датчика в позу не повредит?

Вы какой ответ ждете?
Хотите, чтоб все работало без "глюков" - делайте в строгом соответствии с документацией.
При отступлении от документации датчик может начать вести себя как угодно.
Есть мнение, что следует подумать над архитектурой программы, чтоб ожидание ответа от датчика не влияло на все остальное - в этом случае все встанет на свои места, и не надо будет "перекладывать проблему с больной головы (программа) на здоровую (датчик)".
Go to the top of the page
 
+Quote Post
zheka
сообщение Jan 8 2016, 20:44
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Цитата(adnega @ Jan 8 2016, 23:39) *
Вы какой ответ ждете?
Хотите, чтоб все работало без "глюков" - делайте в строгом соответствии с документацией.
При отступлении от документации датчик может начать вести себя как угодно.
Есть мнение, что следует подумать над архитектурой программы, чтоб ожидание ответа от датчика не влияло на все остальное - в этом случае все встанет на свои места, и не надо будет "перекладывать проблему с больной головы (программа) на здоровую (датчик)".


ОК, у меня уже выделен таймер "планировщик", который определяет, не пришло ли время сделать что-нибудь. Добавлю туда опрос датчика.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 8 2016, 21:12
Сообщение #6


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

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



Цитата(zheka @ Jan 8 2016, 22:23) *
...зато 90 мсек для получения температуры, а 12-ти битный точность повыше, но время конверсии аж 750 мсек....


у этой группы датчика есть команды начать преобразование, стоп преобразование, либо непрерывно делать...
подумайте вот над чем. сколько битов АЦП нужно чтоб получить достаточную разрядность на весь диапазон температур?
Для однозначности ответа - возьмите ds1821 - у него 0,01 разрешение (намекает о том, что 12 бит маловато будет).
И сравните цены на предполагаемые ацп и сами датчики.
Размышления в студию.

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

удачи вам
(круглый)
ЗЫ
Влияние подтяжки линии данных на результат замечен не был, за последние 10 лет...
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 8 2016, 21:47
Сообщение #7


Гуру
******

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



Цитата(kolobok0 @ Jan 9 2016, 00:12) *
ЗЫ
Влияние подтяжки линии данных на результат замечен не был, за последние 10 лет...

С меня условия постановки эксперимента, чтоб вы смогли повторить и убедится.
Или подсказать мне, где я ошибаюсь))
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 9 2016, 04:15
Сообщение #8


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

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



Цитата(adnega @ Jan 9 2016, 00:47) *
С меня условия постановки эксперимента...


я правильно понимаю, что
1) если включить три датчика серии ds18xx на разные пины
2) с нормальным питанием(без паразитного)
3) в отсутствии сканирования у одного ножку данных подтягивать к плюсу(резистором?)
4) у второго(в отсутствии сканирования) к минусу(резистором или коротить?)
5) у третьего(в отсутствии сканирования) бросить в воздухе(тут вот ложняк возможен - но думаю прокатит. инициализация приведёт в чувства)
6) засунуть все три в 100 градусов

то показания будут различны, на более чем погрешность значения?

я всё прально повторил Вашу мысль?
с уважением
(круглый)
Go to the top of the page
 
+Quote Post
zheka
сообщение Jan 9 2016, 08:17
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



что за хрень....
Пытался настроить датчик, уменьшить разрешение
Код
       DS_RESULT=One_Wire_Reset(One_Wire_Pin);
    One_Wire_Write_Byte(One_Wire_Skip_ROM,One_Wire_Pin);
    One_Wire_Write_Byte(DS18B20_WRITE_STRATCHPAD_CMD,One_Wire_Pin);
    One_Wire_Write_Byte(0x00,One_Wire_Pin);
    One_Wire_Write_Byte(0x00,One_Wire_Pin);
    One_Wire_Write_Byte(0x1F,One_Wire_Pin);
    
/*    
    DS_RESULT=One_Wire_Reset(One_Wire_Pin);
    One_Wire_Write_Byte(One_Wire_Skip_ROM,One_Wire_Pin);
    One_Wire_Write_Byte(DS18B20_COPY_STRATCHPAD_CMD,One_Wire_Pin);
    */
    

        One_Wire_Write_Byte(One_Wire_Skip_ROM,One_Wire_Pin);
    One_Wire_Write_Byte(DS18B20_READ_STRATCHPAD_CMD,One_Wire_Pin);
    
    readbuf[0]=One_Wire_Read_Byte(One_Wire_Pin);
    readbuf[1]=One_Wire_Read_Byte(One_Wire_Pin);
    readbuf[2]=One_Wire_Read_Byte(One_Wire_Pin);
    readbuf[3]=One_Wire_Read_Byte(One_Wire_Pin);
    readbuf[4]=One_Wire_Read_Byte(One_Wire_Pin);


Я писал в конфигурационный регистр 0x1F (R0=0, R1=0), после этого читал данные из регистра, там действительно был 0x1F. Но датчик выдает информацию в 16-ти битном формате. Как это понимать?

Скажите, формат данных DS1820 отличается от формата DS18B20 настроенного на 9 бит?
И еще - никак не могу найти толковых разяснений, как получать отрицательные значения температуры? Как понять что это отрицательная температура, я знаю, а как получить число...

Сообщение отредактировал zheka - Jan 9 2016, 08:48
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 9 2016, 08:38
Сообщение #10


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

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



Цитата(zheka @ Jan 9 2016, 11:17) *
...Как понять что это отрицательная температура, я знаю, а как получить число...


вы получаете стандартное отрицательное число как дополнение до нуля.
из даташита:

+125°C = 0111 1101 = 7Dh
+ 85°C = 0101 0101 = 55h
+ 25°C = 0001 1001 = 19h
0°C = 0000 0000 = 00h
- 1°C = 1111 1111 = FFh
- 25°C = 1110 0111 = E7h
- 55°C = 1100 1001 = C9h

(круглый)
Go to the top of the page
 
+Quote Post
zheka
сообщение Jan 9 2016, 08:52
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



................
разобрался с 9-ти битным пересчетом

Сообщение отредактировал zheka - Jan 9 2016, 10:18
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 9 2016, 10:12
Сообщение #12


Гуру
******

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



Цитата(zheka @ Jan 9 2016, 11:52) *
Если дополнение до нуля, то (FF-E7 )/ 2 должно давать 25. А получается другое.
Как из E7 получить 25 ?

-E7 = 0 - E7 = FF + 1 - E7 = FF - E7 + 1 = 18 + 1 = 19hex => 25dec
Go to the top of the page
 
+Quote Post
zheka
сообщение Jan 9 2016, 10:24
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Погодите... а мой даташит другое говорит
Цитата
–25°C 11111111 11001110 FFCEh


То есть не E7, а CE....
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 9 2016, 10:40
Сообщение #14


Гуру
******

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



Цитата(zheka @ Jan 9 2016, 13:24) *
То есть не E7, а CE....

-FFCE = 0 - FFCE = FFFF + 1 - FFCE = FFFF - FFCE + 1 = 31 + 1 = 32hex => 50dec => 50 / 2 => 25.0C
Go to the top of the page
 
+Quote Post
zheka
сообщение Jan 9 2016, 11:33
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Спасибо, разобрался, адаптировал и под 12-ти и под 9-ти битный формат. Это в теории, когда вместо содержимого регистра подсовывается определенное число.
Когда же запустил все это на практике выяснилось (может я и ошибаюсь, но датчик ведет себя именно так), что когда включаешь 9-ти битный режим, температура кодируется все-равно по 12-ти битному формату, но шаг изменения показаний действительно 0,5 градуса. То есть 9 бит в DS1820 и DS18B20 это не одно и то же?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Jan 9 2016, 20:06
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(zheka @ Jan 8 2016, 21:23) *
До этого с датчиками температуры DS18x работал пару раз и извлек для себя только то, что 9-ти битный режим - это точность 0.5 градуса, но зато 90 мсек для получения температуры, а 12-ти битный точность повыше, но время конверсии аж 750 мсек.

Пожалуйста, не путайте разрешение (resolution) и точность (accuracy).
Go to the top of the page
 
+Quote Post
zheka
сообщение Jan 10 2016, 05:26
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Да господи, по бытовому выразился..
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 10 2016, 09:53
Сообщение #18


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

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



Цитата(zheka @ Jan 9 2016, 14:33) *
...шаг изменения показаний действительно 0,5 градуса....


максимальное разрешение для DS1821 - 0,01 градуса цельсия для всех остальных 0,0625 градуса цельсия
вы можете их получать либо не получать - это чисто интерфейс.
АЦП там нет в природе - так, что пофигу на скорость и иже...

(круглый)
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Jan 11 2016, 08:42
Сообщение #19


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

Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072



Цитата(zheka @ Jan 9 2016, 14:33) *
когда включаешь 9-ти битный режим, температура кодируется все-равно по 12-ти битному формату, но шаг изменения показаний действительно 0,5 градуса.


Если внимательно посмотреть документацию, то можно обнаружить, что смена разрешения просто приводит к неопределенному состоянию одного, двух или трех _младших_ битов, которые необходимо обнулять. В этом DS18B20 сильно отличаются от DS1820.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 16 2016, 22:00
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(adnega @ Jan 9 2016, 00:13) *
Во время преобразования температуры линию DQ нужно подключить к питанию, даже при наличии активного питания датчика (не паразитного).


Откуда Вы это взяли? В документации утверждается обратное: "The DS18B20 can also be powered by the conventional method of connecting an external power supply to the VDD pin, as shown in Figure 5. The advantage of this method is that the MOSFET pullup is not required, and the 1-Wire bus is free to carry other traffic during the temperature conversion time."


--------------------
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 17 2016, 05:21
Сообщение #21


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

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



Цитата(zheka @ Jan 9 2016, 14:33) *
..Это в теории, когда вместо содержимого регистра подсовывается определенное число....в DS1820...


намёк:
а в двадцать первом нет константы wink.gif

(круглый)
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 17 2016, 09:34
Сообщение #22


Гуру
******

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



Цитата(Леонид Иванович @ Jan 17 2016, 01:00) *
Откуда Вы это взяли?

В документации это видел, но на практике линия DQ в момент преобразования начинает "плыть к нулю".
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 17 2016, 21:40
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Нет такого и на практике.


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 18 2016, 12:17
Сообщение #24


Гуру
******

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



Цитата(Леонид Иванович @ Jan 18 2016, 00:40) *
Нет такого и на практике.

Возможно, "мои пчелы дают какой-то неправильный мед"...

Осциллограмма вывода DQ. Видно, что сразу же после подачи команды начала преобразования температуры идет провал до 4 В.
Текущая температура 104 C. Питание строго активное 5 В.

Поможете найти объяснение в документации - буду благодарен.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 18 2016, 13:58
Сообщение #25


Гуру
******

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



ИТОГО: провел я обещанный эксперимент.

Имеем схему (см. во вложении).
Питание 3.3В, а по документации датчик работает от 3.0В, т.е. имеем запас по питанию.
Подтяжка DQ 1 кОм, а по документации 4.7 кОм, т.е. имеем многократный запас по току подтяжки.
На линии 2 датчика с идентификаторами [28 96 A9 6C 02 00 00 10 - его не будем нагревать] и [28 33 91 6C 02 00 00 1D - его будем греть феном].

Первая осциллограмма снята на линии DQ при комнатной температуре (датчики показывают около 30C).
Уровень линии DQ во время преобразования температуры ~2.6В.
Лог такой:
[T C0 01 4B 46 7F FF 10 10 8F - 00] - данные scratchpad от первого. все 9 байт и 00 показывает, что CRC сошлось
[T 40 02 4B 46 7F FF 10 10 5A - 00] - данные от второго датчика.
Temperature:
1: 28.00 [28 96 A9 6C 02 00 00 10 - 00] - температура первого датчика (в скобках его ID и признак совпадения CRC)
2: 36.00 [28 33 91 6C 02 00 00 1D - 00] - температура второго датчика.

После разогрева второго датчика до температуры > ~85C имеем вторую осциллограмму.
Видно, что уровень DQ во время преобразования температуры упал до ~2.3В.
Лог такой:
[T B2 01 4B 46 7F FF 0E 10 8C - 00] - данные первого датчика.
[T FF 07 4B 46 7F FF 01 10 2F - 00] - данные второго датчика. ВНИМАНИЕ!!! CRC совпадает, но температура равна 07FFh!!!
Temperature:
1: 27.12 [28 96 A9 6C 02 00 00 10 - 00]
2: 127.93 [28 33 91 6C 02 00 00 1D - 00]

Как только я включаю активную подтяжку линии DQ сразу после передачи последнего бита команды старта преобразования температуры DQ равно 3.3В во время преобразования температуры и данные верные при любой температуре.

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

Не знаю, чему приведет считывание температуры в момент преобразования (исходный вопрос топика), но для корректного преобразования в это время на линии должен быть "правильный" уровень. Помогите разобраться где я не прав на практике, ибо по документации все должно работать))

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

UPD: Сразу хочу заметить, что температура нагреваемого датчика меньше 127 C. Лог показывает
[T 9C 01 4B 46 7F FF 04 10 7A - 00]
[T 97 05 4B 46 7F FF 09 10 E8 - 00]
Temperature:
1: 25.75 [28 96 A9 6C 02 00 00 10 - 00]
2: 89.43 [28 33 91 6C 02 00 00 1D - 00]
[T 99 01 4B 46 7F FF 07 10 79 - 00]
[T FF 07 4B 46 7F FF 01 10 2F - 00]
Temperature:
1: 25.56 [28 96 A9 6C 02 00 00 10 - 00]
2: 127.93 [28 33 91 6C 02 00 00 1D - 00]
, что при плавном повышении температуры сбой произошел после 89C. Термопара рядом с датчиком показывает около 88C.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 18 2016, 21:23
Сообщение #26


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

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



Цитата(adnega @ Jan 18 2016, 16:58) *
ИТОГО: провел я обещанный эксперимент....


тупые вопросы...
1) а Вы пробовали снять осциллограмму без датчиков?
2) в рукопашную пробовали работать, без uarta?


(круглый)

Сообщение отредактировал kolobok0 - Jan 18 2016, 21:26
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 18 2016, 23:51
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(adnega @ Jan 18 2016, 16:58) *
Может у меня "левые" датчики


Может и не левые, а просто DS18B20P. У них вывод 3 no connect, поэтому даже если подать на него 3.3 В, датчик все равно работает на паразитном питании. Для обычных DS18B20 ничего подобного не наблюдается, вот схема и осциллограмма:



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


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 19 2016, 08:12
Сообщение #28


Гуру
******

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



Цитата(kolobok0 @ Jan 19 2016, 00:23) *
тупые вопросы...
1) а Вы пробовали снять осциллограмму без датчиков?
2) в рукопашную пробовали работать, без uarta?

1). И что я должен увидеть? Импульсы RESET? Да, вижу.
2). Работаю через временные интервалы, формируемые и измеряемые таймером. Никакого UART.

Цитата(Леонид Иванович @ Jan 19 2016, 02:51) *
Может и не левые, а просто DS18B20P. У них вывод 3 no connect, поэтому даже если подать на него 3.3 В, датчик все равно работает на паразитном питании. Для обычных DS18B20 ничего подобного не наблюдается, вот схема и осциллограмма:

Я DS18B20-PAR никогда не видел. Судя по фото - это обычные DS18B20.
Я уверен, что их можно заставить работать (и я их заставил работать), но эффект есть.
Т.е. потенциал на ноге DQ в момент преобразования влияет на результат измерения даже при активном питании.
Я прошу повторить именно мой эксперимент и убедится, что это так.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 19 2016, 10:46
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(adnega @ Jan 19 2016, 11:12) *
Я DS18B20-PAR никогда не видел. Судя по фото - это обычные DS18B20.


Лет 5 назад поставщики под видом DS18B20 продали DS18B20-PAR. Не помню, отличалась ли у них маркировка на корпусе.
У Вас явно идет паразитное питание. Измерьте ток вывода 3, тогда все станет ясно.


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 22 2016, 11:24
Сообщение #30


Гуру
******

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



Цитата(Леонид Иванович @ Jan 19 2016, 13:46) *
У Вас явно идет паразитное питание. Измерьте ток вывода 3, тогда все станет ясно.

Отцепил 3 ногу от схемы и подал туда внешнее питание.
Проверял на двух датчиках.

У первого:
- при питании менее 3.90В фиксированное значение температуры +127C;
- при 3.93В температура отрицательная -16C;
- при 3.94В -81C;
- при >= 3.96 все ок +104C (т.к. подогреваю феном)

У второго:
- при питании менее 3.60В фиксированное значение температуры +85C;
- при 3.63В температура отрицательная -16C (T F8 FE 4B 46 7F FF 08 10 C5 - 00);
- при 3.64В -64C (T F4 FB 4B 46 7F FF 0C 10 08 - 00);
- при >= 3.65 все ок +108C (т.к. подогреваю феном)

Может, вы их никогда менее 5В не питали, поэтому не знаете о таком поведении? ))

Добавлю: Ток через ногу 3 есть, т.к. вижу показания подпрыгивают >1 мА.

При активной подтяжке DQ на время преобразования оба датчика показывают корректную температуру даже при 2В на ноге VCC.
При напряжении <= 1В датчики перестают работать (пропадает опрос).
В диапазоне VCC от 1В до 2В может работать или не работать в зависимости от того, какой датчик греешь (датчики опрашиваются, но температура может быть не корректная).
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 22 2016, 13:23
Сообщение #31


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(adnega @ Jan 22 2016, 15:24) *
Может, вы их никогда менее 5В не питали, поэтому не знаете о таком поведении? ))


Да применял я эти датчики при питании 3.3 В, от этого картина не меняется. Вот пожалуйста осциллограмма при питании 3.3 В (по вертикали 1 В в клетке, по горизонтали 5 мс в клетке). Никакой просадки уровня на DQ нет. Показания датчика нормальные (+27 градусов). Подтяжка 4.7 кОм на +3.3 В.

Сообщение отредактировал Леонид Иванович - Jan 22 2016, 13:27
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 22 2016, 13:34
Сообщение #32


Гуру
******

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



Цитата(Леонид Иванович @ Jan 22 2016, 16:23) *
Показания датчика нормальные (+27 градусов). Подтяжка 4.7 кОм на +3.3 В.

А погреть до 100C сможете?
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 22 2016, 14:00
Сообщение #33


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Попробовал снижать питание при комнатной температуре:
3.3 В - 25.7°C
3.0 В - 25.7°C
2.5 В - 25.7°C
2.4 В - 25.7°C
2.3 В - 25.6°C
2.2 В - 22.1°C - большая ошибка
2.1 В - показывает ерунду

Нагрел феном примерно до 90°C. Просадки на линии DQ по-прежнему нет.
3.3 В - 90°C (на десятые градуса внимания не обращаю)
3.0 В - 90°C
2.5 В - 90°C
2.4 В - показывает ерунду


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 22 2016, 14:37
Сообщение #34


Гуру
******

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



Цитата(Леонид Иванович @ Jan 22 2016, 17:00) *
Нагрел феном примерно до 90°C. Просадки на линии DQ по-прежнему нет.

Вероятно, у вас линия DQ подтягивается активно - МК выдает на соответствующую ногу лог "1".
Чтобы это проверить прошу вместо резистора R16 на вашей схеме включить обычный диод: катодом к "OWP", анодом к R26.
Если и в этом случае не будет просадки во время преобразования и "левой температуры" при 3.3В, то даже не знаю что и ответить.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 22 2016, 17:13
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(adnega @ Jan 22 2016, 18:37) *
Вероятно, у вас линия DQ подтягивается активно - МК выдает на соответствующую ногу лог "1". Чтобы это проверить прошу вместо резистора R16 на вашей схеме включить обычный диод: катодом к "OWP", анодом к R26.


Нет, активно не подтягивается. Я проверил по-другому - подключил резистор 10 кОм между DQ и землей. При питании 5 В уровень на DQ сразу уменьшился примерно до 3.3 В (как во время чтения, так и во время преобразования). Это говорит о том, что работает только подтяжка 4.7 кОм.

Цитата(adnega @ Jan 22 2016, 18:37) *
Если и в этом случае не будет просадки во время преобразования и "левой температуры" при 3.3В, то даже не знаю что и ответить.


Как может быть "левая" температура при 3.3 В, если это в допустимых пределах питания? Делать сильную подтяжку DQ при обычном питании нигде в документации не требуют, так что обязано работать. Просаживать линию DQ при наличии питания на VDD термометр не может. Питание с DQ и VDD собирается через диоды, а выходной транзистор закрыт, когда нет обращения по шине. Есть еще постоянно включенный генератор тока с DQ на землю, но ток там маленький, порядка 5 мкА.

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


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 22 2016, 17:32
Сообщение #36


Гуру
******

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



Цитата(Леонид Иванович @ Jan 22 2016, 20:13) *
Просаживать линию DQ при наличии питания на VDD термометр не может.

В этом у нас главное отличие. Я готов сделать и прислать прошивку для какой-нить отладочной платы, чтоб у нас были одинаковые условия эксперимента.
Какие платы есть у вас? У меня есть зоопарк всяких STM32-DISCOVERY.
Но для начала проверю все датчики, какие у меня есть.

Кста, а где ТС? Ему вообще интересна эта тема?
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 22 2016, 18:00
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Есть STM32 Value line discovery (на STM32F100RBT6B) и STM32F4-Discovery (на STM32F407VGT6).


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 22 2016, 18:12
Сообщение #38


Гуру
******

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



Цитата(Леонид Иванович @ Jan 22 2016, 21:00) *
STM32F4-Discovery

Отлично.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 22 2016, 22:45
Сообщение #39


Гуру
******

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



С радостью готов признать, что Леонид оказался прав - никакой подтяжки DQ не требуется, линия DQ не просаживается.
Точнее сказать: существуют такие датчики, которые работают именно так...
Но из 11 датчиков у меня есть два очень странных:
Первый (p1) общается по шине, но ничего кроме +85 или +127 отдавать в качестве температуры не может. Т.е. это явно неисправный.
Второй ведет себя интересней. При пассивной подтяжке и VCC < 4.0В просаживает линию (p2).
При активной подтяжке и VCC < 3.0В просаживает DQ импульсно (p3). При этом температура не корректная.
Датчики питаются по 3 ноге, т.к. изменение напряжения на ней играет роль.
Самое интересное, что второй датчик стоял у меня в тестовом кабеле, с помощью которого я вел все разработки.
Остальные датчики не просаживают линию даже при высоких T > +110С.
Процент неисправных меня настораживает. Попробую собрать больше статистики, ибо используем эти датчики в промышленных масштабах.

Кому интересно, прицепляю прошивку для STM32F4DISCOVERY, с помощью которой можно тестировать DS18B20.
Подключение:
- PA2 - console_tx;
- PA3 - console_rx;
- PB4 - ow_tx;
- PB5 - ow_rx;
- LED_GREEN[PD12] - светодиод "работа". мигает раз в секунду;
- LED_RED[PD14] - светится в момент преобразования температуры. можно синхронизировать осциллограф (желтый луч на прицепленных картинках);
- LED_ORANGE[PD13] - светится в режиме активной подтяжки;
- LED_BLUE[PD15] - светится если хотя бы один из датчиков на шине выдает T > +30С;
- кнопка USER[PA0] - при удержании переключает пассивную подтяжку на активную и наоборот.

Консоль работает с параметрами 115200-8N1.
Доступные команды:
"help" - показывает список команд;
"who" - показывает информацию о прошивке;
"reboot" - перезагружает контроллер;
"pullup=passive" - включает пассивную подтяжку;
"pullup=active" - включает активную подтяжку.
Конец команды - символ <CR>.

В консоль выводится информация об идентификаторах и данных датчиков на шине.
{ID 28 33 91 6C 02 00 00 1D} [T 50 05 4B 46 7F FF 0C 10 1C - 00] -> ds18b20 +85

Поддерживаются датчики типов ds1820 и ds18b20.

Для подключения датчика соединить PB4 и PB5 и подать на DQ.
VCC можно брать с платы или с внешнего БП.

Кому не лень и есть датчики, прошу проверить.
При пассивной подтяжке и питании датчика от "3V" с платы, должен загореться синий светодиод, если датчик просаживает линию и/или неисправно преобразует температуру. Но датчик не должен быть горячее +30C.
Красный светодиод будут загораться в момент преобразования температуры (на 1 сек). Если не загорается - значит датчик неисправен и/или неверно подключен.

Кста, исходный вопрос ТС пока остается без ответа. Думаю, не стоит заморачиваться, т.к. ТС, вроде, хотел поправить софт.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  test_ds18b20.v0.0.1.20160122.bin.zip ( 5.13 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 24 2016, 19:50
Сообщение #40


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

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



Цитата(adnega @ Jan 23 2016, 01:45) *
....ничего кроме +85 или +127 отдавать в качестве температуры...


если-бы речь шла бы про ds1821 - там есть что программировать. А вот двадцатки... По идее должны работать как танк.

(круглый)
Go to the top of the page
 
+Quote Post
OlegH
сообщение Jan 25 2016, 06:26
Сообщение #41


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

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Да может часть датчиков просто китайские, разного разлива... Я купил на Али 10 штук DS18b20 подешевке, похожи на настоящие и даже работают, только:
- разрешение по температуре при настройке 12 бит 0.5 градусов, не лучше (вот так кратно 0.5 значения и возвращаются, хотя меряют более-менее точно);
- маркировка на корпусе явно более низкого качества нанесения.
Рядом с ними фирменные датчики на тех же местах работают, как и должны, без вопросов.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jan 25 2016, 07:05
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(adnega @ Jan 23 2016, 01:45) *
Процент неисправных меня настораживает.


Так а какой процент неисправных из того применяемого "промышленного" количества? Пока речь идет всего о двух неисправных датчиках.

Цитата(OlegH @ Jan 25 2016, 09:26) *
Да может часть датчиков просто китайские, разного разлива...


Китайцы делают аналог, но он маркируется по-другому:



Сообщение отредактировал Леонид Иванович - Jan 25 2016, 07:08
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  QT18B20.pdf ( 444.39 килобайт ) Кол-во скачиваний: 538
Прикрепленный файл  QT18B20_AN.pdf ( 1.24 мегабайт ) Кол-во скачиваний: 22
 


--------------------
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 25 2016, 07:26
Сообщение #43


Гуру
******

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



Цитата(Леонид Иванович @ Jan 25 2016, 10:05) *
Так а какой процент неисправных из того применяемого "промышленного" количества? Пока речь идет всего о двух неисправных датчиках.

Большого внимания не придавал этому явлению: подумаешь, бракованная микросхема - в мусорку и забыть.
Периодически возникают жалобы, но мы обходимся простой заменой. Неисправные датчики к нам даже не возвращаются.
В основном проблемы с датчиками, которые для воды, но их банально заливает.
Скорее всего, мои проблемные датчики появились у меня как раз с производства (года 2 или 3 назад, уже не помню),
и, вероятно, из-за "проблем" у тамошних парней.

Попробую эту проблему актуализировать. Может, устрою 100% входной контроль.

Кста, Поставщик у нас надежный, поэтому всякий кетай отметаем сразу. Может быть датчики исходно рабочие но по каким-то причинам так портятся.
Например, переполюсовка, повышение VCC до 12-24В или что-то еще простое и повторимое.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:27
Рейтинг@Mail.ru


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