ИТОГО: провел я обещанный эксперимент.
Имеем схему (см. во вложении).
Питание 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.
Эскизы прикрепленных изображений