А почему 0,5 градуса ?Без обид,собирал описанный в Радио 'Термометр-термостат'Шаталова,дак он с датчиками DS1820 обеспечивает точность 0,1 градуса.Сужу по показаниям индикатора,меняются через 0,1:).Так же согласен,что дома достаточно мерять температуру с точностью до градуса.Просто поиски истины,ничего более:).
Последний раз редактировалось Gigavolt Вс авг 24, 2008 03:46:58, всего редактировалось 1 раз.
вроде пролистал весь ДШ на DS1820 и не увидел там ничего отличающегося от штатного режима в 8бит данных + 8 бит знак температуры .
пересмотрю ещё раз ...
пересмотрел . ничего похожего на расширение разрешения в ДШ нету , так что или что-то не то с источниками , или ДШ не такой . пока отправлю админу такие прошивки , а если у кого-либо есть описание команды на расширение разрешения , то позже попытаюсь перелопатить прошивку .
вроде пролистал весь ДШ на DS1820 и не увидел там ничего отличающегося от штатного режима в 8бит данных + 8 бит знак температуры.
TEMPERATURE REGISTER FORMAT Figure 2 Да, так и есть, 8+1=9 бит только это не совсем знак, это называется дополнительный код...
LINKS_234 писал(а):
ничего похожего на расширение разрешения в ДШ нету
Вот оно
Цитата:
Resolutions greater than 9 bits can be calculated using the data from the temperature, COUNT REMAIN and COUNT PER °C registers in the scratchpad. Note that the COUNT PER °C register is hard-wired to 16 (10h). After reading the scratchpad, the TEMP_READ value is obtained by truncating the 0.5C bit (bit 0) from the temperature data (see Figure 2).
только это не совсем знак, это называется дополнительный код...
зинаю только он немного растянут ... на целый байт
Цитата:
Вот оно
Цитата:
Resolutions greater than 9 bits can be calculated using the data from the temperature, COUNT REMAIN and COUNT PER °C registers in the scratchpad. Note that the COUNT PER °C register is hard-wired to 16 (10h). After reading the scratchpad, the TEMP_READ value is obtained by truncating the 0.5C bit (bit 0) from the temperature data (see Figure 2).
Вечерком сляпаю програмку, и выложу исходник...
у меня ДШ неправильный поиском ничего не находит в ДШ .
ДШ на 155,2 кб .
а свои варианты уже отправил на добавление к статье .
всёравно не допонимаю как повысить разрешалово - или командой задавать , или же считывать из временной памяти ?
Видно что смена значения температуры происходит при переходе значения SCRATCHPAD[6] с 01h -> 10h и с 09h -> 08h
Я бы предложил вычислять недостающие биты так:
Tемпература( биты с 11 по 15 ) = SCRATCHPAD[1] биты с 0 по 4
Tемпература( биты с 4 по 10 ) = SCRATCHPAD[0] биты 1 по 7
Tемпература( биты с 0 по 3 ) = (10h - SCRATCHPAD[6]) у результата используем биты с 0 по 3
и получившееся целое число считать температурой в 1/16*С долях градуса Цельсия
Итого: у 18s20 разрешение получилось 0.06*С
такое же как и у 18b20
а теперь ещё один вопрос на засыпку :
DS1820 и DS18S20 одинаковые ??? почему-то мне казалось что это разные датчики . даже когда я покупал DS18B20 в прайсе были и простые 1820 и 18S20 .
а теперь ещё один вопрос на засыпку : DS1820 и DS18S20 одинаковые ??? почему-то мне казалось что это разные датчики ... в прайсе были и простые 1820 и 18S20 .
Апаратно они разные, програмно одинаковые.
1820 - это старая (слегка глючная) микросхемя давно снятая с производства.
18S20 - новая улучшенная микросхема - полный аналог, умеющая нормально работать на паразитном питании и длинной (до 300м) линии.
Програмно они абсолютно идентичны.
спасибо за информацию .
думаю не буду делать пока новую прошивку , к тому же датчиков нету .
если хотите - можете выложить свою версию прошивки , но не думаю что для домашнего использования понадобиться такое разрешение 0.5 градуса по сути не сильно заметны
да , кстати , исходники и окончательная схема термометра , которые отправлял админу на добавление к статье :
Вложения:
Комментарий к файлу: 2-ух строчник датчики DS1820 разрешение 0.5 *С term-LINKS_2_DS1820.c [12.54 KiB]
Скачиваний: 829
По DS1821+ такая проблема. По алгоритму high resolution необходимо применение команды 41h для последующего получения значения count_per_C. Однако после нее основной 8-битный регистр температуры "замораживается" на значении 125 и все измерение накрывается. Статусный регистр остается без изменений. Испытал несколько экземпляров - это не брак. Подскажите, что не так.
Попробовал выдерживать паузу до завершения температурной конверсии, прежде чем подавать дальнейшие команды - проблема разрешилась: разрешение в среднем 150 единиц на градус.
Может ктонить выложить алгоритм работы с ds18b20???ООООчень надо весь инет перерыл нашел только это
Restart:
;Сброс всех устройств
;Подсаживаем линию
; задержка на 700мкс
;отпускаем линию
;Задержка в 65мкс,
;проверка сигнала
;уровень сигнала равен 0 передача управления дальше на3
;error уровень Равен 1 =обрыв линии
;3 формируем задержку в 500мкс проверяем уровень сигнала
;ок =уровень сигнала равен 1 переход на Readbit
;error уровень равен 0 =линия закорочена
;в переменную помешаем код ошибки и выходи 0=ок
reti
Readbit:
;Чтение чтение одного бита из устройства
;Формируем синхроимпульс, подсаживаем линию =задержка 1мкс отпускаем линию снова задержка 13мкс
;считываем уровень сигнала помешаем кудато
;заполняем слот задержкой в 60-120мкс (60мкс)
reti
writebit0:
;Запись в слот нулевого значения
;подсадить линию
;задержка в 80мкс
;отпустиь линию
;
reti
writebit1:
;Запись в слот единичного значения
;подсадить линию
;задержка в 4,5мкс
;отпустиь линию
;задержка в 75мкс
reti
но смущат одно, где приём 9-12 бит самой информации ?
dimon-790 , все датчики DS18*20* работают с двумя байтами . младший байт всегда температура , а старший байт - или один знак , или знак и старшие биты температуры . всё зависит от модели . чтобы МК не загружать можно считать всего один бит знака , а все остальные пропустить , что там и реализованно .
Dj.Boom , 16 сегментов - это не полная спецификация индикатора , т.к. есть 16*1..16*4 . я не телепат .
что касается 4-ёх датчиков - не пойму где вы такое увидели ? если уж охота прицепить 4 датчика , то можно по два их комутировать , или же прицепить на разные ноги МК и в программе при одном алгоритме перебрасывать ноги , т.к. реализации считывания более 2-ух датчиков на 1 ноге я не напишу - слишком замудрёный алгоритм . а ещё проще повесить на каждую ногу по одному датчику - программа сильно упроститься , благо датчиков не много и ноги есть свободные . ещё советую почитать всю тему .
вообще у вас судя по всему какой-то кривой индикатор . авторские прошивки нормально работают с однострочником , мои - с двухстрочником . свою я проверял и точно ещё один человек . всё без проблем (хотя всётаки проблема есть с обнулением ЖКИ - команда 0x01 не проходит и начинают появляться кракозяблы , но команда там только 1 раз встречается при инициализации ).
PS: возможно ещё придётся с таймингами поиграться на вывод в ЖКИ . да , ещё проблемы были с установкой фьюзов - деление на 8 не все убирали . тогда и будут кракозяблы.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения