Sommario:

Controller ventola guidato da CPU e GPU: 6 passaggi (con immagini)
Controller ventola guidato da CPU e GPU: 6 passaggi (con immagini)

Video: Controller ventola guidato da CPU e GPU: 6 passaggi (con immagini)

Video: Controller ventola guidato da CPU e GPU: 6 passaggi (con immagini)
Video: Se il tuo PC fa schermo nero, fai così 👈👈 2024, Settembre
Anonim
Controller ventola guidato da CPU e GPU
Controller ventola guidato da CPU e GPU

Recentemente ho aggiornato la mia scheda grafica. Il nuovo modello di GPU ha un TDP più elevato rispetto alla mia CPU e a una vecchia GPU, quindi volevo anche installare ventole aggiuntive per il case. Sfortunatamente, il mio MOBO ha solo 3 connettori per ventole con controllo della velocità e possono essere collegati solo alla temperatura della CPU o del chipset. Ho deciso di rimediare a questo, progettando il mio controller per ventole per PC che legge le velocità RPM delle ventole già installate (sia quelle collegate al MOBO e guidate dalla CPU temp sia quelle che raffreddano la GPU) e ha due canali di uscita. Il canale A utilizza la velocità delle ventole collegate alla temperatura della CPU e della GPU per pilotare le ventole di uscita a 3 pin a velocità variabile. Il canale B rileva solo la velocità delle ventole della GPU e il suo circuito di uscita utilizza un transistor aggiuntivo che consente di raggiungere velocità inferiori delle ventole azionate da esso (funziona bene con la scheda grafica semi-passiva).

Leggere la velocità di altre ventole secondo me è più semplice ed economico rispetto all'installazione di sonde di temperatura aggiuntive proprio accanto a processori coperti da dissipatori di calore (in pratica richiede il collegamento del filo del tachimetro delle ventole direttamente a un pin del microcontrollore).

Alcuni dei metodi per controllare la velocità della ventola sono descritti qui. Ho deciso di utilizzare il PWM a bassa frequenza, ma con poche modifiche al metodo descritto nell'articolo. Innanzitutto ogni canale ha 6 diodi collegati in serie, che possono essere utilizzati per ridurre di 4-5V la tensione che alimenta un ventilatore. In questa configurazione, i livelli di tensione PWM sono ~8V - 12V e 0V - ~8V (non disponibile nel canale A) invece di 0V - 12V. Ciò riduce notevolmente il rumore prodotto dalla ventola. Un altro trucco che ho usato per rendere più silenzioso il controllo della ventola in questo modo è descritto qui. Questo trucco richiede l'installazione di un circuito RC tra l'uscita del microcontrollore e un gate di un MOSFET che ho usato per cambiare i livelli di tensione della ventola. Ciò riduce la velocità di risposta di un segnale che controlla il MOSFET, rendendo a sua volta meno evidente il sobbalzo angolare della ventola durante il cambiamento del livello di tensione, riducendo le vibrazioni e i picchi di tensione.

Forniture

Parti e materiali:

  • ATtiny13 o ATtiny13A in una custodia 8-PDIP
  • Presa DIP a 8 pin
  • 3x transistor IRF530
  • 12x diodo 1N4007 (qualsiasi altro diodo 1A con caduta di tensione di circa 0,7V dovrebbe funzionare)
  • Condensatore elettrolitico radiale 220uF/25V
  • Condensatore elettrolitico radiale da 10uF/16V
  • Condensatore a disco ceramico 5x 100nF
  • Resistenza da 10k 0,25W
  • Resistore 4x 22k 0.25W
  • 2 resistenze da 1k 0,25W
  • Pulsante interruttore tattile 6x6mm
  • 2x 2 pin 2,54 mm maschio dritto intestazione pin
  • Connettore per ventola maschio 4x a 3 pin (Molex 2510), in alternativa, puoi utilizzare normali intestazioni pin se lo desideri (l'ho fatto), ma devi stare molto attento quando colleghi le ventole e i connettori femmina di quelle ventole saranno attaccato in modo meno sicuro
  • Connettore Molex a 4 pin, alloggiamento femmina/pin maschio (connettore di alimentazione AMP MATE-N-LOK 1-480424-0), ne ho usato uno che faceva parte dell'adattatore Molex maschio a 2x SATA femmina in bundle con alcuni vecchi MOBO
  • 2x cavi jumper con connettori femmina da 2,54 mm (o alloggiamenti dei connettori + pin + fili), saranno saldati ai fili del tachimetro delle ventole (o direttamente ai loro connettori sui PCB)
  • prefboard (50 mm x 70 mm, array di fori minimo 18 x 24), in alternativa, è possibile incidere da soli la scheda rivestita in rame e praticare i fori
  • pochi pezzi di filo
  • nastro isolante
  • nastro di alluminio (se si intende collegare il connettore alla piastra posteriore della GPU, vedere il passaggio 5)
  • carta

Utensili:

  • taglierina diagonale
  • pinze
  • cacciavite a lama piatta
  • coltello multiuso
  • multimetro
  • stazione di saldatura
  • saldare
  • Programmatore AVR (programmatore autonomo come USBasp o puoi usare ArduinoISP
  • breadboard e cavi jumper che verranno utilizzati per programmare il microcontrollore al di fuori del PCB (o qualsiasi altro strumento che possa raggiungere questo obiettivo)

Passaggio 1: Dichiarazione di non responsabilità

La costruzione di questo dispositivo richiede l'uso di strumenti moderatamente pericolosi e può causare danni o danni alla proprietà. Alcuni dei passaggi richiesti possono invalidare la garanzia dell'hardware o addirittura danneggiarlo se eseguiti in modo improprio. Costruisci e utilizzi il dispositivo descritto a tuo rischio

Passaggio 2: come funziona il controllo della ventola

Come funziona il controllo della ventola
Come funziona il controllo della ventola

Il canale A utilizza due ingressi. Ciascuno di questi ingressi del Canale A ha un livello associato, chiamiamo quei livelli A0 e A1. Per impostazione predefinita, entrambi i livelli sono 0. Entrambi gli ingressi hanno valori di soglia RPM associati (3 soglie per ingresso). Quando viene raggiunta la prima soglia, A0 o A1 aumenta a 1, quando la seconda aumenta a 2 e la terza soglia imposta uno dei livelli di ingresso a 3. Successivamente A0 e A1 vengono combinati (semplicemente sommati e impediti di raggiungere un valore superiore di 3), rendendo l'uscita principale un numero di livello del canale A nell'intervallo 0-3. Questo numero viene utilizzato per controllare la velocità delle ventole in uscita, 0 significa che sono alimentate a 7-8V (duty cycle dello 0%). Livelli di uscita più elevati significano che la ventola è alimentata da 12 V completi per il 33%, 66% o 100% di un ciclo di 100 ms o 33 ms (dipende dalla frequenza selezionata).

Il canale B ha un solo ingresso (B1, fisicamente è condiviso con il canale A [pin PB1]). Ci sono sei possibili livelli B1 (1-6), il livello predefinito è 1. Esistono cinque valori di soglia, che sono in grado di aumentare B1. B1 viene utilizzato come livello del canale B di uscita principale. Quando è 1, 7-8V alimenta le ventole in uscita per il 33% del tempo di ciclo in un ciclo, nell'altro per il 66%, per il resto del tempo viene tolta l'alimentazione. Livello 2 significa che il 66% di ogni ciclo è 7-8V, il resto 0V. Livello 3 significa che 7-8V è costantemente applicato. I livelli 4-6 significano che la ventola è alimentata da 12V pieni per il 33%, 66% o 100% del ciclo, per il resto del tempo la tensione è 7-8V.

La frequenza di questo controllo PWM per impostazione predefinita è 10Hz. Può essere aumentato a 30Hz chiudendo i pin del jumper J7.

Al raggiungimento della soglia superiore, i livelli di A0, A1 e B1 aumentano istantaneamente. Tuttavia, quando gli RPM diminuiscono, il livello viene mantenuto per 200 ms e può diminuire solo di 1 ogni 200 ms. Serve a prevenire variazioni rapide di tali livelli quando il numero di giri della ventola in ingresso è molto vicino alla soglia.

Passaggio 3: saldatura di componenti elettronici

Saldatura di componenti elettronici
Saldatura di componenti elettronici
Saldatura di componenti elettronici
Saldatura di componenti elettronici
Saldatura di componenti elettronici
Saldatura di componenti elettronici

Saldare tutti i componenti elettronici alla scheda pref (eccetto Attiny13, che verrà poi inserito in una presa). Utilizzare fili di rame (quelli del diametro di 0,5 mm del cavo UTP dovrebbero essere perfetti) per effettuare i collegamenti elettrici tra i componenti. Se hai problemi a spingere i fili grandi che escono dal connettore Molex (AMP MATE-N-LOK), puoi praticare fori più grandi per loro. Se non vuoi usare un trapano puoi sempre girare una vite un paio di volte all'interno di piccoli fori prefboard. Assicurarsi che i fili non causino cortocircuiti.

Se preferisci creare il tuo PCB, fornisco anche file.svg (le dimensioni della scheda sono 53,34x63,50 mm) e.pdf (formato pagina A4, all'interno dell'archivio.zip). Una scheda rivestita in rame su un lato dovrebbe essere sufficiente, poiché c'è solo una connessione sul lato anteriore (può essere fatta con un filo), quindi i file per il lato anteriore sono forniti principali in modo che questa connessione possa essere identificata.

Consiglio vivamente di coprire il retro del PCB con del materiale isolante che prevenga eventuali cortocircuiti accidentali. Ho usato pochi strati di carta normale che sono tenuti ai bordi del PCB da poche strisce di nastro isolante.

Passaggio 4: Programmazione del microcontrollore ATtiny

Programmazione di un microcontrollore Tiny
Programmazione di un microcontrollore Tiny
Programmazione di un microcontrollore Tiny
Programmazione di un microcontrollore Tiny

Il programma in esecuzione sull'MCU ha codificato diverse soglie di velocità RPM delle ventole di ingresso. Tali soglie si trovano all'inizio del file fan_controller.c. La riga che contiene la prima soglia, responsabile dell'aumento leggermente del livello di uscita del canale A in risposta alla ventola input_0 superiore a 450 RPM, ha il seguente aspetto:

#define A0_SPEED_0 3 // 450 RPM

Se si desidera modificare il valore RPM della soglia, è necessario sostituire il numero 3 con qualcos'altro. L'incremento di questo numero di 1 cambierà la soglia di 150 RPM.

Un'altra cosa che potresti voler cambiare è la diminuzione del ritardo del livello di uscita. Questo ritardo impedisce variazioni rapide del livello di uscita quando il numero di giri della ventola di ingresso è molto vicino alla soglia. Ci sono 3 linee che controllano questo (dato che il Canale A usa 2 ingressi e il Canale B ne usa 1) e la prima ha questo aspetto:

if(channel_A0_lower_rpm_cycles > 2) {

L'aumento del numero 2 aumenterà questo ritardo. Il ritardo viene conteggiato in cicli di 100 ms.

Per compilare il codice sorgente e quindi programmare il chip avrai bisogno di un software. Su una distribuzione Linux basata su Debian può essere installato eseguendo il comando seguente:

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

Se stai usando Windows puoi provare a installare la suite WinAVR, che contiene anche il software necessario.

Per compilare il codice sorgente è necessario eseguire questo:

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

Per creare un file.hex devi copiare questa riga nel terminale:

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

Questo comando permette di verificare quanta memoria utilizzerà il programma (il testo è Flash, i dati sono variabili che verranno archiviate in Flash e poi copiate in RAM, e bss sono variabili inizializzate con un valore di 0 in RAM):

avr-size fan_controller.out

Quando il tuo file.hex è pronto devi inserire ATtiny13 nella breadboard e collegarlo al programmatore con cavi jumper. È meglio scollegare l'alimentazione dal programmatore quando lo si collega all'MCU. Mantieni i bit dei fusibili predefiniti (H:FF, L:6A). Se il tuo programmatore è USBasp, questo comando programmerà la memoria flash dell'MCU:

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

-B 8 cambia la velocità di trasmissione tra programmatore e MCU (bitclock). Potrebbe essere necessario cambiarlo con un valore più alto se si riscontrano problemi con la connessione al microcontrollore.

Quando l'MCU è pronto, inseriscilo nella presa DIP 8. Per rimuovere l'MCU dalla breadboard, di solito lo faccio leva con un cacciavite a lama piatta.

Passaggio 5: collegamento delle ventole al dispositivo

Collegamento delle ventole al dispositivo
Collegamento delle ventole al dispositivo
Collegamento delle ventole al dispositivo
Collegamento delle ventole al dispositivo
Collegamento delle ventole al dispositivo
Collegamento delle ventole al dispositivo

Come ventola Input 0 (quella collegata al PB0) ho selezionato una delle ventole del case collegate a MOBO, la cui velocità variava con la temperatura della CPU. Ho rimosso l'isolamento dalla parte del filo del tachimetro della ventola e ho saldato un'estremità del cavo di collegamento. L'altra estremità (con connettore femmina da 2,54 mm collegato) sarà collegata al controller della ventola. Se il cavo jumper è troppo corto, allungarlo saldando un altro cavo tra quelli precedentemente menzionati. Quindi coprire tutti i conduttori esposti con nastro isolante.

L'ingresso 1 legge la velocità delle ventole della GPU (nel mio caso ce ne sono in realtà 3, ma c'è solo un connettore della ventola sul PCB della scheda grafica). Ho saldato il cavo jumper Input 1 direttamente a uno dei cavi del connettore della ventola della mini GPU a 4 pin situato sul PCB. Poiché questo cavo si trovava tra PCB e piastra posteriore, ho prima isolato la piastra posteriore con un pezzo di carta (soprattutto perché il materiale della piastra posteriore era abbastanza saldabile) e poi ho fissato saldamente il connettore femmina del cavo all'altro lato della piastra posteriore con l'uso di nastro di alluminio. Quindi le ventole GPU possono essere collegate al pin PB1 con l'uso di un altro cavo jumper (esteso). Se non vuoi saldare nulla sul PCB della tua scheda grafica, puoi collegare il cavo jumper ai fili della ventola o creare un adattatore che verrà posizionato tra le ventole e il connettore sul PCB, la decisione è tua.

La ventola trasmette la sua velocità attuale attraverso il filo del tachimetro mediante il collegamento di questo filo a terra tramite scarico/collettore aperto due volte per rotazione (il rotore della ventola di solito ha 4 poli [NSNS] che vengono rilevati dal sensore di Hall, l'uscita della ventola si abbassa quando sul tipo di palo viene rilevato). D'altra parte, questo filo viene solitamente tirato al livello di tensione di 3,3 V. Se non sei sicuro di aver preso il cavo giusto, puoi usare l'oscilloscopio o costruire uno dei circuiti di rilevamento che sono disegnati sull'ultima immagine in questo passaggio. Il primo di questi consente di controllare la tensione massima che appare nella posizione misurata, il secondo di verificare se lì compaiono impulsi a bassa frequenza.

3.3V dovrebbe essere letto dai pin di ingresso di ATtiny come stato HIGH, ma se hai problemi con questo, puoi provare a ridurre la tensione che alimenta MCU (aumenterà anche la resistenza dei MOSFET!). Non ho avuto problemi, tuttavia, ho deciso di includere questo pensiero qui.

Quando le ventole di ingresso sono pronte, puoi posizionare il controller della ventola all'interno del case del PC, in un luogo a tua scelta. L'ho montato a lato di due dei miei alloggiamenti per unità da 5,25 pollici vuoti, spingendolo tra le parti metalliche dell'alloggiamento, posizionando della carta dietro di esso e bloccandolo in posizione con l'uso di una fascetta inserita in uno dei grandi fori in prefboard e alcuni altri fori nell'alloggiamento da 5,25 pollici. Assicurati che nessuna parte metallica del case del PC possa toccare i conduttori esposti del controller della ventola.

Ora puoi collegare le ventole di uscita a 3 pin al controller. Le ventole di uscita collegate al Canale A saranno collegate sia alle ventole CPU che GPU e la tensione minima che le alimenterà sarà di circa 7-8V. Le ventole collegate ai connettori di uscita del canale B saranno pilotate solo dalle ventole di raffreddamento della GPU e la loro tensione potrebbe scendere a 0 V (ma solo per 66 ms ogni secondo ciclo di 100 ms al livello di unità di uscita più basso). Le ventole non dovrebbero assorbire più di 1A per canale di uscita.

Passaggio 6: altre modifiche apportate al mio PC

Altre modifiche che ho apportato al mio PC
Altre modifiche che ho apportato al mio PC
Altre modifiche che ho apportato al mio PC
Altre modifiche che ho apportato al mio PC
Altre modifiche che ho apportato al mio PC
Altre modifiche che ho apportato al mio PC
Altre modifiche che ho apportato al mio PC
Altre modifiche che ho apportato al mio PC

Il canale A pilota due ventole situate nella parte superiore del mio case. Sono lo stesso modello e sono alimentati dalla stessa tensione, che li fa girare a velocità molto simili. Di conseguenza, è apparso un battito udibile (schema di interferenza tra due suoni di frequenze leggermente diverse). Per rimediare a questo ho installato 2 diodi (uno normale e uno Schottky) in serie con una delle ventole. Ciò ha ridotto la tensione e la velocità della ventola, facendo sparire il battito.

Un'altra modifica, che è legata a una di quelle ai ventilatori che ho fatto, è l'installazione di un ventilatore superiore a soffietto a parete di carta posizionato più in avanti. Il suo scopo è impedire a questa ventola di aspirare aria che non è ancora passata attraverso nessuno dei dissipatori di calore. Ho anche provato a creare altre pareti di carta che impedissero all'aria di scarico della GPU di essere risucchiata nel dispositivo di raffreddamento della CPU. In realtà hanno ridotto la temperatura della CPU, ma al costo del riscaldamento della GPU di più, quindi alla fine li ho rimossi.

Un'altra modifica insolita che ho fatto è la rimozione del filtro antipolvere allo scarico di quelle due ventole superiori (la maggior parte delle volte l'aria viene comunque espulsa dal case, e quando il mio PC è spento, il cassetto situato leggermente sopra il case del PC lo protegge dalla polvere). Ho anche installato una ventola da 92 mm davanti a due alloggiamenti per unità da 5,25 pollici vuoti (il controller della ventola si trova proprio dietro di esso). Questa ventola non è trattenuta da alcuna vite, si adatta perfettamente tra la ventola da 120 mm sotto e l'unità ottica sopra (le superfici di entrambe sono coperte con nastro isolante per fornire un po' di smorzamento delle vibrazioni).

Consigliato: