Малогабаритный термометр с кремневым терморезистором.

Автор - Поздеев Андрей (moLCHec).
Для контроля процесса ламинирования понадобился термометр, определяющими факторами являлось возможность измерять температуру на торце детали шириной 5 мм и менее, т.е. активная часть датчика должна быть минимальной. Температурный диапазон 0...200oС, при этом сам датчик должен выдерживать более высокую температуру. Источник питания 24В. Поскольку задача не очень сложная я решил её немного усложнить, решив для себя сделать данный девайс минимальными габаритами, и вот что из этого получилось.
В качестве датчика был выбран KTY84-130 - это кремневый терморезистор от PHILIPS. У данного датчика диапазон рабочих температур -40...300 °С, что как нельзя лучше для меня подходит. Диаметр датчика 1,6 длина 3,6мм - корпус SOD68 (DO-34), т.е активная часть датчика как раз подходит для выполнения поставленной задачи. Для индикации был выбран светодиодный индикатор от старого компа, ничего другого просто под рукой не было. Управляющий контроллер ATMEGA8L-8AU его ресурсов вполне достаточно. Поскольку нет требований по стабильности частоты, я использовал внутренний RC генератор, что позволило освободить дополнительные выводы порта B.
Ну вот, дело дошло до схемы, её я рисовал с печатной платы и специально для статьи, поэтому не исключены ошибки.
И сразу печатная плата (файл с ПП в формате lay можно заполучить в конце статьи):
Несколько слов по монтажу: конденсатор С3 припаивал непосредственно к пятачку платы и к пятачку аналоговой земли, используя отрезок провода, сам конденсатор приклеил под индикатором. Плату разводил под ещё один конденсатор его ставить не обязательно. Аналоговую и цифровую земли необходимо соединить в одной точке, я это сделал в месте подключения к источнику питания. Провод до датчика необходимо использовать экранированный. Сам датчик имеет анод и катод, катод обозначен полоской и его следует подключать к земле.

Сопротивление резистора R3* выбирается в зависимости от напряжения питания, опорного напряжения и диапазона температуры. В данном случае напряжение питания 5В, опорное напряжение 2,56, диапазон 0...199. Для расчета был создан EXEL файл, в который из даташита предварительно забил значения сопротивления датчика. Колонка U R содержит значения падения напряжения на сопротивлении. Таким образом, значение сопротивления R3(в таблице Rд) выбирается таким, чтобы падение напряжения при максимальной температуре было немного больше опорного напряжения. Колонка ADC показывает значения 10-ти разрядного преобразования АЦП на основании колонок Т °С и ADC строим график, который затем аппроксимируем в линию Трейда и получаем уравнение функции T(ADC), которое используем для преобразования результата АЦП в цифровое значение температуры. У меня получилось уравнение y= 2,5338x + 407,22, где y-ADC; x-T. Отсюда T(ADC)=(407-ADC)/2,5. Из данных видно, что ноль функции на самом деле при ADC=399. Преобразуем выражение для вычисления средствами контроллера, умножив его на 100, получим T(ADC)=((399-ADC)*100)/250. Полученное выражение подставляем в колонку Проверка и корректируя значения знаменателя добиваемся минимального отклонения в заданном диапазоне. В результате у меня получилось выражение T(ADC)=((399-ADC)*100)/264. Поскольку разброс сопротивления датчика составляет в среднем 4...5% то отклонение на 1...2 °С особо не влияют на общую погрешность.
Ну вот с теорией покончено приступаем к написанию прошивки.
Код основной программы можно скачать в конце статьи.
Обратите внимание, что первые две сторки include специфичны для компилятора ICC for AVR, при использовании другого компилятора необходимо подключать соответствующие файлы согласно документации.
Для повышения качества преобразования используется спящий режим ADC. Подробнее о конфигурации спящих режимов и их типов я писал тут. Для ограничения тока через индикатор в каждом цикле преобразования мы инвертируем активные выводы порта значения которых хранятся в соответствующих переменных PC, PB, PD.
Изначально микроконтроллер уже сконфигурирован на работу от внутреннего RC генератора, частота 1 МГц. На всякий случай привожу значения конфигурационных ячеек для работы внутреннего RC (FUSE bits) CKEL3...0 0100.
Паяльником нагревал датчик до 150 °С, пробовал зажигалкой до 199 °С датчик остался жив устройство работает без замечаний.
Общий потребляемый устройством ток порядка 33мА, при питании от 12В наблюдается слабый нагрев стабилизатора LP2950, несмотря на то что входное напряжение стабилизатора до 30В если требуется запитать напряжением выше 12В то желательно поставить ограничивающий резистор из учёта R=(Uвх-10)/0,033 или заменить стабилизатор на более мощный, например LM7805. Применение МК с индексом L позволяет снизить напряжение питания до 2,7В однако при этом придётся снизить сопротивление резистора R2, микросхему LP2950 тогда можно исключить.
Что из всего этого получилось можно посмотреть на фотографиях:
Файлы:
Печатная плата - 01.rar
Прошивка (с исходником) - 02.rar
Расчет параметров - 03.rar

Все вопросы - в Форум.






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.