Всем добрый день.
Дмитрий, спасибо за помощь, но часть опечаток оказалась не исправлена. Поэтому для всех, прочитавших мои опусы в этой теме, – я ошибся в указании марки датчика. Вместо «DS16B20» нужно читать «DS18B20».
Кажется я победил датчик DS1821.
При анализе результатов измерений прослеживалось циклическое колебание значений с периодом порядка от 5 до 12-13 сек. Подсоединение шлейфа программирования или изменение нагрузочного сопротивления на управляющий вывод приводило к изменению как снимаемых значений, так и изменению периода колебаний. Подсоединение электролита на 1500 мкф параллельно питанию датчика полностью устранило это явление, и снимаемые значения стали стабильные во времени и перестали зависеть от сопротивления на управляющем выводе. При эксплуатации DS18B20 это явление отсутствовало.
Поэтому тем, кто будет в будущем использовать этот датчик для прецизионных измерений, могу рекомендовать выполнение следующих мероприятий.
- обязательное шунтирование датчика по питанию электролитическим конденсатором;
- при точном соблюдении тайм-слотов по даташиту фирмы Даллас, чтение 9-битной переменной, названной в appnote105 как "count_per_degre e", ОБЯЗАТЕЛЬНО необходимо предусматривать паузу между командами загрузки счетчика (команда 0x41) и чтения значения (команда 0xA0). Я начал с 1 сек, добрался до значения 1 мсек и на этом успокоился. Без этой паузы читалось как 511 (все единицы).
- обязательно необходимо учитывать саморазогрев датчика. Величина его зависит как от того, как оформлена конструкция, так и от частоты опроса датчика, что определяется программой. Поэтому тут придется искать компромисс между частотой опроса датчика и точностью калибровки. Я, например, отказался от непрерывного чтения флага завершения преобразования, чтобы определить момент начала возможности чтения результатов измерения, и заменил все на измерение примерно раз в секунду. Тем самым уменьшил саморазогрев.
Чувствительность получается очень высокой – датчик через пару секунд уже реагирует на тепло, излучаемое ладонью, поднесенной на расстоянии 10-15 см. Реально спокойно отслеживается изменение температуры на 0,01-0,015 градуса. Самый главный вопрос - как прокалибровать. Вчера на рыбалке попробовал прокалибровать, но получил результат, имеющий зависимость от положения датчика в среде измерения и времени измерения. Хотя, на первый взгляд, условия для создания тройной точки воды были почти идеальные – речной пирог: снизу слой льда толщиной около 45 см, сверху слой льда толщиной около 10-15 см, покрытый слоем снега около 35-40см, между слоями льда слой воды со снегом около 15 см. Температура воды подо льдом на 0,01 градуса теплее, чем внутри льда.(Это по результатам последующих измерений). Тем не менее, и здесь саморазогрев датчика,помещенного внутрь пирога, вносит величину от 0,1 до 0,2 градуса. Буду думать, как его полностью компенсировать.
Николай.