Термодатчик на Atmega8A. Вариант 1

Добрый день, уважаемые радиолюбители.

В радиолюбительской практике бывают случаи, когда необходимо измерять и (или) контролировать температуру в широком диапазоне, но при этом прецизионная точность измерений не требуется. Примером таких измерений может служить контроль температуры отмывочной жидкости и воздуха при автоматической отмывке и сушке печатных плат, контроль температуры при сушке и полимеризации некоторых лаков, красок, компаундов и т.д. Сегодня я хотел бы предложить Вам пример реализации подобного устройства.

Итак, на схеме ниже представлена схема электрическая принципиальная спроектированного термодатчика. Разберёмся кратко как он работает.

В основе данного устройства лежит термодатчик DA2, способный измерять температуру в диапазоне от -40 до +125 градусов Цельсия с точностью ±3 градуса [1].


Аналоговый сигнал, снимаемый с термодатчика поступает на вход нулевого канала аналогово-цифрового преобразователя (АЦП) микроконтроллера DA3 [2], где происходит оцифровка и последующая обработка сигнала. В качестве алгоритма обработки было использовано усреднение по методике скользящего среднего т.к. данная методика усреднения позволяет достаточно эффективно избавиться от случайных одиночных помех [3]. Усреднение производится по результатам 10-ти измерений.


Результат измерения и обработки выводится на ЖК-дисплей типа WH-1602A, подключённый к порту D микроконтроллера DA3 через защитные резисторы R13-R19. По умолчанию на дисплее в первой строке выводится надпись “Temprtature now” (температура сейчас), а во вторую строку выводится непосредственно температура в формате t=”текущая температура“.


В случае превышения заданного порога температуры активируется звуковая сигнализация, реализованная программно в совокупности с внешним исполнительным устройством. Внешним исполнительным устройством служит КМОП-инвертор ( транзисторы VT3, VT4 ), выполняющий роль усилителя тока, совместно с пьезоэлектрическим излучателем Z2. При этом на дисплее во второй строке выводится надпись в формате “WARNING t=”Текущая температура””.


Установка порога срабатывания сигнализации термодатчика производится выключателями S1, S2. При размыкании выключателя S1 происходит ступенчатое циклическое уменьшение порога срабатывания, а при размыкании выключателя S2 – ступенчатое циклическое увеличение порога срабатывания. При этом во второй строке выводится надпись в формате “Porog=”Текущий порог срабатывания””. При одновременном же размыкании выключателей S1 и S2 во вторую строку дисплея выводится значение текущего порога срабатывания сигнализации термодатчика.


По окончанию ввода данные о пороге срабатывания сохраняются в энергонезависимую EEPROM, где и хранятся при отключении питания устройства. Запись в EEPROM производится только при различии установленного и сохранённого в памяти порога для продления срока службы EEPROM (EEPROM имеет относительно небольшой ограниченный ресурс циклов перезаписи).


Дополнительной функцией термодатчика является автоматическая регулировка яркости подсветки посредством аппаратного ШИМ. В качестве датчика освещённости используется фоторезистор R8.


Сигнал, снимаемый с делителя R7, R8 подаётся на четвёртый канал АЦП где оцифровывается и обрабатывается по такой же методике, что и сигнал с термодатчика. Управление подсветкой дисплея осуществляется через КМОП-инвертор ( транзисторы VT1, VT2 ), выполняющий роль усилителя тока.


Опорный источник напряжения для измерения температуры реализован на регулируемом прецизионном стабилитроне DA1 [4, 5]. От стабильности поддержания напряжения на выходе данного источника напрямую зависит точность измерения температуры во времени.


Микроконтроллер DA3 тактируется от внешнего кварцевого резонатора Z1, подключенного к соответствующим выводам XTAL1, XTAL2.


Питание термодатчика осуществляется через дополнительный стабилизатор напряжения, выполненный на микросхеме DA4 [6]. Данный стабилизатор необходимо установить на дополнительный теплоотвод.


Питание микроконтроллера DA3 осуществляется через дополнительные LC-фильтры, выполненные на дросселях L1, L2 и конденсаторах С9-С13. Кроме того данные фильтры дополнительно развязывают по питанию цифровую и аналоговую части микроконтроллера, исключая их влияние друг на друга. Данные фильтры необходимо установить как можно ближе к выводам 7, 8, 20, 22 (VCC, AVCC, GND) микроконтроллера.

Конденсаторы С15-С18 – дополнительный фильтр питания термодатчика.


Конденсаторы С1, С2 – дополнительный фильтр напряжения питания для обеспечения логической единицы на выводах 25, 26 (PC2, PC3) микроконтроллера при разомкнутых выключателях S1, S2.


Конденсатор С4 – дополнительный фильтр напряжения питания термодатчика DA2. Данный конденсатор необходимо установить в непосредственной близости от выводов питания термодатчика.


Конденсаторы С5, С6 – дополнительные фильтры выходного напряжения датчиков.

Выключатели S3, S4 служат для отключения подсветки ЖК дисплея, а так же звуковой сигнализации.


Все использованные детали указаны на схеме.


Программирование микроконтроллера производится по интерфейсу SPI, для чего в термодатчике выведены соответствующие выводы микроконтроллера через защитные резисторы R9-R12.


Настройка и налаживание устройства не представляет сложности. После сборки термодатчика необходимо подать на устройство питание в диапазоне от 7 до 35 Вольт и проконтролировать напряжение на выходе стабилизатора DA4, которое должно лежать в диапазоне от 4.9 до 5.1 Вольт. При необходимости напряжение на выходе корректируется подбором резистора R29.


Далее необходимо проконтролировать напряжение на выходе стабилитрона DA1, которое должно быть равно 3 Вольтам. При необходимости выходное напряжение корректируется резисторами R4, R5.


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


В различных исполнениях дисплея могут быть тонкости с подключением данного регулятора контрастности, но как минимум существует 2 варианта — первый из них показан на исходной схеме, а второй заключается в том, что напряжение на вывод контрастности VO подаётся с подвижного контакта переменного резистора, включенного между питанием +5 Вольт и общим проводом. Какой из методов используется в Вашем дисплее необходимо уточнять в документации к конкретному варианту исполнения дисплея.


После установки необходимой контрастности необходимо подключить программатор к микроконтроллеру и произвести его «прошивку» по SPI-интерфейсу. После окончания программирования микроконтроллер будет перезагружен автоматически. При программировании необходимо выставить фьюзы в соответствии с фото ниже. Будьте внимательны, фьюзы приведены в ИНВЕРСНОМ варианте.

Фьюзы микроконтроллера

После окончания перезагрузки остаётся только выставить переключателями S1, S2 необходимый порог срабатывания звуковой сигнализации термодатчика, после чего настройку и налаживание можно считать законченными.


По окончанию настройки устройства производится его калибровка по образцовому термометру. Если показания термодатчика после 10-15 минут работы отличаются от показаний образцового термометра более чем на ±3 градуса Цельсия необходимо произвести корректировку коэффициента 0.0116470588 в выражении temp=((0.0116470588*res_sr)-0.5)/0.01 в исходном коде программы, после чего перекомпилировать программу и перепрошить контроллер снова, произведя повторную калибровку. После завершения калибровки устройство готово к использованию.


В подборке фото ниже показан внешний вид макета термодатчика при проведении испытаний.

На видео ниже показана работа термодатчика при проведении практических испытаний.

На этом на сегодня всё, с уважением, Андрей Савченко.

P.S. Исходный код прошивки на языке С++ находится в прикреплённом файле 1.zip. Написание программы осуществлялось в среде Code Vision AVR с использованием встроенных библиотек. Скомпилированная прошивка также находится в прикреплённом архиве.

P.P.S. Не пинайте сильно за код, т.к. до этого программировал последний раз курсе эдак на втором, лет 6 тому назад… Пока делал макет данного варианта термодатчика созрели некоторые модификации в плане как железной составляющей так и программной части, поэтому со временем появится скорее всего второй вариант данного термодатчика. В общем и целом данный эксперимент я считаю для себя полезным.

Список использованной литературы

1. Параметры термодатчика TMP36GT9Z

2. Параметры микроконтроллера Atmega8A

3. Скользящая средняя

4. Описание TL431

5. Описание и применение TL431

6. Параметры LM317