Два микроконтроллерных регулятора для кулера

Микроконтроллерный регулятор для вентилятора

Данное устройство позволяет снизить шум от вентиляторов системы охлаждения, выключая их, либо убавляя их мощность, когда в охлаждении нет необходимости. Также контроллер подает звуковой сигнал если температура охлаждаемого объекта превысит заданное критическое значение. Схемы отличаются допустимой мощностью подключаемых вентиляторов, и, соответственно, мощностью используемых элементов.

Первая схема предназначена для управления обычным 12-вольтовым компьютерным вентилятором и выполнена полностью на SMD-элементах:

Контроллер вентилятора на attiny13 - вариант 1

Измерителем температуры служит микросхема STLM20W87F - аналоговый датчик температуры. Величина напряжения на ее выходе пропорциональна температуре (напряжение почти линейно уменьшается с ростом температуры), поступает на вход АЦП микроконтроллера. Напряжение на вентиляторе регулируется ШИМ-ом, сам вентилятор подключен через ключ на полевом транзисторе. "Пищалка" служит для подачи прерывистого сигнала тревоги в случае выхода температуры за допустимый предел, а так же для подачи кратковременного сигнала при включении устройства (свидетельствующего о том, что контроллер исправен и подключен).

Вторая схема отличается только использованием более мощного полевого транзистора и стабилизатора напряжения, а так же, микроконтроллера в DIP корпусе:

Контроллер вентилятора на attiny13 - вариант 2

Эта схема может управлять более мощными вентиляторами с напряжением питания до 30 Вольт.

Алгоритм работы следующий:

  • при включении устройство подает один или несколько кратковременных звуковых сигналов, свидетельствующих об его исправности
  • далее производится непрерывное измерение температуры, и если она первысила первое пороговое значеие (40 градусов), вентилятор включается на половину своей мощности
  • если температура превысит второе пороговое значение (45 градусов), вентилятор включится на полную мощность
  • затем, по мере остывания термодатчика вентилятор переключится на половинную мощность при достижения промежуточного порога (42 градуса)
  • при дальнейшем остывании вентилятор полностью отключится только когда температура упадет ниже первого порогового значения и будет оставаться такой на протяжении 50 тысяч измерений
  • если температура превысит критический порог (75 градусов), устройство подаст звуковой сигнал
  • сторожевой таймер микроконтроллера защищает устройство от зависания

Для обоих схем используется одна прошивка. Проект написан и скомпилирован в 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

Первая схема собирается на одной плате, вторая содержит две платы - датчик температуры вынесен отдельно. Печатные плата собранных схем:

Фото контроллера вентилятора на attiny13 - вариант 1
Фото контроллера вентилятора на attiny13 - вариант 2

Ниже по ссылкам можно скачать схемы и рисунки печатных плат, рисунки плат для ЛУТа, исходники и прошивку. Также прилагается питоновский скрипт для вычисления таблицы перевода напряжения и показаний АЦП в температуру.

А вот пример применения второй схемы для снижения шума блока питания Dazheng POS-305D.


Файлы:

Download Схемы и платы Eagle + SVG файлы для ЛУТа

Download Прошивка и исходники

Download Скомпилированная прошивка

Download Скрипт для вычисления таблицы температуры

Рейтинг: 
0
Голосов еще нет

Комментарии

Добрый день. А фюзы какие? И как найди автора этого проекта?

 И большая прозьба автору. Можно сменив прошивку  применить цифровой датчик DS18B20? Былобы очень здорово. За ранее  Спасибо!!!

Фьюзы, если не ошибаюсь, подойдут те, что установлены по умолчанию.

В архиве с исходником есть с фьзами - fantermocontroller.fuses. Для его визуального просмотра требуется Eclipse с плагином Avr Eclipse.

Под датчик DS18B20, возможно, портирую в будуще, но в ближайших планах такого нет

Будем ждать с нетерпением.Smile

А как работать со скриптом для  вычисления таблицы температуры?

Скрипт написан на питоне. Надо установить python, и запустить с командной строки 

python print_t_table.py

распечатает таблицу перевода температуры в напряжение датчика

Это таблица которая имеется в исходнике?

Да, она самая.

Скрипт может пригодиться при использовании другого аналогового термодатчика с иной функцией напряжения от температуры

       Ясно. Спасибо..

Если будет возможность переделки прошивки под цифровой датчик- Прошу вас и жду .