Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544
В описании на DS18B20 сказано, что значение положительной температуры - это один байт (нулевой). Если его значение разделить на два, то получаем целое значение температуры в градусах Цельсия. Если значение измеряемой температуры становится отрицательным, то первый байт становится 0xFF. Измеряю комнатную температуру и вижу примерно следующие значения: нулевой байт=0xD7, первый байт=0x01.(как видим, значение температуры - ДВА байта!!!) Значение измеряемой температуры получается 235 градусов! Вытащил датчик за окно. Значение начало добросовестно линейно уменьшаться и при переходе через ноль первый байт, опять же добросовестно, становится 0xFF. CRC во всех случаях равна нулю. Второй датчик ведет себя точно так же. Попробовал читать из DS1990. Правильно читает сто из ста. Вопрос в следуещем. Так как же перевести то, что прочел из датчика в реальные градусы Цельсия или Фаренгейта???
Сообщение отредактировал Igor26 - Feb 3 2006, 07:48
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544
Ещё раз всем спасибо!!! Действительно, делением на 16 значения ,считанного из датчика, проблему решило(Rst7 мой Вам ), а c примером от ALess всё ясно, как работать с отрицательными значениями! Уважаемые модераторы, тему можно закрывать.