Вот забацал такой градусник.
Вообщем по порядку.
Может быть если всё будет ок то позже перепишу код на атмегу8, а может и нет, скорее всего буду использовать ардуино про мини.
Прибор состоит из контроллера, двух датчиков, двух 4 значных семисегментных индикаторов и некоторого количества обвязки.
Схема работы следующая, контроллер с помощью встроенного аналового-цифрового преобразователя считывает сигнал с датчика -> при помощи оверсемлинга значение из 10 битного приобразуется в 16 битное тем самым немного сглаживаются выбросы + получаем мелкий шаг АЦП -> полученное значение пересчитывается в сопротивление -> по формуле Стейнхарта-Харта вычисляется температура -> полученное значение температуры выводиться на экран.
Датчик
Датчиком является терморезистор MF-58 рабочая температура до 250 (а по некоторым данным до 300) градусов, этот резистор часто используется в 3D принтерах для контроля температуры хотэнда. Данный резистор имеет сопротивление 100 кОм что неплохо, так как на точность измерений не будет влиять сопротивление проводов. Теперь о плохом, терморезистор не линейный элемент, то есть сопротивление по которому процессор потом будет рассчитывать температуру меняется не одинаково. Но для этого у нас и есть формула товарищей Стейнхарта и Харта которая и учитывает эту не линейность.
Датчик является отрицательным плечом в делителе напряжения. Для повышения точности, опорным напряжением делителя и аналового-цифрового преобразователя контроллера является опорное напряжение обеспечиваемое микросхемой TL-431. (сейчас точно не помню кажется 3 Вольта)
Экран
Экран собран на сдвиговых регистрах 74 серии 74HC595. Контроллер отправляет по два байта каждые 6 мсек. Первый байт определяет какие сигменты индикатора будут светиться, а второй байт определяет место положение знака. Вообщем одним словом динамическая индикация. Экраном может служить любой LED или ЖК экран. Можно сделать линейную шкалу из светодиодв, вообщем почти все что душе угодно, нужно будет только слегка переписать код.
Прибор не нуждается в калибровке и при исправном термисторе начинает работать сразу.
Вот немного тестов
Нагреваем датчики термометров в глицерине
Далее греем до 200 градусов и начинаем постепенно охлаждать, попутно сравниваем показания с эталонным термометром. На самые нижний экран не смотрите, это второй канал который был не задействован.
Это в стакане с талым льдом.
Это фото из холодильника
Фото из морозилки
Устройство датчика.
Сверлим отверстие под термистор
Размер термистора для сравнения
Одеваем на ножки трубочки из фторопласта, скручиваем проводки МГТФ и ножки, пропаиваем.
Одеваем термоусадку чтобы не было КЗ, кусочек стеклотканного кембрика.
Заливаем поксиполом
Далее рисуем делаем платки.
После сборки выходит вот такая хрень
Один датчик кипятим в воде
Сравниваем вот с таким термометром
Еще разок в морозилку
Вот тут датчики температура выровнялась, датчики рядом друг с другом в комнате.
Вообщем я его делал для ребят со снегоходного форума, сейчас думаем как сделать так что бы датчики под свечи впиндюрить.
Печатка и весь код исключительно собственного написания. Лишь только принцип расчета по формуле взят из примера* и то немного перепахан.
Сейчас используется в качестве комнатно - уличного термометра. Работает в паре с термометром с цифровым датчиком DS18В20, расхождения минимальны +- 0,2 - 0,4 градуса, и то вероятно вызваны разницей корпусов, то есть их скоростью нагрева и охлаждения, плюс погрешность обоих. Термистор более статичен. DS18B20 в корпусе TO-92 в термоусадке, термитстор закатан в болт М6.
Работает круглосуточно уже около 3-х месяцев, не разу не завис и не глюканул. Облучал портативкой на 2-ке и 70-ке, глюков так же не наблюдал.
* http://arduino-diy.com/arduino-thermistor