Привет! Это устройство применимо не только в компьютерном БП, но мы будем про компьютерный, как насущный :)



Техпроцесс производства процессоров неуклонно уменьшается, вместе с ним уменьшается и энергопотребление. Процессоры последних поколений содержат в себе пригодную для повседневных задач графическую видео систему. Если вы не сильно требовательны к производительности в видео играх то за относительно скромный бюджет можно задуматься о тихом компьютере который будет издавать звуки только под большой нагрузкой, что случается не часто.

Далее идёт моё видение конфигурации компа для полупассивного охлаждения.

Средний CPU в пике своей загрузки выделяет 65 Вт тепла, охладить его можно заводским кулером с большей (нежели штатный) мощностью 120-150 Вт выставив настройки в BIOS чтобы он начинал крутиться только при загрузке 30-40% CPU либо температурой выше 40°С.

Ещё один источник шума это HDD, но тут всё просто, я заменил его на SSD.

Остался вентилятор блока питания который крутится постоянно. Можно купить полностью пассивный либо полу пассивный изначально, но тут цена вопроса: (от $150) возможно, есть смысл направить эти средства на бОльшую производительность?

Обычный, 500 Вт блок питания ($50) имеет огромный запас по мощности в моём случае, поэтому я решил отключить вентилятор полностью. Но при длительной работе под большой нагрузкой радиаторы внутри стали разогреваться свыше 60°С, так что решено было вернуть вентилятор но сделать его обороты контролируемыми.

Разные блоки питания имеют различные конструктивные особенности, возможно в каких-то случаях постоянный обдув необходим. Поэтому прежде чем вносить изменения в конструкцию вашего БП осознайте, что понимаете процесс, у вас достаточно «ровные руки» и что внесённые изменения не окажут негативного воздействия на работу вашего БП и сопутствующего оборудования. Часто бывает так, что БП прокачивает воздух всего системного блока. Любые модификации могут привести к повреждению вашего компьютера!




За основу был взят Arduino nano на базе ATMEGA168PA, из разных кусков чужих проектов составлен свой.



Поскольку ресурсы контроллера позволяют, решено было сделать трёхцветный светодиодный индикатор по типу smart LED с различным миганием и цветом в зависимости от температуры.



Температуру измеряет датчик DS18B20, в зависимости от температуры увеличиваются либо уменьшаются обороты вентилятора. При достижении >67°С включается звуковой извещатель. Транзистор — любой NPN с током > тока вашего вентилятора. Также я пробовал управлять трёхпроводным вентилятором, всё получилось, но никак не мог заставить его полностью остановиться.

Изначально использовал дефолтную частоту ШИМ (448,28 Гц) но на низких оборотах кулер издавал едва заметный звон, что никак не вяжется с концепцией бесшумного охлаждения. Поэтому программно частота ШИМ поднята до 25 кГц. На самых низких оборотах вентилятор не может сразу стартануть, поэтому первые две секунды на него подаётся импульс с максимальными оборотами, дальше обороты согласно программе.

Вот видео демонстрирующее работу устройства.



А вот собственно, скетч, прошу сильно не пинать это мой первый скетч для Ардуины :)

Нажмите для просмотра кода
// 2 - DS18x20 data
// 3 - green LED (a 330 Ohm resistor is necessary)
// 5 - orange LED (a 330 Ohm resistor is necessary)
// 6 - red LED (a 330 Ohm resistor is necessary)
// 9 - PWM Fan
// 8 - Buzzer

#include <OneWire.h>

byte temp; // temperature of sensor
byte greenLED = 3;
byte orangeLED = 5;
byte redLED = 6;
byte FanSpeed = 0;
int piezoPin = 8;
// Массив режимов работы светодиода
byte modes[] = {
   0B00000001, //Светодиод выключен
   0B00000101, //Горит постоянно
   0B00010101, //Мигание по 0.5 сек
   0B01010101, //Короткая вспышка раз в секунду
   0B10101010, //Две короткие вспышки раз в секунду
   0B00010101, //Три короткие вспышки раз в секунду
   0B01010101  //Частые короткие вспышки (4 раза в секунду)
};

uint32_t ms, ms1 = 0, ms2 = 0, ms3 = 0, ms4 = 0, ms5 = 0;
uint8_t  blink_loop = 0;
uint8_t  blink_mode = 0;
uint8_t  modes_count = 0; 
bool FirstRun = 0;

OneWire  ds(2);  // on pin 10 (a 4.7K resistor is necessary)

void analogWrite25k(int pin, int value)
{
    switch (pin) {
        case 9:
            OCR1A = value;
            break;
        case 10:
            OCR1B = value;
            break;
        default:
            // no other pin will work
        break;
    }
}

void setup(void) {

pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(orangeLED, OUTPUT);
pinMode(9, OUTPUT);

modes_count = 1;
blink_mode = modes[modes_count];

    TCCR1A = 0;           // undo the configuration done by...
    TCCR1B = 0;           // ...the Arduino core library
    TCNT1  = 0;           // reset timer
    TCCR1A = _BV(COM1A1)  // non-inverted PWM on ch. A
           | _BV(COM1B1)  // same on ch; B
           | _BV(WGM11);  // mode 10: ph. correct PWM, TOP = ICR1
    TCCR1B = _BV(WGM13)   // ditto
           | _BV(CS10);   // prescaler = 1
    ICR1   = 200;         // TOP = 320
  
 // Serial.begin(9600);
 

}

void loop() {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius;

 if ( ( ms - ms3 ) > 1000 || ms < ms3 ){
       ms3 = ms;
  
     if ( !ds.search(addr)) {
      //   Serial.println("No more addresses.");
      //   Serial.println();
         ds.reset_search();
         if ( ( ms - ms4 ) > 250 || ms < ms4 ){
         ms4 = ms;
         //delay(250);
    return;
      }
     }
  
     //  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    //   Serial.write(' ');
     //  Serial.print(addr[i], HEX);
       }

  if (OneWire::crc8(addr, 7) != addr[7]) {
    // Serial.println("CRC is not valid!");
      return;
  }
       
      // Serial.println();
 
  // the first ROM byte indicates which chip
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
 
 }
  
  //delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

  if ( ( ms - ms2 ) > 900 || ms < ms2 ){
       ms2 = ms;
       
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();

  }


  // Convert the data to actual temperature
  // because the result is a 16 bit signed integer, it should
  // be stored to an "int16_t" type, which is always 16 bits
  // even when compiled on a 32 bit processor.
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  
  temp = celsius;

 // Serial.println("TEMPERATURE IS:");
 // Serial.println(temp);
 }
     
    ms = millis();
// Событие срабатывающее каждые 125 мс   
   if( ( ms - ms1 ) > 125|| ms < ms1 ){
       ms1 = ms;
       
// Режим светодиода ищем по битовой маске       

  if ( temp <= 50 ) {
       digitalWrite(orangeLED, LOW);
       digitalWrite(redLED, LOW);
       if(  blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(greenLED, HIGH); 
       else  digitalWrite(greenLED, LOW);
       blink_loop++;    

       

                 if ( temp <= 40 ) {
                 blink_mode = modes[0];
                 analogWrite25k ( 9, 0);
                 FirstRun = 0;
                }
                 if ( temp >= 41 && temp <= 45 ) {
                 blink_mode = modes[1];

// Make a push impulse for starting fan (1 sec)
                 
                 if ( FirstRun == 0 ) {
                     ms5 = ms;
                     FirstRun = 1; 
                 }

                 if (FirstRun == 1 && (2000 > (ms - ms5))) { 
                    analogWrite25k ( 9, 33); // Fan start impulse
                 }
                 if (FirstRun == 1 && (2000 < (ms - ms5))) {
                 analogWrite25k ( 9, 28); // first speed
                 }
              }
                 if ( temp >= 46 && temp <= 50 && FirstRun == 1) {
                 blink_mode = modes[2];
                 analogWrite25k ( 9, 29);
                 }
      }

  
  if ( temp >= 51 && temp <= 61 ) {
       digitalWrite(greenLED, LOW);
       digitalWrite(redLED, LOW);
       if(  blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(orangeLED, HIGH); 
       else  digitalWrite(orangeLED, LOW);
       blink_loop++;    
    

                if ( temp >= 51 && temp <= 54 ) {
                 blink_mode = modes[0];
                 analogWrite25k ( 9, 30);
                }
                 else if ( temp >= 55 && temp <= 58 ) {
                 blink_mode = modes[1];
                 analogWrite25k ( 9, 31);
                }
                 else if ( temp >= 59 && temp <= 61) {
                 blink_mode = modes[2];
                 analogWrite25k ( 9, 32);
                }
      }
   
     if ( temp >= 62 && temp <= 120 ) {
       digitalWrite(greenLED, LOW);
       digitalWrite(orangeLED, LOW);
       if(  blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(redLED, HIGH); 
       else  digitalWrite(redLED, LOW);
       blink_loop++;    
    

                if ( temp >= 62 && temp <= 66 ) {
                 blink_mode = modes[0];
                 analogWrite25k ( 9, 33);
                }
                if ( temp >= 67 && temp <= 70 ) {
                 blink_mode = modes[1];
                 analogWrite25k ( 9, 34);
                }
                if ( temp >= 71 && temp <= 120) {
                 blink_mode = modes[2];
                 analogWrite25k ( 9, 50);
                 tone(piezoPin, 2500, 30);
                }
      }
   
   }  
 
}


Комментарии (98)


  1. Neuromantix
    25.08.2018 19:50
    +2

    Есть 2 проблемы — первая в том, что в комп. Бп радиаторы и ключи/диоды на них часто не самая горячая деталь, а вторая — можно купить корсар с полупассивом, который специально для этого разработан.


    1. VioletGiraffe
      25.08.2018 20:13
      +2

      Corsair RMi/RMx шикарны. Забыл, что такое шум БП, и почти забыл, что такое шум компьютера.


    1. s22 Автор
      25.08.2018 21:06

      Возможно, в разных моделях разные конструкции, и это нужно учитывать. Конкретно в моём БП греются только детали установленные на радиаторы. Можно купить всё что угодно :)


      1. N0Good
        25.08.2018 23:21
        +2

        Не верю! (с) Дроссели и трансы измерьте по температуре. А вообще ардумна в качестве тупого термореле — это оверкилл…


        1. s22 Автор
          27.08.2018 00:05

          Ни дроссели ни трансформаторы ни диодные мосты ни конденсаторы и другие детали в моем БП даже при пиковой нагрузке не греются сколько нибудь заметно чтобы задумываться об их охлаждении. Это было проверено опытным путём. Возможно благодаря большому запасу мощности. Но даже если какие то детали начнут греться то это произойдет уже после того как нагреются ключи на радиаторах которые к этому моменту уже будут охлаждаться вентилятором. Логично?


          Я думаю хабр это не место где троллят. Поясните по подробнее каким должно быть не "тупое термореле"?, а не это с индикацией (свет, звук) температуры и регулировкой оборотов вентилятора?


          1. N0Good
            27.08.2018 00:48

            Ни в коем разе не троллю, но для полной уверенности предлагаю, если есть возможность, посмотреть тепловизором, или, хотя бы, произвести замеры термопарой тестера.
            А то что вы соорудили на ардуине — продаётся на али готовым модулем за чуть более ста рублей. Если хотите ссылку дам. Можно бы, хотя бы, прикрутить что-то, что будет хоть как то использовать её возможности. Например, на вскидку, пара идей: связь с ПК через usb-uart (и управление/считывание показаний), мониторинг потребления по шинам (датчики тока к ардуине) и т.п. Кстати, дабы эта конструкция не спалила блок по перегреву из-за зависаний я бы, всё же, на вашем месте, поковырялся с watchdog'ом. Что комментарий мой совсем не оригинален под подобными статьями в курсе, потому и не пишу про свои реализации подобных вещей — на мой взгляд — ну слишком банально и просто. Что касается конкретно вашего устройства — я защищал, в своё время, диплом с абсолютно аналогичным девайсом на PIC для обучения студентов. Вот, как-то и не удержался — даже на PIC было реализовано больше возможностей.


            1. sim31r
              27.08.2018 02:51

              Как-раз Ардуину можно использовать как Watchdog для ПК, зависает ОС, перезагружает комп, если разрешил пользователь. Иногда это важно.
              Выключение ПК при перегреве блока питания, остановке вентилятора.
              Пробуждение ПК по удаленному запросу, но тут нужен будет сетевой шилд и приложение типа Blynk или MQTT.


              1. Soul_in_Gun
                27.08.2018 18:54

                Последнее (пробуждение) давно уже изобретено в виде WoL — зачем городить более сложные сущности в виде Arduino? Я даже юзкейса придумать не могу — в любом из выигрывает всё тот же WoL


            1. Taciturn
              27.08.2018 07:36

              А нет готовых модулей, решающих проблему запуска при низком напряжении?


            1. s22 Автор
              27.08.2018 13:28

              А то что вы соорудили на ардуине — продаётся на али готовым модулем за чуть более ста рублей. Если хотите ссылку дам.


              Не ста, а двухсот. Я рассматривал этот вариант, меня не устроило 1) отсутствие либо недостаточность индикации температуры; 2) отсутствие стартового импульса, который в случае ПЛК легко реализуется программно, т.к. вентилятор не всегда хочет заводиться на минимальных оборотах. Ну и опять же, о чём мы говорим — купить можно всё что угодно, хоть БП с пассивным охлаждением. Да велосипед, ну и пусть. Найдется тот кому, эта информация будет полезна.

              Можно бы, хотя бы, прикрутить что-то, что будет хоть как то использовать её возможности. Например, на вскидку, пара идей: связь с ПК через usb-uart (и управление/считывание показаний), мониторинг потребления по шинам (датчики тока к ардуине) и т.п. Кстати, дабы эта конструкция не спалила блок по перегреву из-за зависаний я бы, всё же, на вашем месте, поковырялся с watchdog'ом.


              Ну, у каждого свои задачи. На текущий момент напряжение не плохо показывает HWiNFO, остальное на мой взгляд — излишество, повторюсь, БП с большим запасом.


        1. GeMir
          27.08.2018 00:19

          ардумна в качестве […] — это оверкилл
          Комментарий, рано или поздно появляющийся в любой статье, описывающий использование Arduino для чего бы то ни было. Комментатор, при этом, как правило прав, но не учитывает того, что Arduino — это то, что есть (у многих) «под рукой».


          1. N0Good
            27.08.2018 00:54

            Да, не спорю, ардуина просто прекрасна тем, что она под рукой. Но, на мой взгляд, если уж используется достаточно производительный, в своём классе, МК — можно его, ну, хотя бы, каким-нибудь образом нагрузить. А для подобных решений есть уже готовые устройства, которые будут работать не хуже, а главное — стабильней. В результате подобное выглядит, простите, как «посмотрите — я собрал велосипед». Повторюсь — извиняйте, если кого задел.


    1. mistergrim
      26.08.2018 10:47

      Проблема №2 рискует действительно стать проблемой, если посмотреть на стоимость этого корсара.
      Вообще, на мой взгляд, цены на БП с полупассивным охлаждением искусственно взвинчены. Ведь конструктивно они ну ничем от обычных не отличаются.


      1. Neuromantix
        26.08.2018 12:28

        Схемотехнически они довольно сильно отличаются от БП с низкой ценой. От своей ценовой категории — да, мало.


        1. mistergrim
          26.08.2018 12:30

          Полупассивные не отличаются практически вообще. Пассивные — да, отличаются.


          1. Neuromantix
            26.08.2018 12:54

            Хотя бы наличием дц/дц в низковольтных цепях, которых у дешевых БП нет, схемами стабилизации, КПД в конце концов. Ну и после того, как один бп за 3тыр забрал с собой материнку, память и кое-чего по мелочи, до меня дошло, что на БП экономить очень глупо.


  1. siryoshka
    25.08.2018 20:05

    Можно просто на коленке собрать реобас, намного проще и эффективнее


    1. rub_ak
      25.08.2018 21:56
      +1

      Или поставить обычный резистор.

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


      1. s22 Автор
        25.08.2018 22:12

        Я понимаю о чём вы, продолжительность службы электролитических конденсаторов (особенно дешёвых) имеет обратную зависимость от высокой температуры (указано на корпусе конденсаторов). Но конденсаторы не греются. Греется то что на радиаторах (в случае моего БП). Никаких резких перепадов нет — для этого и контроллер :) Вот я сейчас сижу в полнейшей тишине, вентилятор работает но я его не слышу потому что он на минимальных оборотах и судя по индикатору температура 41-46°С.


        1. mistergrim
          26.08.2018 10:48
          +1

          > Но конденсаторы не греются.

          А вы их температуру измеряли? Греются они, да ещё как.


          1. bugdesigner
            26.08.2018 12:11

            Всё правильно. Греются дроссели и трансформаторы, греются диоды и конденсаторы. Если БП расчитан под активное охлаждение, значит нужно обдувать. Если хочется тишины — нужно покупать соответсвующий БП с пассивным охлаждением или управляемым вениилятором. После того, как сгорит пару "доработанных" блоков питания, цена "дорогого БП с пассивным охлаждением" окажется не такой уж высокой.


        1. katzen
          26.08.2018 19:32

          Но конденсаторы не греются.

          Ой-ёй. Прикупите термодатчиков побольше, присоидените их в блоке питания к различным компонентам — через хорошую изоляцию, конечно же — и пологируйте-ка температуру в БП в процессе реальной работы. Вас ждёт много нового, уверяю вас.


          1. s22 Автор
            26.08.2018 20:12

            Что то мне подсказывает, что нормальный конденсатор в нормальной схеме не должен нагреваться. Если конденсатор сам по себе греется проблема либо в конденсаторе либо в схеме. И обдув воздухом ему не поможет. Как же тогда живут конденсаторы в блоках питания любой другой электроники где нет обдува? Например ноутбучный БП на 90 Вт размером с кирпич?


            1. katzen
              27.08.2018 02:24

              нормальный конденсатор в нормальной схеме не должен нагреваться

              Конденсатор — пассивный неидеальный компонент, и он греется, увы. От этого никуда не деться.

              Например ноутбучный БП на 90 Вт размером с кирпич?

              Он греется. А охлаждается за счёт пассивой теплоотдачи.


            1. nafikovr
              27.08.2018 16:19

              ну да, и так просто, от лишней щедрости в БП ставят конденсаторы с повышенной рабочей температурой.
              плюс не забывайте что весь теплообмен БП с активным охлаждением расчитан на то, что горячий воздух из него будут забирать, и он не будет отдавать температуру тому что изначально «не грелось».
              ЗЫЖ изучите что такое тепловое сопротивление и чем определяется температура элементов


              1. s22 Автор
                27.08.2018 16:37

                Вы ещё докторскую посоветуйте мне защитить :) Вентилятор БП кроме собственного охлаждения призван ещё и воздух из всего корпуса вытягивать (в большинстве случаев), так что можно предположить, что производительность его уже изначально с некоторым запасом. И в случае отсутствия необходимости продувать корпус, можно и активное охлаждение поубавить, нет?


                1. sumanai
                  27.08.2018 21:30

                  в большинстве случаев

                  Кажется, мода на корпуса с верхним расположением БП уже прошла. Сейчас чаще всего БП варится в собственном соку, забирая воздух со дна и выплёвывая сзади.


                1. nafikovr
                  27.08.2018 22:48

                  я советую то, что нужно понимать


                1. katzen
                  28.08.2018 11:50
                  -1

                  Вы ещё докторскую посоветуйте мне защитить :)

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


                  1. s22 Автор
                    28.08.2018 12:12

                    знанием, которой вы очевидно не обладаете


                    Вы меня тоже извините, раз не по теме, но откуда такая уверенность?


                    1. katzen
                      28.08.2018 13:05

                      Мне очевидно, исходя из диалогов, которые вы ведёте тут, которые я оцениваю, исходя из своего опыта и квалификации.


  1. denis-19
    25.08.2018 20:13

    А если проклеить доп. радиаторы в схему БП и сделать перфорацию корпуса более тщательно — можно без кулера обойтись?


    1. lv333
      25.08.2018 20:21
      +1

      Сомневаюсь, хотя все наверное будет зависеть от железа, ноутбучные БП как то обходятся без кулера.


      1. leR12
        25.08.2018 21:39

        К примеру я разобрал ноутбучный блок питания и пересадил его в сетчатый корпус, заодно добавил маленький кулер для общего обдува. Теперь я доволен!


        1. ClearAirTurbulence
          26.08.2018 10:36

          А можно не извращаться и купить пассивный БП


      1. sim31r
        27.08.2018 02:58

        У нас пробовали ставить ноутбучные БП для питания камер видеонаблюдения, дольше двух месяцев непрерывной работы ни один не выдержал. Вероятно рассчитаны на кратковременный «тяжелый» режим работы, при котором элементы деградируют, но так чтобы хватило на срок службы ноутбука.
        Компьютерные же БП работают нормально более 10 лет круглосуточно, совсем другой режим работы и запас прочности.


        1. katzen
          27.08.2018 15:46

          Я думаю, срок жизни зависит от качества сборки. И от производителя, конечно же. Наблюдаю шесть как бы ноутбучных БП, то есть без активного охлаждения, в пластиковом корпусе: один штатный от ноута — так уж случилось, что работает уже лет семь в старт-стопном режиме на своём же ноуте без батареи, то есть исполняет роль обычного БП, ноут используется как замена десктопу; остальные пять включены постоянно больше пяти лет, БП для маломощных десктопов. Все в работе, ни один не перегорел.


      1. user343
        27.08.2018 04:02

        Ноутбучные блоки (а также LED драйверы, транспортная электроника) часто заливаются теплопроводным компаундом не только для влагостойкости, но чтобы весь их внешний корпус работал радиатором. Ремонтопригодность теряется.
        А описанное в статье управление много лет устанавливается в фирменных ATX БП (с наклейкой silent) на LM393 и нескольких транзисторах, без перегрузки вентилятора частотой 25 кГц. Его внутренний кондёр-электролит такое издевательство долго не выдержит ПМСМ.


        1. s22 Автор
          27.08.2018 13:36

          Его внутренний кондёр-электролит такое издевательство долго не выдержит ПМСМ.


          Вы правы, электролитические конденсаторы совсем не любят высокую частоту, от этого у них уменьшается внутреннее сопротивление и они могут начать греться и выйти из строя. В этих случаях их шунтируют неполярными конденсаторами малой ёмкости 0,1...1 мкф. А теперь еще раз посмотрите пожалуйста на схему выше и скажите для чего там RC-цепочка, резистор и конденсатор на 1 мкф между базой и эмиттером транзистора? :)


          1. walti
            27.08.2018 16:06

            Хорошо вам в 80-х — джинсы-варенки, конденсаторы Ереванского разлива типа к50-6.

            Современные электролиты предпочитают высокую частоту, о чем красноречиво свидетельствует таблица максимальный ток/частота в каждом даташите.
            Допустимый ток на 120Гц обычно меньше раза в 3 от 100кГц.

            Никто никаким шунтированием незанимается, оно имеет смысл при соотношении хотябы 1 к 10, но уж никак не 100 или 1000.
            У электролита, особенно твердотельного, ESR и импеданс даже на гармониках будут меньше, чем у 0,1мкФ

            Берите просто продукцию, собранную на Эпкосе, Панасонике и прочих Санио.


    1. s22 Автор
      25.08.2018 22:43

      Всё зависит от нагрузки БП. Опять же буду судить со своей колокольни: у меня потребление в пиковой загрузке CPU + Motherboard + RAM + SSD таково, что только за 30 минут стресс теста CPU самая горячая деталь в БП (без кулера вообще) — радиатор температурой 60°С. БП 500 Вт. Когда вся эта адовая нагрузка спадает он сам собой остывает до нормальных 45-47°С.


      1. Temtaime
        26.08.2018 13:15

        60 мало для диодов/транзисторов. Они до 100 спокойно живут. Можно было бы оставить и без вентилятора.


        1. katzen
          26.08.2018 19:41

          Живут-то спокойно, только меньше. Срок службы при повышенной температуре сокращается. Учитывайте также, что измеряемая температура корпуса совсем не равна температуре кристалла.


        1. sim31r
          27.08.2018 04:54

          Кроме транзисторов есть конденсаторы, они не любят перегрев.


    1. saege5b
      26.08.2018 14:28

      Впервую очередь нужно заиметь привычку чистить БП раз в год.
      Потом контролировать состояние термопасты и изолирующей пёнки на радиаторах. Тут правда сложно, иногда подлезть невозмоно.
      В идеале анодировать радиаторы (алюминий) или заменить на оксидированную медь. Оксид нужен что бы избавиться от изолирующей плёнки.
      Заменить штатные вертушки по возможности большего диаметра, производительней и тише.
      Выбирать БП так, что бы пик максимального КПД приходился на штатную нагрузку.
      Не знаю как на современных, но у меня БП 8 летней давности имеет термодатчик и возможность притянуть радиаторы к корпусу (ь.е. на радиаторах и корпуске дырки с резьбой)
      По совокупности (чистка, другие вертушки, притянутые радиаторы кмкорпусу через термопасту) БП в биосе вентилятор не запускает в принципе, а в ОС вентилятор крутится на минимальных оборотах и источником шума не является (HDD шумит сильней чем БП — - Seagate.)
      Неплохо обеспечить улучшенный тепловой контак с корпусом системнего корпуса (через термопасту), снять наклейки с БП, покрасить в чёрный.
      Перфорацию я на некоторых БП вообще закрывал, меняя потоки воздуха, но это с заменой радиаторов и вентиляторов.


      1. walti
        26.08.2018 17:25

        Потом контролировать состояние термопасты

        ее там нет, потому что придумали
        и изолирующей пёнки на радиаторах.

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

        При коммутации ключей, на их стоках/коллекторах выбросы достигают тысячи вольт.
        И никто и никогда не будет выравнивать радиаторы и корпуса транзисторов, для того, что бы острые углы не продавили оксид.
        Но первый же залетевший при монтаже кусок пыли приведет к фейерверку.


  1. ArbeitMachtFrei
    25.08.2018 21:01
    +1

    А когда датчик, припаянный на соплях, наконец отвалится, что с БП случится?


    1. s22 Автор
      25.08.2018 21:03
      +2

      В такой ситуации я обычно поступаю по принципу: не уверен в своих силах — не делай!


    1. electronus
      25.08.2018 22:02
      +1

      Будет характерный запах.


      1. katzen
        26.08.2018 19:48

        … после характерного звука.


    1. sim31r
      26.08.2018 22:12

      У нас в офисе был компьютер на глазок 2003 года выпуска, на нем периодически утилиту по настройке АТС запускали. Так там вентиляторы забились пылью и последние лет 5 вообще не работали. Радиаторы нагревались ну пусть до ~80 градусов, ничего катастрофического, снижение ресурса и всё. Там маленькие вентиляторы 80 мм в блоке питания, естественной циркуляции вообще нет, тем более слой пыли, и еще меньше на процессоре, тоже слой пыли. И в таком режиме работал годами. Потом блок питания отказался включаться, заменили БП, дел на 15 минут, минимальная профилактика и работает дальше.
      У автора же естественное охлаждение нормально справляется и нет слоя пыли, большие радиаторы, огромный запас по мощности. Если контроллер отключит вентиляторы, ну нагреются они до 60-70 градусов (силовые транзисторы до 130 градусов могут работать), снизится ресурс со 100 000 часов до 70 000 часов, вообще ничего страшного, побочные эффекты заметны будут только статистическими исследованиями.


  1. dimitry78
    25.08.2018 21:49
    +1

    Респект автору за труд!
    Есть пара мыслей — если городить схему на мк, то может придумать вывод хоть на колодку термопары (которые на материнках ) чтобы мониторить t' из OS?
    А для чисто пассивной регулировки думается проще хардварный вариант: (рисунки в комент не ставятся :(( ) терморезистор, открывающий транзистор — калибруем скажем на 60' при нагреве радиатора — транзистор отпирается, вентилятор крутится. Если радиаторов >> 1го можно поставить компаратор токов с резисторов на ОУ


    1. Googlist
      26.08.2018 00:49

      Хардвар без шима не будет нормально работать по ряду причин.


      1. avost
        26.08.2018 10:56
        +1

        Хорошо, что я этого не знал, когда 15 лет назад сгородил такую невозможную схемку и которая пережила с тех пор несколько блоков питания. Пойду отключу. А то она, как оказалось, не может работать. По ряду причин.


        1. holomen
          26.08.2018 13:17

          Вам не сказали что она не будет работать в принципе. Вам сказали что она не будет нормально работать. А ненормальность работы заключается в том, что транзистор работает в лдинейном режиме, а следовательно, лишнее напряжение рассеивает в виде тепла.


          1. katzen
            26.08.2018 20:02

            Критерий нормальности можно узнать? Если 12-вольтовый вентилятор кушает 100 мА при полной нагрузке и 50-60 при половинной — для транзистора в линейном режиме, который его питает, рассеять меньше ватта совсем ненормально, что ли, будет?


          1. avost
            27.08.2018 11:02

            А чем линейный режим ненормальный? Я вас, возможно, удивлю, но это более, чем нормальный штатный режим работы большинства транзисторов, кроме, наверное, специализированных ключевых, изначально оптимизированных для работы в ключевом режиме. Ну, и, собственно, в авторской схеме транзистор тоже работает отнюдь не в ключевом режиме, а в обычном ("ненормальном" по-вашему) линейном. Интегрирующая rc-цепочка в цепи базы не для красоты же.


            1. Googlist
              27.08.2018 18:16

              Он нормальньій, но не в данном случае. Плюс КПД весьма печально. Плюс падение напряжения на переходе транзистора не позволит вьійти венитилятору на 100% оборотов. Можно, конечно, ездить и на деревянньіх колесах, єто как-то едет, но в нашу єпоху єто глупо.


      1. Neuromantix
        27.08.2018 12:48

        Прекрасно все работает в линейном режиме. У меня лет 30 работал собранный еще в начальной школе терморегулятор, где транзистор открывался обратным током сборки германиевых диодов Д9. При этом вся схема была из этих диодов и транзистора.


  1. dimitry78
    25.08.2018 22:50

    если очень хочется посмотреть в ОСи температуру БП — приклеить термопару на радиатор бп и подключить к материнке.
    Жэсть вариант — биметаллическая пластина, приклееная к радиатору, в оси разгибания пересекающая ротор вентилятора: если радиатор разогревается, пластина меняет свою геометрию и разблокирует пропеллер. дешево, сердито. минус — статор все время под напряжением. (зато туда можно кремни от зажигалки приклеить — будет и свистелка, и перделка) и тоже греется

    -ээээ как-бэ в норм бп уже стоят контроллеры регулирующие обороты — ну скажем «бронза+», некоторые даже по сети спамят (ну это серверные)


  1. UNIm95
    25.08.2018 22:59
    -3

    Эм?
    Автор, а почему ты не хочешь использовать продукцию компании Seasonic с платиновым или титановым сертификатом?
    У них есть так же полностью пассивные блоки на 400 Ватт.


    1. Grief
      26.08.2018 02:03

      Есть и на 600 Вт


  1. holomen
    26.08.2018 01:49

    Эти пищалки потребляют до 80ма и вешать напрямую на ногу (даже через резистор как показано на схеме) несколько эээ… опрометчиво. Плюс, эта пищалка — электромагнитная. А значит и диод лучше поставить.


  1. delvin-fil
    26.08.2018 05:03
    +1

    Код можно было и в спойлер спрятать.


  1. mikelavr
    26.08.2018 08:54

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


  1. gshamshurin
    26.08.2018 09:39

    Проект — как самоделка — классный. Читал с интересом, оценил нажатием стрелочек.
    Но вот оставлять такую конструкцию дома включенной 24/7 я бы поостерёгся и вот почему: вы в деталях не знаете, как работает БП. При каком-то из сочетаний условий (например пониженное/повышенное входное напряжение в условиях пониженной/повышенной нагрузки по линии 5/12В) может оказаться, что при нормальной температуре в области датчика, температура какого-нибудь другого компонента может критично повлиять на работу всего изделия, с непредсказуемыми последствиями.
    И даже разработчики могут этого не знать — в предельном случае они могут даже вообще не проводить тестирования с отключенным вентилятором.

    Для небольших нагрузок я решил проблему дешёвого пассивного БП следующим образом:



    Это промышленный БП MeanWell NES-100-12 (100 Вт, 12 вольт), к нему преобразователь PicoPSU Relean на 250Вт с Алиэкспресса. Здесь все компоненты изначально спроектированы под пассивное охлаждение. Если MeanWell'у я доверяю безоговорочно, то китайцам из Relean — не очень. Поэтому я взял десятикратный запас по мощности — эта сборка питает вспомогательный ПК: материнку на J1900 + SSD + HDD, в сумме около 25Вт в пике. Корпус для этой сборки я начертил сам — он встаёт в штатное место обычного ATXблока, подключается стандартным сетевым кабелем и прикручивается на винты М4. Если это хоть кому-то интересно, могу написать мини-статью и выложить исходники.

    А для своей будущей сборки полностью пассивного основного ПК всё-таки выбрал и купил полупассивный БП Corsair RM550, пассивный процессорный кулер NOFAN CR-95C, пассивное охлаждение видеокарты Arctic Cooling Accelero S3. Сижу на старой пассивной сборке, к которой добавил дискретную видяху, жду выхода 10-нм процессоров от Интел.


    1. katzen
      26.08.2018 20:16

      Поступил похожим образом, только использовал ноутбучный БП и CarPC стабилизатор, у которого на входе 16-19, а на выходе — ATX-питание.

      … Если MeanWell'у я доверяю безоговорочно, ...

      MeanWell — те же китайцы.


      1. seri0shka
        26.08.2018 20:54

        CarPC стабилизатор

        Можно посмотреть?


        1. katzen
          27.08.2018 02:32

          image
          Что-то похожее, но не точно такое. «ITX CarPC Power Supply» по поиску. Поиск вываливает и PicoPSU блоки: они меньше размером, меньше греются и, в общем-то, дешевле и, соответственно, более надёжны, но я брал с прицелом под низковольтный UPS, потому и CarPC.


      1. gshamshurin
        26.08.2018 20:59
        +1

        MeanWell — они брендовые китайцы с многолетней историей. Много раз применял их продукцию в серийных изделиях, нареканий нет. Relean — относительно новые. А к молодым китайским фирмам доверия у меня мало.


        1. katzen
          27.08.2018 02:35

          Знаете, как они делают свой PicoPSU? На фабрике, которая изготавливает по подряду те самые PicoPSU, только надписи на печатных платах свои наносят, чтобы не спалиться на правах и не попасть под суд.


    1. seri0shka
      26.08.2018 20:49
      +1

      Да, интересно. Вполне подходит для статьи.


    1. avelor
      26.08.2018 22:11

      Ещё году в 2009 делал питалово вспомогательного компа (хранилки) чисто ра picopsu, брал в комплекте с бп а-ля ноутбучный. Тянул атом 330 (потом 510) и 4 винта без какиз-либо проблем, проработал пару лет, потом был продан (так как оказалось что я основной комп не выключаю).


    1. sim31r
      26.08.2018 22:16

      У меня такой же блок питания для 3D принтера, а на всякий случай прикрутил к нему вентилятор 80мм. Там где был теплый под нагрузкой, стал холодным. Обратная технология, от безвентиляторной к вентиляторной ))


  1. walti
    26.08.2018 10:55
    +2

    Запаиваем вентилятор БП на +5В.
    А не, неподходит — ардуины нету.


  1. dimaviolinist
    26.08.2018 12:21

    Мне вспомнилась одна история, вот не могу найти её, к сожалению.
    За точность не ручаюсь, помню примерно так:
    Один энтузиаст был недоволен своей мультиваркой (температуру завышала) и расковырял её до перепрошивания микроконтроллера, с вознёй на пару недель. Один из комментов был:
    Тоже встретил подобную проблему. Решил, подложив полотенце :)


    1. Dvlbug
      26.08.2018 14:12

      1. dimaviolinist
        26.08.2018 16:00

        Спасибо.


  1. arruin
    26.08.2018 12:52

    Не нашёл в коде обработки условия на случай помершего DS18B20. А они временами мрут, переставая отвечать, и чем выше температура тем чаще. При этом стандартный алгоритм пересчёта при 0 на входе возвращает 25°С, если мне память не изменяет.


    1. s22 Автор
      26.08.2018 13:32

      Согласен, я думал об этом, действительно не помешал бы контроль работоспособности датчика. Со временем допилю код…


      1. propell-ant
        26.08.2018 17:24

        Когда соберетесь, посмотрите на код повнимательнее, он у вас температуру вынимает из датчика с точностью до 0.0625 градуса. И, соответственно, использует float. Для мониторинга блока питания достаточно было бы отбрасывать дробную часть:
        вместо

        celsius = (float)raw / 16.0;
        temp = celsius;
        написать просто
        temp = raw / 16.0;

        Хотя, ладно, чепуха какая, кто будет на это смотреть в ардуино-проекте.


        1. sim31r
          26.08.2018 22:19

          Может в будущем будет ПИД регулятор, ему дробная часть как-раз нужна для точной стабилизации температуры…


  1. Exchan-ge
    26.08.2018 13:55

    а относительно скромный бюджет можно задуматься о тихом компьютере

    Остался вентилятор блока питания который крутится постоянно


    В большой части бюджетных компьютеров отсутствуют корпусные вентиляторы.
    Единственный вентилятор, обеспечивающий циркуляцию воздуха в корпусе — вентилятор в блоке питания.
    Так что либо бюджетный, либо бесшумный.


  1. ABy
    26.08.2018 15:42

    Arctic Cooling Arctic F12 TC со встроенным датчиком температуры не спасет гиганта мысли? Правда датчик откалиброван так, что вентилятор запускается когда температура превышает 30С и выходти на максимальные обороты при температуре выше 40С. Но можно поколдовать с расположением датчика.


  1. igordata
    26.08.2018 20:07

    Чего вы злые такие?

    И кстати да, в большинстве корпусов и правда вентилятор блока питания является единственным вентилятором, который выдувает тёплый воздух наружу.


    1. sim31r
      26.08.2018 22:33

      50-100Вт большой корпус из металла вполне может рассеять теплопередачей. Становится теплым и всё. Но тут конечно в каждом случае надо проверять, маленький корпус может перегреться. Но маленькие корпуса и не очень подходят для создания бесшумной системы.


      1. Exchan-ge
        27.08.2018 05:13

        50-100Вт большой корпус из металла вполне может рассеять теплопередачей


        Насколько большой должен быть корпус?
        В Logicpower S621, даже с работающем в штатном БП вентилятором + штатным корпусным вентилятором (Core 2 Duo E6600 (TDP=65 Wt) +SSD и 8Гб ОЗУ (больше ничего нет)) — система перегревается на раз (в помещении с работающим кондиционером)
        Спасает только доп вентилятор на боковой стенке.

        Но маленькие корпуса и не очень подходят для создания бесшумной системы


        Celeron Quad-Core J1900 в Prologix I01/I500 Black не перегревается (стоит рядом с вышеописанным, по производительности — быстрее )
        Наверное, не в размерах корпуса дело.


  1. sim31r
    26.08.2018 22:31

    На заметку всем кто будет снижать шум. Вентиляторы есть очень разные, производительные шумные, шумные настолько что в одном помещении находится невозможно, обычные бытовые и silenent всевозможные, они обладают малыми оборотами и их практически не слышно, но и производительность у них маленькая. Возможно вместо микроконтроллероного управления достаточно было бы такого тихого вентилятора.
    Я тоже экспериментировал с вентиляторами и заметил что без вентилятора блок питания греется. Для себя сделал вывод, что нужен небольшой поток воздуха, пусть вентилятор крутится на 1% от номинальных оборотов, но в корпусе блока питания появляется циркуляция воздуха, что замечательно снимает излишки тепла. Пусть вентилятор делает хоть 1 оборот в секунду, этого достаточно чтобы придать застойному воздуху движение.
    Такие низкие обороты не слышно, но вентиляторы работают не стабильно, если подключать через резистор 200 Ом, вентилятор может не стартовать при включении, только если толкнуть крыльчатку пальцем. Можно сделать пусковую цепочку, конденсатор 500 микрофарад или больше параллельно резистору, при включении компьютера вентилятор получит стартовый толчок и далее по инерции будет поддерживать вращение небольшим током. Но опять же это не идеальный вариант, чуть подсохнет смазка вентилятора (или загустеет по холоду) и толчка может не хватить для запуска. Можно на микроконтроллере собрать регулятор для поддержки минимальных оборотов, получая обратную связь с датчика оборотов вентилятора.


    1. propell-ant
      26.08.2018 23:47

      Я всё ждал, когда кто-нибудь напишет про проблему со стартом вентилятора.
      Микроконтроллер — достаточно умная штука, чтобы решать обе задачи, и управление оборотами вентилятора и обеспечение достаточного напряжения при старте. Например тут:

      схемка
      image


      1. sim31r
        27.08.2018 02:43

        Что-то мне кажется схем избыточно сложная. Для управления сложной печью нормально, чтобы сложные термопрофили формировать, а для вентилятора БП можно намного проще. Один транзистор, какой-нибудь IRLML и больше ничего. Обратной связи по температуре вполне достаточно. Тут же еще 2 обратные связи, по напряжению и оборотам? По напряжению вообще из области курьезов, так как определенному уровню ШИМ соответствует определенное напряжение, пропорциональное скважности импульсов, и соответственно определенные обороты вентилятора. Это обоснованно в некоторых случаях, когда нужна реакция вентилятора мгновенная, но тут явно избыточно.


  1. safari2012
    27.08.2018 14:59
    -1

    У меня довольно старый БП. Обороты его штатного вентилятора при малой нагрузке (просмотр фильмов, браузер и т.п.) не превышают 300. Это даже тише жесткого диска. Хотя, я сам по себе и ардуинщик и фанат тихого HTPC, мне кажется, автор не туда приложил усилия.


  1. DreaMinder
    27.08.2018 16:03

    Как все сложно. Я просто разобрал БП, вставил ШИМ-совместимый вентилятор и подключил его на разветвитель от корпусного, т.е. управление с материнки. Все работает хорошо и бесшумно когда без нагрузки. Не вижу проблем и причин так не делать.


    1. nafikovr
      27.08.2018 16:31

      а откуда материнке знать температуру в БП?


      1. DreaMinder
        27.08.2018 18:13

        ниоткуда. Но в моем случае тепловыделение БП без нагрузки низкое. А под нагрузкой включается корпусный вентилятор. Конечно, тут нужно тонко настроить карты оборотов вентиляторов, но это во всяком случае лучше ардуины в ПК.


  1. s22 Автор
    27.08.2018 16:06

    Именно так я и сделал первоначально, но потом обнаружил, что вентилятор может не заводиться часами, а потребители не зависящие от CPU продолжают греть БП. Поэтому и родилась идея сделать контроль и управление на МК.