This is an old revision of the document!
Sistemul inteligent de răcire pentru PC este un dispozitiv embedded care monitorizează temperatura din interiorul unui calculator și controlează automat viteza unui ventilator în funcție de temperatura măsurată. Proiectul pornește de la ideea unui termometru inteligent, dar este adaptat pentru zona de răcire hardware, unde scopul principal nu este doar afișarea temperaturii, ci și reacția automată la creșterea acesteia.
Dispozitivul măsoară temperatura cu ajutorul unui termistor montat într-o zonă relevantă din carcasă, de exemplu lângă radiator, lângă zona de evacuare a aerului sau în apropierea unei componente care se încălzește. Microcontroller-ul procesează periodic datele primite de la senzor și ajustează viteza ventilatorului printr-un semnal PWM. Astfel, ventilatorul poate funcționa lent atunci când temperatura este mică, pentru a reduce zgomotul, și poate crește progresiv în turație atunci când temperatura urcă.
Scopul proiectului este realizarea unui controller de răcire independent pentru PC, capabil să:
Ideea proiectului a pornit de la faptul că multe sisteme de răcire sunt fie prea zgomotoase, fie nu reacționează suficient de rapid în momentul în care temperatura crește brusc. Un ventilator care merge constant la turație mare produce zgomot inutil, iar unul care pornește prea târziu poate permite încălzirea excesivă a componentelor. Proiectul propune o soluție intermediară: o curbă de control calculată software, care ține cont atât de temperatura actuală, cât și de rata de creștere a temperaturii.
Acest proiect este util deoarece:
Sistemul este organizat în mai multe module funcționale care comunică prin intermediul microcontroller-ului. Microcontroller-ul citește temperatura, calculează viteza necesară pentru ventilator și controlează ieșirile către display, LED-uri și ventilator.
Schema bloc a sistemului:
┌──────────────────────────────────────────────────────────────────────┐ │ Sistem inteligent de răcire pentru PC │ │ │ │ ┌──────────────────┐ │ │ │ Termistor NTC │ │ │ │ 10kΩ │──── semnal analogic ─────┐ │ │ └──────────────────┘ │ │ │ ▼ │ │ ┌──────────────────────┐ │ │ │ │ │ │ ┌──────────────────┐ │ Arduino UNO / │ │ │ │ Buton MODE │──── digital ──►│ ATmega328P │ │ │ └──────────────────┘ │ │ │ │ │ - citește ADC │ │ │ ┌──────────────────┐ │ - calculează temp. │ │ │ │ Buton MINUS │──── digital ──►│ - calculează PWM │ │ │ └──────────────────┘ │ - controlează I/O │ │ │ │ │ │ │ ┌──────────────────┐ └──────────┬───────────┘ │ │ │ Buton PLUS │──── digital ──────────────┘ │ │ └──────────────────┘ │ │ │ │ ┌────────────────────────────┬───────────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────────────────┐ ┌──────────────────┐ ┌──────────────┐ │ │ Display 4 cifre │ │ LED verde/galben │ │ Driver MOSFET│ │ │ + 74HC595 │ │ /roșu │ │ + ventilator │ │ └─────────────────────┘ └──────────────────┘ └──────────────┘ │ │ └──────────────────────────────────────────────────────────────────────┘
Modulele principale ale proiectului sunt:
Interacțiunea dintre module:
Funcția de control propusă pentru ventilator:
fanPWM = clamp(PWM_min + k1 * (T - T_min) + k2 * dT_dt, PWM_min, PWM_max)
unde:
Astfel, dacă temperatura este mare, ventilatorul va accelera. Dacă temperatura încă nu este foarte mare, dar crește rapid, ventilatorul va începe să accelereze preventiv.
| Referință | Componentă | Rol | Cantitate |
|---|---|---|---|
| U1 | Arduino UNO / placă compatibilă ATmega328P | Microcontroller principal | 1 |
| BB1 | Breadboard 830 puncte | Realizarea prototipului | 1 |
| SEN1 | Termistor NTC 10kΩ | Măsurarea temperaturii | 1 |
| R1 | Rezistor 10kΩ | Divizor de tensiune pentru termistor | 1 |
| FAN1 | Ventilator PC 12V DC | Răcirea sistemului | 1 |
| Q1 | MOSFET N-channel logic-level, de exemplu IRLZ44N / IRLZ34N / AO3400 | Controlul ventilatorului prin PWM | 1 |
| D1 | Diodă 1N4007 / 1N5819 | Protecție la tensiuni inverse generate de motor | 1 |
| R2 | Rezistor 220Ω - 330Ω | Rezistor serie pentru poarta MOSFET-ului | 1 |
| R3 | Rezistor 10kΩ | Pull-down pentru poarta MOSFET-ului | 1 |
| DISP1 | Display 7-segmente cu 4 cifre, catod comun | Afișarea temperaturii / PWM-ului | 1 |
| U2 | 74HC595 shift register | Controlul segmentelor display-ului | 1 |
| LED1 | LED verde | Temperatură normală | 1 |
| LED2 | LED galben | Temperatură moderată | 1 |
| LED3 | LED roșu | Temperatură ridicată | 1 |
| R4, R5, R6 | Rezistoare 220Ω | Limitarea curentului prin LED-uri | 3 |
| SW1 | Buton MODE | Schimbare mod / configurare | 1 |
| SW2 | Buton MINUS | Scădere prag / valoare | 1 |
| SW3 | Buton PLUS | Creștere prag / valoare | 1 |
| PSU1 | Sursă 12V DC | Alimentarea ventilatorului | 1 |
| USB | Cablu USB | Alimentarea și programarea Arduino | 1 |
| — | Fire jumper tata-tata / tata-mamă | Conexiuni pe breadboard | — |
| Pin Arduino | Tip | Conectat la |
|---|---|---|
| A0 | Analog input | Punctul median al divizorului termistor + rezistor 10kΩ |
| D2 | Digital output | DATA pentru 74HC595 |
| D3 | Digital output | CLOCK pentru 74HC595 |
| D4 | Digital output | LATCH pentru 74HC595 |
| D5 | Digital output | Selectare cifra 1 display |
| D6 | Digital output | Selectare cifra 2 display |
| D7 | Digital output | Selectare cifra 3 display |
| D8 | Digital output | Selectare cifra 4 display |
| D9 | PWM output | Poarta MOSFET-ului pentru ventilator |
| D10 | Digital output | LED verde prin rezistor 220Ω |
| D11 | Digital output | LED galben prin rezistor 220Ω |
| D12 | Digital output | LED roșu prin rezistor 220Ω |
| A1 | Digital input | Buton MODE |
| A2 | Digital input | Buton MINUS |
| A3 | Digital input | Buton PLUS |
| 5V | Power | Alimentare logică pentru display, 74HC595, senzori |
| GND | Power | Masă comună Arduino + sursă 12V |
| 12V extern | Power | Alimentare ventilator PC |
Termistorul NTC de 10kΩ va fi folosit într-un divizor de tensiune împreună cu un rezistor de 10kΩ. Punctul median al divizorului va fi conectat la pinul analogic A0. Pe măsură ce temperatura crește, rezistența termistorului se modifică, ceea ce duce la modificarea tensiunii citite de ADC.
Citirea brută de la ADC va fi convertită software în temperatură. Pentru etapa inițială, este suficientă măsurarea relativă a temperaturii și calibrarea practică la temperatura camerei. În etapa software, conversia poate fi îmbunătățită folosind formula Steinhart-Hart sau un model Beta pentru termistor.
Ventilatorul de PC funcționează la 12V, deci nu va fi alimentat direct de pe Arduino. Arduino va genera doar semnalul de control PWM, iar comutarea curentului prin ventilator va fi făcută de MOSFET.
Conexiune propusă pentru MOSFET:
Această soluție permite controlul vitezei ventilatorului prin modificarea factorului de umplere al semnalului PWM.
Display-ul va fi folosit pentru afișarea temperaturii sau a procentului de putere al ventilatorului. Pentru reducerea numărului de pini folosiți, segmentele vor fi controlate printr-un registru de deplasare 74HC595.
Display-ul poate avea două moduri principale:
LED-urile oferă o interpretare rapidă a temperaturii:
Pragurile propuse inițial:
Aceste praguri pot fi modificate ulterior în funcție de poziționarea senzorului și de comportamentul real al sistemului.
Cele trei butoane vor fi folosite pentru interacțiunea cu sistemul:
Butoanele vor fi citite folosind `INPUT_PULLUP`, deci în stare normală pinul va fi HIGH, iar la apăsare va deveni LOW.
TODO — va fi completat în etapa următoare.
Pentru etapa software, se plănuiește implementarea următoarelor funcționalități:
Algoritmul principal va avea următoarea structură:
setup: configurează pinii inițializează display-ul inițializează comunicarea serială setează pragurile implicite loop: citește temperatura la interval fix calculează rata de creștere a temperaturii calculează PWM-ul pentru ventilator actualizează ventilatorul actualizează LED-urile actualizează display-ul citește butoanele
TODO — va fi completat după implementarea și testarea proiectului.
Rezultatele urmărite sunt:
TODO — va fi completat la finalul proiectului.
Proiectul își propune să demonstreze folosirea practică a senzoristicii analogice, a controlului PWM și a unui algoritm simplu de reglare pentru un sistem fizic real. Prin combinarea temperaturii curente cu rata de creștere a temperaturii, sistemul poate deveni mai eficient decât un control simplu bazat doar pe praguri fixe.
TODO — se va adăuga arhiva proiectului după implementare.
Arhiva finală va conține:
| Dată | Activitate |
|---|---|
| 09.05.2026 | Alegerea temei proiectului și realizarea documentației inițiale. |
| 09.05.2026 | Definirea modulelor principale: senzor temperatură, controller, driver ventilator, display, LED-uri și butoane. |
| 09.05.2026 | Stabilirea listei inițiale de componente hardware. |