Данное устройство позволяет снизить шум от вентиляторов системы охлаждения, выключая их, либо убавляя их мощность, когда в охлаждении нет необходимости. Также контроллер подает звуковой сигнал если температура охлаждаемого объекта превысит заданное критическое значение. Схемы отличаются допустимой мощностью подключаемых вентиляторов, и, соответственно, мощностью используемых элементов.
Первая схема предназначена для управления обычным 12-вольтовым компьютерным вентилятором и выполнена полностью на SMD-элементах:
Измерителем температуры служит микросхема STLM20W87F - аналоговый датчик температуры. Величина напряжения на ее выходе пропорциональна температуре (напряжение почти линейно уменьшается с ростом температуры), поступает на вход АЦП микроконтроллера. Напряжение на вентиляторе регулируется ШИМ-ом, сам вентилятор подключен через ключ на полевом транзисторе. "Пищалка" служит для подачи прерывистого сигнала тревоги в случае выхода температуры за допустимый предел, а так же для подачи кратковременного сигнала при включении устройства (свидетельствующего о том, что контроллер исправен и подключен).
Вторая схема отличается только использованием более мощного полевого транзистора и стабилизатора напряжения, а так же, микроконтроллера в DIP корпусе:
Эта схема может управлять более мощными вентиляторами с напряжением питания до 30 Вольт.
Алгоритм работы следующий:
Для обоих схем используется одна прошивка. Проект написан и скомпилирован в Eclipse + AVR plugin. В начале исходного файла содержится таблица для пересчета величины, измеренной АЦП в величину температуры в градусах Цельсия. Далее объявлены макросы конфигурации.
#define FIRST_THRESHOLD_ADC 289 // 40 grad #define SECOND_THRESHOLD_ADC 277 // 45 grad #define BACK_SECOND_THRESHOLD 284 // 42 grad #define BEEPER_TRESHOLD 210 // 75 grad #define FIRST_THRESHOLD_PWM 180 #define SECOND_THRESHOLD_PWM 255 #define START_BEEP_NUMBER 1 #define START_BEEP_DURATION 20 #define WARNING_BEEP_PERIOD 500 #define BEEPER_AC 0
Тут макросы FIRST_THRESHOLD_ADC и SECOND_THRESHOLD_ADC задают, соответственно, первый и второй предел
температуры (т.е., 40 и 45 градусов). Если надо установить другие температуры, то значения для них берется из таблицы.
Макрос BACK_SECOND_THRESHOLD задает температуру, при охлаждении ниже которой будет выполнено обратное переключение - с полной
мощности на половинную.
Макрос BEEPER_TRESHOLD задает критическую температуру, при достижении которой включится пищалка.
Макросы FIRST_THRESHOLD_PWM и SECOND_THRESHOLD_PWM задают величину напряжения ШИМ-а для обоих порогов.
0 - вентилятор полностью выключен, 255 - полностью включен.
Макрос START_BEEP_NUMBER определяет, сколько раз надо
пропищать при запуске устройства, а макрос START_BEEP_DURATION указывает продолжительность каждого "бипа" и промежуток
между ними в миллисекундах.
Макрос WARNING_BEEP_PERIOD задает период следования звуковых сигналов тревоги в миллисекундах.
Если используется биппер постоянного напряжения, то значение BEEPER_AC выставляется в 0. Если на биппер надо подавать переменное
напряжение, то следует заменить на 1.
Для записи прошивки я использовал программатор USBASP и программу avrdude, программирование в этом случае выполдняется следующей командой:
avrdude -c usbasp -pt13 -u -Uflash:w:Release/fantermocontroller.hex:a
Первая схема собирается на одной плате, вторая содержит две платы - датчик температуры вынесен отдельно. Печатные плата собранных схем:
Ниже по ссылкам можно скачать схемы и рисунки печатных плат, рисунки плат для ЛУТа, исходники и прошивку. Также прилагается питоновский скрипт для вычисления таблицы перевода напряжения и показаний АЦП в температуру.
А вот пример применения второй схемы для снижения шума блока питания Dazheng POS-305D.
Файлы:
Комментарии
N360
сб, 04/02/2016 - 07:07
Постоянная ссылка (Permalink)
микроконтроллер регулятора для кулера
Добрый день. А фюзы какие? И как найди автора этого проекта?
N360
сб, 04/02/2016 - 07:14
Постоянная ссылка (Permalink)
микроконтроллер регулятора для кулера
И большая прозьба автору. Можно сменив прошивку применить цифровой датчик DS18B20? Былобы очень здорово. За ранее Спасибо!!!
trol
вс, 04/03/2016 - 10:45
Постоянная ссылка (Permalink)
Фьюзы, если не ошибаюсь,
Фьюзы, если не ошибаюсь, подойдут те, что установлены по умолчанию.
В архиве с исходником есть с фьзами - fantermocontroller.fuses. Для его визуального просмотра требуется Eclipse с плагином Avr Eclipse.
Под датчик DS18B20, возможно, портирую в будуще, но в ближайших планах такого нет
N360
вс, 04/03/2016 - 14:42
Постоянная ссылка (Permalink)
DS18B20
Будем ждать с нетерпением.
N360
вс, 04/03/2016 - 14:51
Постоянная ссылка (Permalink)
Скрипт для вычисления таблицы температуры
А как работать со скриптом для вычисления таблицы температуры?
trol
пн, 04/04/2016 - 08:43
Постоянная ссылка (Permalink)
Скрипт написан на питоне.
Скрипт написан на питоне. Надо установить python, и запустить с командной строки
python print_t_table.py
распечатает таблицу перевода температуры в напряжение датчика
N360
пн, 04/04/2016 - 15:20
Постоянная ссылка (Permalink)
Скрипт
Это таблица которая имеется в исходнике?
trol
пн, 04/04/2016 - 15:29
Постоянная ссылка (Permalink)
Да, она самая.
Да, она самая.
Скрипт может пригодиться при использовании другого аналогового термодатчика с иной функцией напряжения от температуры
N360
пн, 04/04/2016 - 15:57
Постоянная ссылка (Permalink)
микроконтроллер регулятора для кулера
Ясно. Спасибо..
Если будет возможность переделки прошивки под цифровой датчик- Прошу вас и жду .