Самодельный измеритель температуры компьютера

Предметом размышления была возможность измерения трех температур (ЦП, ГП и воздуха в корпусе), выводимых на дисплей в отсеке от HDD 3,5 дюйма. Результат будет по задумке представлен на трех 7-сегментных LED дисплеях. Дополнительным элементом должен был стать USB-порт, который позволит переместить внутренний USB-разъем, присутствующий на плате расширения PCI, в более рациональное место, то есть на переднюю часть корпуса и, конечно же, также использовать это напряжение для питания термометра.

У проекта было два подхода к делу:



  • 1) все они были размещены на одной печатной плате, соответствующей отсеку, и каким-то образом закреплены в отсеке в корпусе компьютера.

+ экономия времени при выполнении (только одна плата)
– нет необходимости использовать дополнительные розетки / штекера для подключения нескольких плат
– необходимость вертикального монтажа гнезда USB
– необходимость тщательного проектирования печатной платы и всех радиоэлементов.

  • 2) Дисплеи размещены на первой плате, а остальные детали на второй, соединены с помощью штыревого разъема под 90 градусов. Вторая плата будет крепиться к отсеку снизу.

+ USB-разъем можно установить горизонтально на второй плате
+ больше места на второй плате для размещения компонентов
– необходимость сделать 2 печатные платы.

В итоге выбрал первый метод.



Схема термометра для процессора, видеокарты и БП ПК

AVR Atmega 8 в миниатюрном корпусе TQFP32 идеально подходит для такого типа проектов, в качестве датчиков температуры были выбраны DS18B20, работающие по шине 1-W3ire.

Самодельный измеритель температуры компьютера

Для управления анодами дисплея использовал транзисторы PNP BC857 (IcMAX = 100 мА, IcPeak = 200 мА) в корпусе SOT23 (каждый сегмент дисплея имеет фиксированный ток при Iseg = 20 мА: Rcathode = (VCC – VGreenLed) / Iseg = (5V – 1,8V) ) / 20 мА = 160R = ~ 150R (т.е. Iseg = ~ 21 мА).

Таким образом, в сумме со всеми включенными сегментами это дает 7 х 21 = 147 мА. Однако каждый дисплей включен только на 1/6 своего времени, поэтому средний ток составляет 147 мА / 6 = 25 мА.

Транзисторы должны работать как ключи, поэтому в соответствии с диапазоном усиления (100…800), выбирая наихудшее усиление и запас прочности x3:

Полезное на сайте:
Лабораторный блок питания двухполярный

Ib = 3 х Ic / 100 = 3 х 147 мА / 100 = 4,4 мА
Rb = (Vcc – Vbe ) / Ib = (5V – 0.7V) / 4,4 мА = 970R = 1k

Одной из дилемм был способ подключения термометров к компьютеру.

  • 1) каждый может быть подключен к отдельной линии передачи данных.

– больше используемых контактов
– термометры можно подключать к любым разъемам, потому что разъем 1 всегда будет связан с дисплеем 1, а 2 с дисплеем 2 и т. д.

  • 2) все они могут быть подключены к общей линии передачи данных.

+ сохранение пина
– необходимость связать уникальный серийный номер с данным датчиком (то есть числа, вшитые в код микропроцессора или какой-либо другой метод настройки).

Выбор пал на метод 1. Решил проблему с USB-разъемом, просто согнув его контакты по вертикали и припаяв все это тоже к металлической части корпуса, таким образом обеспечивая их постоянную защиту.

К сожалению, с самого начала все пошло не так, как должно:

После изготовления платы программатор вообще не обнаружил микроконтроллер. Оказалось, что виновником была линия MOSI, которую также использовал для управления сегментом D. Во время программирования все линии ввода / вывода микроконтроллера находятся в состоянии высокого сопротивления, что означает транзисторы управления анодом могут переключаться сами.

В результате такой транзистор высвобождает напряжение питания на линии MOSI / CD, и, несмотря на последовательно включенный резистор 160R, программатор не может управлять этой линией. Конечно, все специальные линии (MOSI, MISO, SCK) могут использоваться во время работы микроконтроллера любым способом, как и любой из его выводов. Но следует помнить, что к этим линиям не подключается никакой вывод от другой внешней схемы, потому что тогда при попытке программирования микроконтроллер не сможет управлять этими линиями.

Полезное на сайте:
200W автомобильный усилитель BTL на 4 канала

Самодельный измеритель температуры компьютера

Решением было заменить вывод, управляющий линией CD, на другой (отсюда и красный кабель, видимый на плате).

Самодельный измеритель температуры компьютера

Снова не получилось общаться с термометрами (несмотря на то, что была собственная написанная и протестированная библиотека). Оказалось, что забыл про внешние резисторы, подтягивающие эту линию к питанию (4,7 кОм), а встроенные в Atmega резисторы (30-50 кОм) оказались слишком большими. Пришлось добавить резисторы SMD на плату.

Самодельный измеритель температуры компьютера

Термометр в среднем гнезде не заработал – причиной было короткое замыкание на землю по этой линии, возникшее во время пайки.

Самодельный измеритель температуры компьютера

Дисплей мигал. Для поддержки протокола 1-Wire требуется соблюдение временных зависимостей во время передачи, а это означает, что прерывания должны быть отключены в это время, что может продлить выполнение критического кода, нарушая передачу. Однако отключение прерываний, которые, в свою очередь, выполняют сегменты кода 7 обработки дисплея, вызывает их заметное мигание. Здесь решение заключалось в отключении прерывания не на все время обработки показаний температуры, а только в критических ситуациях (на время передачи / чтения каждого отдельного бита в протоколе 1-Wire).

Крепление термометра к корпусу ПК

Самодельный измеритель температуры компьютера

Самодельный измеритель температуры компьютера

Здесь использовались отрезанные соответствующим образом куски текстолита, которые припаял к передней пластине, создав форму, которая идеально вписывалась в отсек. Просверленные отверстия под винты М3 с припаянными гайками позволят прикрутить все это к корпусу без проблем. Переднюю панель сделать сам – это должна быть просто пластиковая заглушка с прорезями для дисплеев и разъем USB.