Cuprins:

Controler ventilator controlat de CPU și GPU: 6 pași (cu imagini)
Controler ventilator controlat de CPU și GPU: 6 pași (cu imagini)

Video: Controler ventilator controlat de CPU și GPU: 6 pași (cu imagini)

Video: Controler ventilator controlat de CPU și GPU: 6 pași (cu imagini)
Video: Construim un super PC de 10.000 de lei... şi vi-l oferim vouă! 2024, Noiembrie
Anonim
Controler ventilator controlat de CPU și GPU
Controler ventilator controlat de CPU și GPU

Mi-am actualizat recent placa grafică. Noul model GPU are TDP mai mare decât CPU-ul meu și un GPU vechi, așa că am vrut să instalez și ventilatoare de carcasă suplimentare. Din păcate, MOBO-ul meu are doar 3 conectori de ventilator cu control al vitezei și pot fi conectați doar la temperatura procesorului sau a chipset-ului. Am decis să remediez acest lucru, proiectându-mi propriul controler de ventilator PC care citește viteza RPM a ventilatoarelor deja instalate (atât cele conectate la MOBO și conduse de temperatura CPU, cât și cele care răcesc GPU) și are două canale de ieșire. Canalul A utilizează viteza atât a ventilatoarelor legate de temperatură, cât și a procesorului GPU pentru a conduce ventilatoare de ieșire cu 3 pini cu viteză variabilă. Canalul B detectează doar viteza ventilatoarelor GPU, iar circuitul său de ieșire folosește un tranzistor suplimentar care permite atingerea unor viteze mai mici ale ventilatoarelor acționate de acesta (funcționează bine cu placa grafică semipasivă).

Citirea vitezei altor ventilatoare în opinia mea este mai ușoară și mai ieftină decât instalarea sondelor de temperatură suplimentare chiar lângă procesoarele acoperite de radiatoare (necesită practic conectarea cablurilor tahometrelor ventilatoarelor direct la un pin al microcontrolerului).

Unele dintre metodele de control al vitezei ventilatorului sunt descrise aici. Am decis să folosesc PWM cu frecvență joasă, dar cu puține modificări la metoda descrisă în articol. În primul rând, fiecare canal are 6 diode conectate în serie, care pot fi utilizate pentru a reduce tensiunea care alimentează un ventilator cu 4-5V. În această configurație, nivelurile de tensiune PWM sunt de ~ 8V - 12V și 0V - ~ 8V (nu sunt disponibile în canalul A) în loc de 0V - 12V. Acest lucru reduce foarte mult zgomotul produs de ventilator. Un alt truc pe care l-am folosit pentru a face ventilatorul controlat în acest mod mai silențios este descris aici. Acest truc necesită instalarea unui circuit RC între ieșirea microcontrolerului și o poartă a unui MOSFET pe care l-am folosit pentru a comuta nivelul de tensiune al ventilatorului. Acest lucru reduce rata de rotire a unui semnal care controlează MOSFET, făcând la rândul său scuturarea unghiulară a ventilatorului în timpul schimbării nivelului de tensiune mai puțin proeminentă, reducând vibrațiile și vârfurile de tensiune.

Provizii

Piese și materiale:

  • ATtiny13 sau ATtiny13A într-o carcasă cu 8-PDIP
  • Soclu DIP cu 8 pini
  • 3x tranzistor IRF530
  • 12x diodă 1N4007 (orice altă diodă 1A cu cădere de tensiune de aproximativ 0,7V ar trebui să funcționeze)
  • Condensator electrolitic radial 220uF / 25V
  • Condensator electrolitic radial 10uF / 16V
  • Condensator de disc ceramic de 5x 100nF
  • Rezistor 10k 0.25W
  • 4x rezistor de 22k 0.25W
  • 2x rezistență 1k 0,25W
  • Buton comutator tactil 6x6mm
  • 2x 2 pini 2,54mm antet drept masculin
  • 4x conector ventilator tată cu 3 pini (Molex 2510), alternativ, puteți utiliza anteturi pin normale dacă doriți (am făcut-o), dar atunci trebuie să fiți foarte atenți atunci când conectați ventilatoarele, iar conectorii de sex feminin ai acestor ventilatoare vor fi atașat mai puțin sigur
  • Conector Molex cu 4 pini, carcasă mamă / pini masculi (conector de alimentare AMP MATE-N-LOK 1-480424-0), am folosit unul care făcea parte din adaptorul Molex tată la 2x SATA adaptor feminin la pachet cu niște MOBO vechi
  • 2x cabluri jumper cu conectori feminini de 2,54 mm (sau carcase ale conectorilor + pini + fire), vor fi lipiți la firele tahometrului ventilatoarelor de intrare (sau direct la conectorii lor de pe PCB-uri)
  • placă prefabricată (50mm x 70mm, min. 18 x 24 orificii), în mod alternativ, puteți să gravați singur placa de placat cu cupru și să găuriți găuri
  • câteva bucăți de sârmă
  • banda izolatoare
  • bandă de folie de aluminiu (dacă aveți de gând să atașați conectorul la placa de bază a GPU, consultați Pasul 5)
  • hârtie

Instrumente:

  • tăietor diagonal
  • cleşte
  • șurubelniță cu lamă plată
  • cuțit utilitar
  • multimetru
  • stație de lipit
  • lipit
  • Programator AVR (programator autonom precum USBasp sau puteți utiliza ArduinoISP
  • cabluri de panou și jumper care vor fi utilizate pentru a programa microcontrolerul în afara PCB-ului (sau a oricărui alt instrument care poate atinge acest obiectiv)

Pasul 1: Declinarea responsabilității

Construcția acestui dispozitiv necesită utilizarea unor instrumente moderat periculoase și poate provoca daune sau daune bunurilor. Unii dintre pașii necesari pot anula o garanție a hardware-ului dvs. sau chiar o pot deteriora atunci când sunt efectuate necorespunzător. Construiți și utilizați dispozitivul descris pe propriul risc

Pasul 2: Cum funcționează controlul ventilatorului

Cum funcționează controlul ventilatorului
Cum funcționează controlul ventilatorului

Canalul A utilizează două intrări. Fiecare dintre aceste intrări de canal A are un nivel asociat, permite apelarea acelor niveluri A0 și A1. În mod implicit, ambele nivele sunt 0. Ambele intrări au valori RPM asociate cu acestea (3 praguri pe intrare). Când se atinge primul prag, A0 sau A1 crește la 1, când al doilea crește la 2, iar al treilea prag stabilește unul dintre nivelurile de intrare la 3. Mai târziu A0 și A1 sunt combinate (pur și simplu adăugate împreună și împiedicate să obțină o valoare mai mare mai mare decât 3), realizând ieșirea principală numărul canalului A nivelului 0-3. Acest număr este utilizat pentru a controla viteza ventilatoarelor de ieșire, 0 înseamnă că sunt alimentate de 7-8V (ciclu de funcționare de 0%). Niveluri mai mari de ieșire înseamnă că ventilatorul este alimentat de la 12V complet pentru 33%, 66% sau 100% dintr-un ciclu de 100ms sau 33ms (depinde de frecvența selectată).

Canalul B are o singură intrare (B1, fizic este partajat cu Canalul A [pinul PB1]). Există șase niveluri B1 posibile (1-6), nivelul implicit este 1. Există cinci valori prag, care pot crește B1. B1 este utilizat ca ieșire principală pentru nivelul canalului B. Când este 1, 7-8V alimentează ventilatoarele de ieșire pentru 33% din timpul ciclului într-un ciclu, în celălalt pentru 66%, pentru restul timpului puterea este deconectată. Nivelul 2 înseamnă că 66% din fiecare ciclu este de 7-8V, restul de 0V. Nivelul 3 înseamnă că 7-8V este aplicat constant. Nivelurile 4-6 înseamnă că ventilatorul este alimentat de la 12V complet pentru 33%, 66% sau 100% din ciclu, pentru restul timpului tensiunea este de 7-8V.

Frecvența acestui control PWM în mod implicit este de 10Hz. Poate fi mărit la 30Hz prin închiderea pinilor J7.

Când este atins pragul mai mare, nivelurile A0, A1 și B1 cresc instantaneu. Cu toate acestea, când RPM-urile scad, nivelul este menținut timp de 200 ms și poate scădea doar cu 1 la 200 ms. Este pentru a preveni schimbările rapide ale acestor niveluri atunci când RPM-ul ventilatorului de intrare este foarte aproape de prag.

Pasul 3: lipirea componentelor electronice

Componente electronice de lipit
Componente electronice de lipit
Componente electronice de lipit
Componente electronice de lipit
Componente electronice de lipit
Componente electronice de lipit

Lipiți toate componentele electronice pe placa de bord (cu excepția Attiny13, acesta va fi introdus ulterior într-o priză). Utilizați fire de cupru (cele cu diametrul de 0,5 mm din cablul UTP ar trebui să fie perfecte) pentru a realiza conexiuni electrice între componente. Dacă aveți probleme cu împingerea firelor mari care ies din conectorul Molex (AMP MATE-N-LOK), puteți face găuri mai mari pentru acestea. Dacă nu doriți să utilizați un burghiu, puteți oricând să întoarceți un șurub de câteva ori în orificiile mici ale prefabricatului. Asigurați-vă că firele nu provoacă scurtcircuite.

Dacă preferați să vă creați propriul PCB, vă ofer și fișiere.svg (dimensiunile plăcii sunt 53.34x63.50mm) și.pdf (dimensiunea paginii A4, în arhiva.zip). O placă placată cu o singură față ar trebui să fie suficientă, deoarece există o singură conexiune pe partea din față (poate fi realizată cu un fir), astfel încât fișierele pentru partea din față sunt furnizate principal, astfel încât această conexiune să poată fi identificată.

Vă recomandăm să acoperiți partea din spate a PCB-ului cu un material izolant care va preveni orice scurtcircuit accidental. Am folosit câteva straturi de hârtie obișnuită care sunt ținute la marginile PCB-ului de câteva benzi de bandă izolatoare.

Pasul 4: Programarea microcontrolerului ATtiny

Programarea microcontrolerului ATtiny
Programarea microcontrolerului ATtiny
Programarea microcontrolerului ATtiny
Programarea microcontrolerului ATtiny

Programul care rulează pe MCU are codate cu greu mai multe praguri ale vitezei RPM a ventilatoarelor de intrare. Aceste praguri sunt situate la începutul fișierului fan_controller.c. Linia care conține primul prag, care este responsabil pentru creșterea ușoară a nivelului de ieșire al canalului A ca răspuns la ventilatorul input_0 care depășește 450 RPM, arată astfel:

#define A0_SPEED_0 3 // 450 RPM

Dacă doriți să modificați valoarea RPM prag, atunci trebuie să înlocuiți numărul 3 cu altceva. Mărirea acestui număr cu 1 va schimba pragul cu 150 RPM.

Un alt lucru pe care poate doriți să îl modificați este scăderea întârzierii nivelului de ieșire. Această întârziere previne modificările rapide ale nivelului de ieșire atunci când RPM-ul ventilatorului de intrare este foarte aproape de prag. Există 3 linii care controlează acest lucru (deoarece Canalul A folosește 2 intrări, iar Canalul B folosește 1) și primul dintre ele arată astfel:

if (channel_A0_lower_rpm_cycles> 2) {

Creșterea numărului 2 va crește această întârziere. Întârzierea este numărată în cicluri de 100 ms.

Pentru a compila codul sursă și apoi programarea cipului, veți avea nevoie de software. Pe o distribuție Linux bazată pe Debian, acesta poate fi instalat executând următoarea comandă:

sudo apt-get install avr-libc gcc-avr avrdude

Dacă utilizați Windows, puteți încerca să instalați suita WinAVR, care conține și software-ul necesar.

Pentru a compila codul sursă, trebuie să executați acest lucru:

avr-gcc -mmcu = attiny13 -Os -Wall fan_controller.c -o fan_controller.out -lm

Pentru a crea fișierul.hex, trebuie să copiați această linie în terminal:

avr-objcopy -O ihex -R.eeprom fan_controller.out fan_controller.hex

Această comandă permite să verificați câtă memorie va folosi programul (textul este Flash, datele sunt variabile care vor fi stocate în Flash și apoi copiate în RAM, iar bss sunt variabile inițializate cu o valoare de 0 în RAM):

avr-size fan_controller.out

Când fișierul dvs..hex este gata, trebuie să introduceți ATtiny13 în panoul de control și să îl conectați la programator cu cabluri jumper. Cel mai bine este să deconectați alimentarea de la programator atunci când o conectați la MCU. Păstrați biții de siguranță impliciți (H: FF, L: 6A). Dacă programatorul dvs. este USBasp, această comandă va programa memoria flash a MCU:

avrdude -c usbasp -p t13 -B 8 -U flash: w: fan_controller.hex

-B 8 schimbă viteza de transmisie între programator și MCU (bitclock). Este posibil să fie necesar să o modificați la o valoare mai mare dacă aveți probleme la conectarea la microcontroler.

Când MCU ne este gata, puneți-l în interiorul soclului DIP 8. Pentru a îndepărta MCU de pe panoul de control, de obicei îl scot cu o șurubelniță cu lamă plată.

Pasul 5: Conectarea ventilatoarelor la dispozitiv

Conectarea ventilatoarelor la dispozitiv
Conectarea ventilatoarelor la dispozitiv
Conectarea ventilatoarelor la dispozitiv
Conectarea ventilatoarelor la dispozitiv
Conectarea ventilatoarelor la dispozitiv
Conectarea ventilatoarelor la dispozitiv

Ca ventilator de intrare 0 (cel conectat la PB0) am selectat unul dintre ventilatoarele carcasei conectate la MOBO, care a variat în funcție de temperatura procesorului. Am îndepărtat izolația din partea cablului de tahometru al ventilatorului și am lipit un capăt al cablului jumper pe el. Celălalt capăt (cu conector femelă de 2,54 mm atașat la acesta) va fi conectat la controlerul ventilatorului. Dacă cablul jumper este prea scurt, extindeți-l lipind un alt cablu între cele menționate anterior. Apoi acoperiți toți conductorii expuși cu bandă izolatoare.

Intrarea 1 citește viteza ventilatoarelor GPU (în cazul meu există de fapt 3 dintre ele, dar există un singur conector de ventilator pe PCB-ul plăcii grafice). Am lipit cablul jumper de intrare 1 direct pe unul dintre cablurile conectorului mini ventilator GPU cu 4 pini situat pe PCB. Deoarece acest cablu a fost situat între PCB și placa de fund, am izolat placa de fund cu o bucată de hârtie mai întâi (mai ales că materialul plăcii de fund a fost destul de sudabil) și apoi am atașat ferm conectorul feminin al cablului de cealaltă parte a plăcii de fundal cu utilizarea benzii de folie de aluminiu. Apoi, ventilatoarele GPU pot fi conectate la pinul PB1 cu ajutorul unui alt cablu jumper (extins). Dacă nu doriți să lipiți nimic pe PCB-ul plăcii dvs. grafice, puteți atașa cablul jumper la firele ventilatorului sau puteți face adaptorul care va fi plasat între ventilator (uri) și conector pe PCB, decizia este a dvs.

Ventilatorul își transmite viteza curentă prin sârmă tahometru prin conectarea acestui fir la sol prin drenaj / colector deschis de două ori pe rotație (rotorul ventilatorului are de obicei 4 poli [NSNS] care sunt detectați de senzorul Hall, ieșirea ventilatorului scade când pe tipul de pol este detectat). Pe de altă parte, acest fir este de obicei tras la nivelul de tensiune de 3,3V. Dacă nu sunteți sigur dacă ați obținut firul potrivit, puteți utiliza osciloscopul sau construi unul dintre circuitele de detecție care sunt desenate pe ultima imagine din acest pas. Prima dintre ele vă permite să verificați tensiunea maximă care apare în locația măsurată, a doua pentru a verifica dacă apar impulsuri de joasă frecvență acolo.

3.3V ar trebui citit de pinii de intrare ATtiny ca stare HIGH, dar dacă aveți probleme cu acest lucru, puteți încerca să reduceți tensiunea care alimentează MCU (va crește și rezistența MOSFET-urilor!). Nu am avut probleme, totuși, am decis să includ acest gând aici.

Când ventilatoarele de intrare sunt gata, puteți plasa controlerul ventilatorului în carcasa computerului dvs., într-un loc pe care îl alegeți. L-am montat în partea a două dintre golurile mele de 5,25”, împingându-l între părțile metalice ale golfului, așezând niște hârtie în spatele acestuia și blocându-l în loc cu ajutorul unei cravate cu fermoar împinsă prin unul dintre găurile mari în prefabricat și alte găuri în golul de 5,25”. Asigurați-vă că nicio parte metalică a carcasei computerului nu poate atinge niciunul dintre conductorii expuși ai controlerului ventilatorului.

Acum puteți conecta ventilatoare de ieșire cu 3 pini la controler. Ventilatoarele de ieșire conectate la Canalul A vor fi conectate atât la ventilatoare CPU, cât și la GPU, iar tensiunea minimă care le va alimenta va fi de aproximativ 7-8V. Ventilatoarele conectate la conectorii de ieșire B ai canalului vor fi acționați numai de ventilatoarele de răcire ale GPU și tensiunea lor poate scădea la 0 V (dar numai pentru 66 ms la fiecare secundă 100ms ciclu la cel mai scăzut nivel al unității de ieșire). Ventilatoarele nu trebuie să atragă mai mult de 1A pe canal de ieșire.

Pasul 6: Alte modificări pe care le-am făcut pe computerul meu

Alte modificări pe care le-am făcut pe computerul meu
Alte modificări pe care le-am făcut pe computerul meu
Alte modificări pe care le-am făcut pe computerul meu
Alte modificări pe care le-am făcut pe computerul meu
Alte modificări pe care le-am făcut pe computerul meu
Alte modificări pe care le-am făcut pe computerul meu
Alte modificări pe care le-am făcut pe computerul meu
Alte modificări pe care le-am făcut pe computerul meu

Canalul A conduce două ventilatoare situate în partea de sus a carcasei mele. Sunt același model și sunt alimentați de aceeași tensiune, ceea ce îi face să se învârtă la viteze foarte similare. Ca urmare, au apărut unele bătăi sonore (model de interferență între două sunete cu frecvențe ușor diferite). Pentru a remedia acest lucru, am instalat 2 diode (una obișnuită și una Schottky) în serie cu unul dintre ventilatoare. Acest lucru a redus tensiunea și viteza ventilatorului, făcând bătăile să dispară.

O altă schimbare, care este legată de una dintre ventilatoarele pe care le-am făcut, este instalarea unui ventilator superior de perete din hârtie situat mai sus în față. Scopul său este de a împiedica acest ventilator să aspire aer care încă nu a trecut prin niciunul dintre radiatoare. De asemenea, am încercat să fac și alți pereți de hârtie care împiedicau aspirarea aerului GPU în aerul de răcire al procesorului. De fapt, au redus temperatura procesorului, dar cu prețul încălzirii GPU mai mult, așa că în cele din urmă le-am eliminat.

O altă modificare neobișnuită pe care am făcut-o este îndepărtarea filtrului de praf la evacuarea celor două ventilatoare de top (de cele mai multe ori aerul este oricum împins afară din carcasă, iar când computerul meu este oprit, sertarul situat ușor deasupra carcasei PC-ului îl protejează din praf). De asemenea, am instalat un ventilator de 92 mm în fața a două locașuri goale de 5,25”(controlerul ventilatorului este situat chiar în spatele acestuia). Acest ventilator nu este ținut de niciun șurub, se potrivește perfect între ventilatorul de 120 mm de mai jos și unitatea optică de deasupra (suprafețele ambelor sunt acoperite cu bandă izolatoare pentru a oferi o oarecare amortizare a vibrațiilor).

Recomandat: