PDA

Просмотр полной версии : Термометр с двумя датчиками



a139st
17.02.2009, 09:43
Доброго времени суток! Прошу помощи.
Нужено контролировать температуру на двух датчиках.
Натолкнулся на сылку: http://www.joyta.ru/158-termometr-s-dvumya-datchikami-na-ds18b20-i-mikrokontrollere-pic16f84/#more-158
Стоит его собирать ? Может есть другой вариант ?

Александр RW4NH
17.02.2009, 10:30
Привет!
Как обычно,никаких сведений :кто вы и откуда вещаете :-((

Сейчас цифровых термометров с двумя датчиками в России много различных модификаций продают и по нормальным ценам.
Делать самоделку,конечно можно и интересно,но дороже выйдет,IMHO.

73

Explorer
17.02.2009, 17:46
to a139st
Варианты http://david.embedders.org/term.html
http://radiokot.ru/lab/controller/18/
Есть книга "Радиолюбительские конструкции на PIC-микроконтроллерах" Заец Н.И. книга 4. Ее можно скачать с инета.Там тоже есть на две точки,с запоминанием экстремальных температур за неделю.
Вот еще была ветка на форуме http://forum.cqham.ru/viewtopic.php?t=1625 7

vnnik71
22.03.2011, 00:52
Вариант 2-х канального термометра на PIC16F628+DS18B20+LC D Nokia3310 можно посмотреть на http://vrtp.ru/index.php?showtopic= 16103

revvadim
22.03.2011, 04:54
Вот тут много схем термометров , термостатов и т.п.: http://eldigi.ru/site/term/

ra0aje
22.03.2011, 15:36
Я собрал вот этот, был в наличии индикатор, работает не первый год. При опробовании измерил свою температуру 36,6 показывал.

Кукин Николай Николаевич
24.03.2011, 11:41
Большинство конструкций, на которые приведены ссылки используют датчики семейства DS16*20. Мне потребовалось измерять температуру с большей дискретностью - на настоящий момент не хуже порядка 0,01 С.
Пробовал применить датчик DS1821. Возник ряд вопросов при сравнении его поведения с тем, как работает датчик DS16B20.
Кто-нибудь использовал датчик DS1821 в конструкции термометра?
Николай.

uu5jkb
24.03.2011, 11:53
Большинство конструкций, на которые приведены ссылки используют датчики семейства DS16*20. Мне потребовалось измерять температуру с большей дискретностью - на настоящий момент не хуже порядка 0,01 С.
В даташите на ds1821 точность 8 бит - это шаг в 1 градус, только он лучше калиброван по сравнению с ds18b20, т.е. он лучше по абсолютной точности. Самое точное (относительная точность измерения), что я находил и мне приходилось использовать, это 13-битный ADT7301 с шагом 0.03125 градуса. Термометры с меньшим шагом не встречал. Возможно, для более мелкого шага получится использовать аналоговые датчики

Borodach
24.03.2011, 12:07
Конечно, прошлый век, но можно на ПВ собрать... . :)

http://www.radioradar.net/files/Image/radiofan/measuring_technics/termometr/pic1.gif
http://www.radioradar.net/radiofan/measuring_technics/termometr.html


Или вот так... . :)
http://qrx.narod.ru/avt/t_kp572.gif
http://qrx.narod.ru/avt/t_kp572.htm

Кукин Николай Николаевич
24.03.2011, 14:45
Да, по вопросу автора ветки. Повесив на 1w шину одновременно несколько датчиков DS18B20 можно получить то, что Вам требуется

Добавлено через 5 минут(ы):

Уважаемые форумчане, прошу прощения, запутался с корректировкой собственного длинного сообщения и случайно его удалил. Восстанавливаю то, что удалось.

Borodach, спасибо за ссылки, но это несколько не то, что хотелось бы услышать. Все эти вещи я анализировал (крутизну преобразования аналоговых датчиков и разрядность АЦП,а также дискретность показаний, снимаемых с цифровых датчиков), прежде, чем пришел к DS1821.
UU5JKB.
Чтобы было понятным, какая конечная цель – измерение температуры воды около тройной точки воды. Той дискретности после запятой (4 бита), которую имеет DS18B20 мне не хватило – значение измеряемой температуры ,как оказалось, лежит где-то между 0,06 -0,12 градуса.
Тогда я начал пытать DS1821. По аппноуту 105.пдф фирмы Даллас и даташиту на этот датчик у него имеется принципиальная возможность снятия показаний температуры с дискретностью менее 0,01 градуса(примерно 1/130 в диапазоне +- 1 градус от тройной точки воды). Но вот поведение результатов измерений разительно отличается от того, что дает DS16B20. Во всяком случае, у меня сложилось мнение, что последний датчик дает гораздо стабильные во времени показания.
Вот по вопросу стабильности результатов измерений я и хотел услышать, кто имеет опыт борьбы.
Опишу вкратце мой скромный опыт.
У обоих датчиков явление саморазогрева налицо. У 16В20 – порядка 0,2-0,4 градуса. На воздухе в термостате (пенопластовая коробочка как 2 спичечных коробка, помещенная в ящик стола, двери и окно в комнате закрыты), 0,2 градуса проходят примерно за 4-7 циклов измерений. В воде 4-5 циклов и саморазогрев меньше – где-то 0,2 градуса. При дальнейших непрерывных измерениях наступает четко выраженная стабилизация показаний – колебания в пределах последнего бита.
У 1821 саморазогрев в воздухе выглядит совершенно по-другому – сначала разогрев на 0,2-0,4 градуса, потом снижение индицируемой температуры, может даже ниже значения первого измерения сразу после включения, потом постепенное повышение температуры на почти 1 градус. После стабилизации наблюдается колебания вблизи точки стабилизации примерно +/- 0,1-0,15 градуса. В момент перехода через значение 0,5 градуса ( например с 2,49 на 2,51 или наоборот) наблюдаются скачки в обратную сторону на 0,1-0,15 градуса.
Имеется явно выраженная зависимость снимаемых показаний от характеристики подсоединенной 1w линии. У пары имеющихся экземпляров 16В20 это явление получить не удалось. Все сравнения производились на одном и том же приборе и одной и той же линии путем простой перепайки датчиков и перезаливке программы в процик.
1w интерфейс на физическом уровне был один и тот же, тайм-слоты одни и те же, менялись только команды управления.
При попытках изменения тайм-слотов никакой четкой закономерности не выявил.
Выявилась одна не описанная в даташите особенность снятия дробных показаний с датчика, которую преодолел методом тыка, но это стоило времени и нервов, а также один датчик при этом удалось сломать.
Поэтому для индикации стабильных во времени показаний для датчика 1821 пришлось дополнительно применить алгоритмы статистических обработок получаемых результатов. Испробовал несколько алгоритмов обработки по трем измеренным результатам – не понравилось. Пока остановился на следующем алгоритме – сортировка 9 результатов, идущих подряд, диагональная отбраковка 2х крайних значений и индикация среднего арифметического из 7 оставшихся значений. И так после каждого одиночного измерения.
По кривой нормального распределения с применением квадратичной обработки и использованием коэффициентов Студента пока не пробовал ввиду малого объема процика – тиня2313.
Таким образом, удалось добиться стабильно индицируемых показаний с дискретностью 0,01 градуса – мерцание сотки туда-сюда примерно за 5-6 секунд, то есть примерно за 10 циклов измерений.
Естественно, если задачи измерения с такой дискретностью не стоИт, то весь описанный мной изврат не нужен, так как 16В20 изначально имеет точность лучше, чем 0,3 градуса и удовлетворит самых требовательных. Прокалибровав его, можно влегкую получать точность равную его максимальной дискретности, т.е. 0,06 градуса.
Николай.

Кукин Николай Николаевич
28.03.2011, 09:35
Всем добрый день.
Дмитрий, спасибо за помощь, но часть опечаток оказалась не исправлена. Поэтому для всех, прочитавших мои опусы в этой теме, – я ошибся в указании марки датчика. Вместо «DS16B20» нужно читать «DS18B20».

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

ut1wpr
28.03.2011, 11:44
Привет, Ник-Ник!
Где-то на просторах Инета в свое время я читал о погрешностях этих датчиков в области высоких температур. Интересно было написано, с приведением формул и кривой. Описан был и способ компенсации.
Вот только порядок значений абсолютной погрешности сейчас не вспомню. Надо рыть, а оно мне надо? :)

Кукин Николай Николаевич
28.03.2011, 14:47
Привет, Ник-Ник!

Vic-Nick привет!
Графики зависимости среднестатистической погрешности датчиков имеются в любом даташите на соответствующий датчик. Конечно, абсолютное отклонение зависит от величины измеряемой температуры. На краях рабочего диапазона эти погрешности максимальны, это тоже закономерно. Величина погрешности всегда не превышает величины точности ,даваемым изготовителем для конкретного типа датчика. Для DS18B20 это порядка +/- 0,2-0,3 градуса во всем рабочем диапазоне.
Для DS1821 это +/- 1 градус от -30 до+125 и -2 градуса от -30 до -55. Но нигде не пишут, учитывает ли величина погрешности саморазогрев датчика или нет. Более того, нигде не нашел указаний, как это можно компенсировать.
Но меня интересует узкий диапазон от 0 до +1 градус. Там эта погрешность около -0,2 градуса по графику.
Поэтому, на первый взгляд ничего не мешает произвести определение абсолютного значения поправки на тройной точке воды (0 градусов) и программным способом ее учитывать при индикации. Но вот тут и выяснилось, что даже той микроскопической величины тепла, которое датчик выделяет в окружающую среду с лихвой достаточно, чтобы сдвинуть температуру тонкого слоя окружающей среды с калибровочной точки на 0,1-0,2 градуса вверх. Причем, чем точнее пытаешься провести измерение, тем больше надо выполнить циклов измерений, тем больше выделяется тепла и, тем самым, больше величина возмущения , привносимого самим датчиком. Ну , и на сопротивлении теплопередаче слоя пластмассы, толщиной около 0,5 мм, тоже возникает температурный перепад. Пока эти (0,1-0,2) очень много для моих целей. Буду экспериментировать дальше. Может быть, остановлюсь на 1 отсчете за минуту. Лишний раз подчеркну, что эти проблемы возникают только при попытке достигнуть максимума возможного. Платиновые и другие высокоточные датчики пока не рассматриваю, т.к. хочу решить задачу наипростейшим способом, применив готовый цифровой датчик. Хотя, очень вероятно, что , применив и такие датчики, все равно попадешь на эти же грабли – ток ведь все равно будет течь и выделять тепло.
В последних экспериментах четко было видно, что дискретность 1/130 ( примерно такое значение имеет то, что названо «count_per_degree» в appnout105.pdf и «count_per_C» в даташите на датчик) при температуре 0 градусов Ц реально достижимая вещь.
А самое смешное во всей истории – для чего все это надо, если расскажешь – народ засмеёт и будет крутить пальцем у виска.
Николай.

ut1wpr
28.03.2011, 14:58
А самое смешное во всей истории – для чего все это надо, если расскажешь – народ засмеёт и будет крутить пальцем у виска.
Николай.Я не буду!
Ты не пробовал "механический" подход? Максимально-короткими выводами припаять датчик на макисально-возможные по площади контактные площадки?
Теплоотвод, как-никак. Хотя особой теплопередачи по выводам ожидать нельзя, учитывая диаметр конструктивных соединителей кристалл-вывод.
Ну, и обратный эффект тоже может быть. :)

Кукин Николай Николаевич
28.03.2011, 15:39
Ты не пробовал "механический" подход?

Не, Виктор, такое точно не подойдет. Дело в том, что у меня уже получилось разобрать один такой датчик при попытке припаять отломившийся вывод. Выводы, оказывается, легко у них обламываются. Держит всего несколько изгибов непосредственно у корпуса, а потом трындец.
Конструктивно датчик состоит из 3 слоев. От каждого слоя идет свой вывод. Кристалл (средний слой) имеет размер порядка 1х1,5 мм. Параллельно плоской поверхности (у меня в корпусе PR35) под слоем пластмассы 0,5 мм идет луженая пластинка из железа, омедненная со стороны кристалла. Шероховатость медного покрытия очень низкая, поверхность практически зеркальная. На боковых поверхностях пластинки видны следы от штампа. Отштампована как единое целое с выводом из пластинки. Размер этой пластинки чуть-чуть меньше размера корпуса, таким образом, разработчики максимально уменьшили сопротивление теплопередаче этого слоя. Длина выводов внутри корпуса до поверхности корпуса порядка 1 мм. То есть, если обломил вывод, то почти 100% , что датчику каюк. Припаяться сложно.

Крепление датчика к какой-либо медной пластине с целью повышения теплоотдачи может принести эффект только при измерениях в воздухе. А мне надо в воде. В воде можно получить даже обратный эффект(т.е. увеличение сопротивления теплопередаче системы в целом) против условий, когда плоская поверхность датчика непосредственно омывается водой.
Убрать часть пласмассового слоя с целью улучшить теплотвод? Работа ювелирная, ну к тому же, будет потеряна герметичность. При цене датчика 4 убиенных енота я буду подумать.
Как-то так.

vnnik71
30.04.2011, 11:07
Несколько простых конструкций термометров на микроконтроллерах и различных датчиках температуры можно посмотреть на http://www.termocontrol.els hema.info. Есть термометры и с двумя датчиками