Принцип измерения температуры.
В мк хранится значение напряжения (U_const) для температуры (T_const) например 25 гр.. Мк сравнивает измеренное напряжение c напряжением для 25 гр. и вычисляет текущую температуру.
T=(Uizmerennoe-U_const )/U na_1_gradus+T_const.
В программе выбирается: значение переменной T_const и напряжение для нее U_const, количество милливольт на градус цельсия Una_1_gradus с шагом 2,5mv, есть автоматический режим присвоения.
Датчик температуры. Аналоговая схема в Micro-cap8. TEMPIR_OU.CIR (17 Kb)
Датчик - диод D1. С увеличением температуры на 1 градус, напряжение падает на нем примерно на 2 милливольта.
Далее оно инвертируется и усиливается в 10 раз.
Такое усиление выбрано только из-за удобства номиналов резисторов обратной связи R4 R3.
Из скриншота видно, что для нужного диапазона температур
10-85 градусов падение напряжения с каждым градусом, изменяется линейно, примерно на 20 милливольт.
Это значение, Una_1_gradus, подбирается в программе с шагом 2,5mv, в данном случае
оно равняется 8 ( 8 x 2.5mv=20mv ).
Коэффициент усиления ОУ можно выбрать 12,5 ( 10 x 2.5mv=25mv ). Тогда
на один градус будет 10 шагов ADC.
Эту схему я проверял
с помощью термометра на датчике DS18B20. расхождение где-то 1-2 градуса.
Диоды можно использовать любые, но только что бы все 4 были одной марки, и с наиболее одинаковым падением напряжения.
В программе есть настройки для каждого диода, одинаковые падения напряжения желательны для того,
что бы датчики имели примерно равные верхний и нижний диапазоны измерения температуры.
Напряжение на выходе ОУ для комнатной температуры (24гр) я устанавливал примерно 1 вольт.
В схеме устройства это напряжение устанавливается для всех датчиков резистором R6.
ЖКИ – модуль на основе контроллера HT1611.
Несколько замечаний по схеме.
кулерами можно управлять одним транзистором (лучше полевым, для биполярного vt базовый резистор 1к), а не составными транзисторами .
Но в этом случае надо быть уверенным, что используется стабильное питание,
которое не будет довать просадок при управлении транзисторами, иначе
просадки будут влиять на младший разряд АЦП.
Да и с составными транзисторами схема потребляет намного меньше тока.
Включение процессорного кулерра выполнено так, как показанно на схеме, что бы не нарушалось прохождение
сигнала с датчика хола на материнскую плату.
![]() | кулеры БП и видеокарты подключены по этой схеме. При таком включении кулер работает в пол силы, при превышении верхнего порога включается в полную силу. Способом подключения указанным на схеме устройства у меня подключен боковой и корпусной кулер. |
---|
В схеме 5 кулеров. К первому датчику привязаны 2 кулера, процессорный (в выключенном режиме работает через R=41om) и боковой (расположен на боковой стенке, его воздушный поток охлаждает CPU, частично память и видеокарту, был сделан до установки этой платы в комп). Остальные 3 датчика это: видеокарта, БП и температура внутри корпуса.
**********************************************
Описание программы.
В программе микроконтроллера формула немного отличается:
T=(Uizmerennoe-U_const )*10/Una_1_gradus+T_const*10.
В этой формуле температура 16 битное число с знаком - signed int. Младший десятичный разряд содержит остаток от деления, температура представлена как бы числом с одним знаком после запятой.
Управляются кулеры с помощью 2 параметров:
Устройство управляется 3 кнопками.
Для сохранения параметров в EEPROM, все параметры нужно подтверждать нажатием SET. Например, для сохранения порогов температур, нужно подтвердить 2 параметра, если Вы измените нижний порог, а верхний не подтвердите нажатием SET, запись в EEPROM не произойдет.
Установка порогов температуры. | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
Этот параметр выбирает режим, который будет выводится на LCD. | |||||||||||||||
|
||||||||||||||||
![]() |
установка нижнего и верхнего порога температуры для процессорного кулера. На 1 датчик привязано 2 кулера P и 1. | |||||||||||||||
![]() |
установка нижнего и верхнего порога температуры для 2 датчика. Далее для 3, 4 датчика. | |||||||||||||||
Управление кулерами. | ||||||||||||||||
![]() |
- - кулер управляется программой, 0 - всегда выключен, 1 - всегда включен. | |||||||||||||||
![]() |
Раскрутка кулеров. При включении, установленные в 1 кулеры будут включены в течение 30 секунд. |
|||||||||||||||
Настройка датчиков | ||||||||||||||||
Датчики проще всего настроить так, расположить их так, чтобы их температура была одинакова, ввести эту температуру, в следующем режиме нажать PLUS, для всех датчиков будет сохранено измеренное напряжение на датчиках(диодах) соответствующие данной температуре. | ||||||||||||||||
![]() |
Температура (T_const). | |||||||||||||||
![]() |
Если нажать PLUS произойдет автоматическое присвоение U_const=Uизмеренное. Для всех датчиков. | |||||||||||||||
![]() |
Второе число: напряжение в милливольтах на градус цельсия. Получается из произведения 1 числа на 2,5mV. | |||||||||||||||
![]() |
На экране: Номер датчика; U_const; U измеренное. Для температуры T_const: U_const нужно установить равным Uизмеренное. (Число - 400 это измеренное напряжение равное 400 x 2.5mv = 1 вольт. 2.5mv - шаг измерения ацп). |
Программа написана на WinAvr. Схема нарисована в программе Splan 5, монтажная плата в Sprint-Layout 4.
При прошивке мк установите биты CKSEL3..0 в 0011 (внутренний RC генератор 4 Meg ).
Запрограммировать бит BODEN.
Посмотреть для PonyProg.