Простой термометр для дома с двумя датчиками DS18B20.
А почему 0,5 градуса ?Без обид,собирал описанный в Радио 'Термометр-термостат'Шаталова,дак он с датчиками DS1820 обеспечивает точность 0,1 градуса.Сужу по показаниям индикатора,меняются через 0,1:).Так же согласен,что дома достаточно мерять температуру с точностью до градуса.Просто поиски истины,ничего более:).
Последний раз редактировалось Gigavolt Вс авг 24, 2008 03:46:58, всего редактировалось 1 раз.
0.5*С - это штатное ( 9 бит ) разрешение микросхемы DS1820 в стандартном режиме.Gigavolt писал(а):А почему 0,5 градуса ?Без обид,собирал описанный в Радио 'Термометр-термостат'Шаталова,дак он с датчиками DS1820 обеспечивает точность 0,1 градуса.
Даташит писал(а):The DS18S20 Digital Thermometer provides 9-bit centigrade temperature measurements
В режиме High-Resolution она должна давать разрешение 0.06*С.
вроде пролистал весь ДШ на DS1820 и не увидел там ничего отличающегося от штатного режима в 8бит данных + 8 бит знак температуры .
пересмотрю ещё раз ...
пересмотрел . ничего похожего на расширение разрешения в ДШ нету , так что или что-то не то с источниками , или ДШ не такой . пока отправлю админу такие прошивки , а если у кого-либо есть описание команды на расширение разрешения , то позже попытаюсь перелопатить прошивку .
пересмотрю ещё раз ...
пересмотрел . ничего похожего на расширение разрешения в ДШ нету , так что или что-то не то с источниками , или ДШ не такой . пока отправлю админу такие прошивки , а если у кого-либо есть описание команды на расширение разрешения , то позже попытаюсь перелопатить прошивку .
есть вопросы ? чего-то не знаешь ? [url=http://s61.radikal.ru/i174/1006/79/bc6a635c1451.jpg][color=blue][b]прежде всего смотри это[/b][/color][/url]
TEMPERATURE REGISTER FORMAT Figure 2LINKS_234 писал(а):вроде пролистал весь ДШ на DS1820 и не увидел там ничего отличающегося от штатного режима в 8бит данных + 8 бит знак температуры.
Да, так и есть, 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).
Вечерком сляпаю програмку, и выложу исходник...
Kotische писал(а):только это не совсем знак, это называется дополнительный код...![]()
зинаю
Вот оно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 кб .
а свои варианты уже отправил на добавление к статье .
всёравно не допонимаю как повысить разрешалово - или командой задавать , или же считывать из временной памяти ?
есть вопросы ? чего-то не знаешь ? [url=http://s61.radikal.ru/i174/1006/79/bc6a635c1451.jpg][color=blue][b]прежде всего смотри это[/b][/color][/url]
LINKS_234 писал(а):у меня ДШ неправильный
Выложил даташит к себе на страничку: Даташит на ds18s20
Там кроме температурного есть ещё регистры в которых хранятся недостающие биты...LINKS_234 писал(а):всёравно не допонимаю как повысить разрешалово - или командой задавать , или же считывать из временной памяти ?
ща попробую запрограмить... если получится - выложу исходник
Тааакс...
припаял микросхему, подправил програму...
получил удивительные результаты, вполне стыкующиеся с даташитом
Итого:
COUNT_PER_C = SCRATCHPAD[7] = 10h = константа
COUNT REMAIN = SCRATCHPAD[6] = от 01h до 10h = меняется
протокол работы програмы
Видно что смена значения температуры происходит при переходе значения 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
припаял микросхему, подправил програму...
получил удивительные результаты, вполне стыкующиеся с даташитом
Итого:
COUNT_PER_C = SCRATCHPAD[7] = 10h = константа
COUNT REMAIN = SCRATCHPAD[6] = от 01h до 10h = меняется
протокол работы програмы
1 столбец = SCRATCHPAD[0]
2 столбец = SCRATCHPAD[1]
3 столбец = SCRATCHPAD[6]
4 столбец = SCRATCHPAD[7]
36h 00h 10h 10h
36h 00h 0Fh 10h
36h 00h 0Bh 10h
37h 00h 08h 10h
37h 00h 06h 10h
37h 00h 05h 10h
37h 00h 04h 10h
37h 00h 02h 10h
37h 00h 01h 10h
38h 00h 0Fh 10h
38h 00h 0Fh 10h
38h 00h 0Eh 10h
38h 00h 0Dh 10h
38h 00h 0Ch 10h
38h 00h 0Ah 10h
38h 00h 09h 10h
39h 00h 08h 10h
39h 00h 08h 10h
39h 00h 07h 10h
39h 00h 07h 10h
39h 00h 06h 10h
39h 00h 05h 10h
39h 00h 04h 10h
39h 00h 03h 10h
39h 00h 02h 10h
3Ah 00h 0Eh 10h
3Ah 00h 0Ah 10h
3Bh 00h 08h 10h
3Bh 00h 07h 10h
3Bh 00h 06h 10h
3Bh 00h 05h 10h
3Bh 00h 04h 10h
3Bh 00h 03h 10h
3Bh 00h 02h 10h
3Bh 00h 01h 10h
3Bh 00h 01h 10h
3Bh 00h 01h 10h
3Bh 00h 01h 10h
3Ch 00h 10h 10h
3Ch 00h 0Fh 10h
Видно что смена значения температуры происходит при переходе значения 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 одинаковые ??? почему-то мне казалось что это разные датчики . даже когда я покупал DS18B20 в прайсе были и простые 1820 и 18S20 .
есть вопросы ? чего-то не знаешь ? [url=http://s61.radikal.ru/i174/1006/79/bc6a635c1451.jpg][color=blue][b]прежде всего смотри это[/b][/color][/url]
LINKS_234 писал(а):а теперь ещё один вопрос на засыпку :
DS1820 и DS18S20 одинаковые ??? почему-то мне казалось что это разные датчики ... в прайсе были и простые 1820 и 18S20 .
Апаратно они разные, програмно одинаковые.
1820 - это старая (слегка глючная) микросхемя давно снятая с производства.
18S20 - новая улучшенная микросхема - полный аналог, умеющая нормально работать на паразитном питании и длинной (до 300м) линии.
Програмно они абсолютно идентичны.
спасибо за информацию .
думаю не буду делать пока новую прошивку , к тому же датчиков нету .
если хотите - можете выложить свою версию прошивки , но не думаю что для домашнего использования понадобиться такое разрешение
0.5 градуса по сути не сильно заметны
да , кстати , исходники и окончательная схема термометра , которые отправлял админу на добавление к статье :
думаю не буду делать пока новую прошивку , к тому же датчиков нету .
если хотите - можете выложить свою версию прошивки , но не думаю что для домашнего использования понадобиться такое разрешение
да , кстати , исходники и окончательная схема термометра , которые отправлял админу на добавление к статье :
- Вложения
-
- 02.gif
- окончательная схема термометра
SB1 - кнопка без фиксации (парралельно ей можно добавить конденсатор 10нФ для устранения возможного дребезга) - (22.48 КБ) 1122 скачивания
-
- term-LINKS_2_DS18B20.c
- 2-ух строчник
датчики DS18B20 - (12.45 КБ) 1061 скачивание
-
- term-LINKS_2_DS1820.c
- 2-ух строчник
датчики DS1820
разрешение 0.5 *С - (12.54 КБ) 831 скачивание
есть вопросы ? чего-то не знаешь ? [url=http://s61.radikal.ru/i174/1006/79/bc6a635c1451.jpg][color=blue][b]прежде всего смотри это[/b][/color][/url]
По DS1821+ такая проблема. По алгоритму high resolution необходимо применение команды 41h для последующего получения значения count_per_C. Однако после нее основной 8-битный регистр температуры "замораживается" на значении 125 и все измерение накрывается. Статусный регистр остается без изменений. Испытал несколько экземпляров - это не брак. Подскажите, что не так.
- dimon-790
- Мучитель микросхем
- Сообщения: 442
- Зарегистрирован: Пт авг 29, 2008 09:22:37
- Контактная информация:
Может ктонить выложить алгоритм работы с 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 бит самой информации
?
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 ноге я не напишу - слишком замудрёный алгоритм . а ещё проще повесить на каждую ногу по одному датчику - программа сильно упроститься , благо датчиков не много и ноги есть свободные . ещё советую почитать всю тему .
Dj.Boom , 16 сегментов - это не полная спецификация индикатора , т.к. есть 16*1..16*4 . я не телепат .
что касается 4-ёх датчиков - не пойму где вы такое увидели ? если уж охота прицепить 4 датчика , то можно по два их комутировать , или же прицепить на разные ноги МК и в программе при одном алгоритме перебрасывать ноги , т.к. реализации считывания более 2-ух датчиков на 1 ноге я не напишу - слишком замудрёный алгоритм . а ещё проще повесить на каждую ногу по одному датчику - программа сильно упроститься , благо датчиков не много и ноги есть свободные . ещё советую почитать всю тему .
есть вопросы ? чего-то не знаешь ? [url=http://s61.radikal.ru/i174/1006/79/bc6a635c1451.jpg][color=blue][b]прежде всего смотри это[/b][/color][/url]
16*1. Вообщем попробывал разные прошивки одна краказябра выводится.
Вот наваял завтра буду пробывать это.
Вот наваял завтра буду пробывать это.
- Вложения
-
- term.rar
- Схема в Протеусе v6 и прошивка термометра на 6 датчиков.
- (19.12 КБ) 475 скачиваний
вообще у вас судя по всему какой-то кривой индикатор . авторские прошивки нормально работают с однострочником , мои - с двухстрочником . свою я проверял и точно ещё один человек . всё без проблем (хотя всётаки проблема есть с обнулением ЖКИ - команда 0x01 не проходит и начинают появляться кракозяблы , но команда там только 1 раз встречается при инициализации ).
PS: возможно ещё придётся с таймингами поиграться на вывод в ЖКИ . да , ещё проблемы были с установкой фьюзов - деление на 8 не все убирали . тогда и будут кракозяблы.
PS: возможно ещё придётся с таймингами поиграться на вывод в ЖКИ . да , ещё проблемы были с установкой фьюзов - деление на 8 не все убирали . тогда и будут кракозяблы.
есть вопросы ? чего-то не знаешь ? [url=http://s61.radikal.ru/i174/1006/79/bc6a635c1451.jpg][color=blue][b]прежде всего смотри это[/b][/color][/url]
доработал прошивку. Исправил некоторые мелкие огрехи и добавил точность теперь измерений 0.1
датчики забыл сказать ds1820.
датчики забыл сказать ds1820.
- Вложения
-
- term.rar
- (3.91 КБ) 560 скачиваний