В гостях у Самоделкина! » Электроника » Arduino » Термостат для вентилятора

Термостат для вентилятора



Вентиляторы, применяемые для охлаждения электроники, бывают двух видов. Одни - миниатюрные, их направляют непосредственно на охлаждаемые компоненты, другие - крупнее, они прогоняют воздух через всё пространство корпуса. Лучше всего, когда оба вида вентиляторов применяются совместно. Нередко вентиляторы второго вида постоянно "молотят" на полную мощность, даже если в этом нет необходимости. От этого быстрее изнашивается подшипник, а пользователю мешает слишком сильный шум. Простейший контактный термостат может включать и выключать вентилятор, ресурс подшипника при этом расходуется лишь при работе двигателя, но резко появляющийся и исчезающий шум может раздражать ещё больше. Более сложный термостат - например, предложенный автором Instructables под ником AntoBesline - регулирует частоту вращения двигателя вентилятора ШИМом и поддерживает её необходимой и достаточной для достижения заданной температуры. Прогонять воздух через пространство корпуса целесообразно снизу вверх, а располагать датчик температуры - сверху. Можно также установить фильтры, предотвращающие попадание в корпус пыли, но они снизят производительность.

Датчик температуры и влажности типа DHT11 подходит как раз для термостата, управляющего вентилятором второго вида, так как измеряет он температуру именно воздуха, а не какой-либо поверхности. Его поддержку обеспечивают две библиотеки, выложенные здесь и здесь. Если необходимо оборудовать термостатом вентилятор первого вида, придётся применить другой датчик, измеряющий температуру поверхности охлаждаемого компонента. Программу тогда придётся переделать, а библиотеки потребуются другие, ведь у датчика может отличаться как интерфейс, так и структура передаваемых им данных.

При помощи следующей иллюстрации мастер показывает, что такое ШИМ, большинству читателей это и так известно. За счёт того, что выходной транзистор всегда либо полностью закрыт, либо полностью открыт, на нём всегда выделяется очень малая мощность. Как известно, мощность равна произведению тока на напряжение, а тут при закрытом транзисторе очень мал ток, а при открытом - мало падение напряжения на нём. Один из двух множителей всегда оказывается малым, а значит, и их произведение - тоже. Практически вся мощность в ШИМ-регуляторе достаётся нагрузке, а не транзистору.

Термостат для вентилятора


Мастер составляет схему термостата:



Arduino здесь питается от 5-вольтового источника, вентилятор - от 12-вольтового. Если применить 5-вольтовый вентилятор, можно обойтись одним источником с достаточной нагрузочной способностью, запитав Arduino через простейший LC-фильтр. Диод, подключённый параллельно вентилятору в обратном направлении, нужен, если двигатель - коллекторный (как в некоторых современных USB-вентиляторах). При применении компьютерного вентилятора с датчиком Холла и электронным управлением обмотками этот диод необязателен.

Текст составленной мастером программы довольно короткий, он приведён ниже:

#include "DHT.h"
#define dht_apin A1 
#include

LiquidCrystal lcd(7,6,5,4,3,2);
DHT dht(dht_apin, DHT11);
int fan = 11;       
int led = 8;        
int temp;
int tempMin = 30;    
int tempMax = 60;   
int fanSpeed;
int fanLCD;
void setup() 
{
   pinMode(fan, OUTPUT);
   pinMode(led, OUTPUT);
   lcd.begin(16, 2);
   dht.begin();
   lcd.print("Room Temp Based");
   lcd.setCursor(0, 1);
   lcd.print("Fan speed Ctrl ");
   delay(3000);
   lcd.clear();
}
void loop() 
{
    float temperat;
    temperat=dht.readTemperature();
    temp = temperat;    // store the temperature value in temp variable
   Serial.print( temp );
   if(temp < tempMin)     // if temp is lower than minimum temp
   {   
       fanSpeed = 0;      // fan is not spinning
       analogWrite(fan, fanSpeed); 
       fanLCD=0;
       digitalWrite(fan, LOW);       
   } 
   if((temp >= tempMin) && (temp <= tempMax)) // if temperature is higher than minimum temp
   {  
       fanSpeed = temp;//map(temp, tempMin, tempMax, 0, 100); // the actual speed of fan//map(temp, tempMin, tempMax, 32, 255);
       fanSpeed=1.5*fanSpeed;
       fanLCD = map(temp, tempMin, tempMax, 0, 100);  // speed of fan to display on LCD100
       analogWrite(fan, fanSpeed);  // spin the fan at the fanSpeed speed
   } 
      if(temp > tempMax) // if temp is higher than tempMax
     {        
     digitalWrite(led, HIGH);  // turn on led 
     } 
   else               // else turn of led
     {                    
     digitalWrite(led, LOW); 
     }
      lcd.print("TEMP: ");
   lcd.print(temp);      // display the temperature
   lcd.print("C ");
   lcd.setCursor(0,1);   // move cursor to next line
   lcd.print("FANS: ");
   lcd.print(fanLCD);    // display the fan speed
   lcd.print("%");
   delay(200);
   lcd.clear(); 
 }


Также скетч можно скачать в виде файла здесь. Расширение unknown придётся сменить на ino.

На следующих фото показана сборка прототипа устройства на пакетной плате типа breadboard:









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







Осталось собрать схему пайкой и сделать термостат частью той самоделки, которую он будет охлаждать.

Источник
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Клиент для openweathermap.org на основе Wemos d1 mini

Шестикнопочный пульт управления приложением Microsoft Soundscape

8
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
8
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
6
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 7.33 из 10 (голосов: 1 / История оценок)

Добавить комментарий

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
10 комментариев
  1. Korolev
    Очередная микроскопом-гвозде-забивалка! nea
    1. Иван_Похмельев
      Я бы не был столь категоричен: устройство кроме самого регулирования, ещё и отображает температуру, что может быть полезным. А вот название неправильное, никакой это не термостат, а макет термозависимого регулятора оборотов вентилятора.
  2. 2Dem
    Например за KY-028 не слышали? Это бред, использовать UNO для такой бесполезной поделки. Экран вообще не нужен в такой реализации. Вся эта фигня похожа на первую и самое важное неудачную поделку школьника, так как все, что можно было сделать неправильно, именно так и сделано.
    1. Иван_Похмельев
      Почему бесполезной? Конечно, это не изделие, а макет, в схеме есть ошибки, но идея имеет право на существование. И о каком экране Вы говорите?
  3. Иван_Похмельев
    Цитата: R555
    Придурок даже не правильно пишет название КУ208.
    Зато он правильно пишет название датчика температуры KY-028. При чём здесь вообще КУ208?
    1. 2Dem
      Цитата: Иван_Похмельев
      Цитата: R555
      Придурок даже не правильно пишет название КУ208.
      Зато он правильно пишет название датчика температуры KY-028. При чём здесь вообще КУ208?

      Во-первых, спасибо что процитировали сообщение, мне было очень смешно увидеть, что "всезнайка" не знает таких элементарных вещей. Во-вторых, KY-028 я привел как пример, стоит добавить силовой ключ и мы получаем более эффективный термостат. Причем эффективный во всех смыслах. Если не ошибаюсь тут тоже нет гистерезиса по минимальной температуре. А именно это в первую очередь следовало сделать, иначе использовать Ардуино нет вообще никакого резона. Неэффективное использование материалов, говоря грубо у меня на китайском Nano с 16к памяти завязано управление вентиляцией в котельной на основе температуры и влажности, защита от протечек по всему дому (6 датчиков), "умная" циркуляция ГВС, промывка мембраны осмоса, ну и отображение всей этой информации на дисплее 1602. А использовать Uno для запуска вентилятора рационально только если это урок для начинающих, но данная "самоделка" как урок вообще никакая, есть гораздо более хорошие уроки. Тогда в чем ее смысл?
      1. R555
        2Dem не оскорбляй, тех (а ты знаешь, что я ПРОФИ, в электронике, просто не хочешь этого признать).
        Я принял решение обнулить все дизлайки по твоим каментам на мои самоделки. У меня сегодня удачный день и праздник.
        Я начинаю обнулять твои дизлайки... А ты сможешь отозвать свои оскорбления?
        Кто не ошибается, тот не делает ничего.
      2. tormozedison Автор
        Гистерезис нужен при резком включении-выключении нагрузки. При плавной регулировке ШИМом, как здесь, он ни к чему.

        Про КУ208 знаю с конца восьмидесятых. Про KY-028 узнал от вас, спасибо за наводку.

        Дисплей к данному термостату подключать не обязательно. Вместо UNO взять дешёвый клон с теми же возможностями. И будет экономически оправдано.
        1. 2Dem
          Цитата: tormozedison
          Гистерезис нужен при резком включении-выключении нагрузки. При плавной регулировке ШИМом, как здесь, он ни к чему.

          Не соглашусь, гистерезис нужен именно на логику включения/выключения. Например вентилятор, пусть даже на самых малых оборотах включается при >30 градусов, а при <30 отключается. Но если представить, что температура находится в районе 30 градусов, вентилятор включается на малых оборотах, после чего температура сразу падает до 29, вентилятор останавливается. Короче говоря получается "дрочилово" вкл/выкл-ючением вентилятора. Как раз от этого спасает гистерезис, например включение сделать когда температура >30, а отключение когда <25. Если такое не делать, то никакого смысла в Ардуино вообще нет, так как есть KY-028 и аналоги, которые позволяют как использовать плавное нарастание оборотов, так и просто вкл/выкл, и лишь отсутствие гистерезиса не делают эти модули идеальными.
        2. tormozedison Автор
          Ну, на нижнем пределе диапазона гистерезис реализовать можно. Доработав слегка программу. А во всём остальном диапазоне, где вентилятор всё равно вращается, только скорость меняется, можно и без гистерезиса.

Привет, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

Добавьте самоделку

Добавьте тему

Онлайн чат

Опрос
А Вы уже рассказали на сайте о своей самоделке?

Последние комментарии

Все комментарии
Новые самоделки на почту

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.