Мониторинг температуры ПК на AVR микроконтроллере

Иногда нужно знать точную температуру того или иного узла ПК, но встроенные средства это не всегда позволяют. Для данных целей и предназначено это устройство.

Потребность в такого рода устройстве возникла у меня, когда я купил старенький ПК, и решил приспособить его под FTP сервер. Но мне попался компьютер с чипсетом VIA и процессором AMD. По отдельности эти понятия работают очень даже неплохо, но вместе…. И, как вы наверное догадались, мне пришлось устанавливать еще один дополнительный кулер. Соответственно потребовалось как-то контролировать температуру всей этой «ядерной микроволновки». Всего датчиков в ПК было 3: где-то на материнской плате, в процессоре и в жестком диске(датчиков на видеокарте, БП, обоих мостах не было). Для мониторинга раннее указанных деталей и было создано это устройство.

Я встроил сей девайс в лицевую планку своего ПК, что хорошо видно на рисунке выше (к уст-ву подключен только один датчик — на БП).

Устройство «без корпуса» выглядит так:

Извиняюсь за «непрезентабельный» вид платы — не было возможности промыть в растворителе.

Теперь о используемых деталях:

Основа этого устройства — микроконтроллер производства компании Atmel ATmega8. Для отображения информации я применил жидкокристаллический дисплей с контроллером HD44780 на борту. В качестве датчиков использовались термисторы (в начале хотел применить DS18B20, но посмотрев на разницу в цене (а мне надо целых 6 штук) решил вопрос в пользу термисторов). Это основные детали устройства, все детали будут перечислены ниже.

Принципиальная схема устройства не сложна, и может быть повторена даже начинающими (но вот что касательно печатной платы, тут несколько сложнее). Дефицитных деталей схема не содержит.

Печатная плата устройства получилась относительно сложной. Сложной в каком плане — есть 4-5 мест, где детали не очень удобно паять, а так же без технологии ЛУТа сложно развести плату в ручную (особенно начинающим). Она двухсторонняя, так как на одной стороне развести такое кол-во дорожек было сложно. Текстолит можно использовать любой, главное что бы вам паять было удобно.

Топология печатной платы:

Топология печатной платы

О программе для МК

Программа (прошивка) для МК разрабатывалась в среде  microPascal. В целом работа программы проста:
— Инициализация АЦП;
— Инициализация дисплея;
— Старт бесконечного цикла, в котором и происходит измерение (и преобразование в читабельный вид) температуры.

К слову, для преобразования температуры использовалась следующая формула: 
temp:= 1 / (a + (b * temp) + (c * temp*temp*temp))
где a,b,c — константы, которые можно найти в даташите на термистор (для 10 кОм соответственно 0.001129148, 0.000234125, 0.0000000876741).

Вся начинка устройства держится на дисплее, который, в свою очередь прикреплен к передней планке ПК.

О прошивке МК

Я прошивал МК через программатор USBasp, и софт к нему Khazama AVR Programmer.

При прошивке нужно выставить следующие фузы:

После сверления, травления, сборки платы, прошивки МК и подключения датчиков все должно заработать сразу. Если что-то не работает (например не все датчики показывает) то проверьте монтаж, разводку платы, возможно где-то КЗ. Ошибки в программной части исключаются. Если у вас неточно показывает температуру,то придется подключать дополнительный подстроечный резистор, так как у термисторов возможен разброс параметров.

Удачи вам в сборке!

В архиве статьи лежат исходники, а так же проект в Proteus.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
LCD1 LCD-дисплей LCD WH1602B 1 С подсветкой
U1 МК AVR 8-бит ATmega8 1
R1-R6 Резистор 10 кОм 6 Прецизионный
R7 Резистор 10 Ом 1 SMD
RV1 Подстроечный резистор 10 кОм 1 Желательно многооборотный
RT1-RT3 Термистор 10 кОм 3 Я использовал 3-х мм
C1, C2 Конденсатор 33 пФ 2
C3 Электролитический конденсатор 1000 мкФ 1
X1 Кварцевый резонатор 8МГц 1 Низкопрофильный
PLS-40 1
PBS-20 3
Панелька 28 pin 1 Узкая