DOMANDA PWM "fai da te" per controllare le ventole

Pubblicità

Tomoms

Nuovo Utente
Messaggi
28
Reazioni
0
Punteggio
25
Buonasera a tutti,

Ho una workstation Dell T5600 con doppio processore Intel Xeon, ciascuno col suo dissipatore munito di ventola, più un array di 3 ventole più piccole posto sulla parte anteriore del case.
Ora, il problema è che il firmware della scheda madre, in quanto a gestione termica, fa schifo! Mi sembra di notare che usi i dati del sensore ambientale di temperatura per controllare le ventole, invece di usare la temperatura riportata dai sensori di ciascuna CPU per controllare le ventole, appunto, di ciascuna CPU. Il sensore ambientale non so dove sia di preciso, ma dev'essere in una posizione molto periferica, perché infatti in idle segna circa 22 gradi fissi, e sale solo di poco man mano che le CPU iniziano a scaldare. Di conseguenza, le mie CPU arrivano tranquillamente agli 85 gradi senza che le ventole partano al massimo. Questo è ciò che il firmware fa quando nel BIOS imposto la velocità delle ventole su "Auto".

Ovviamente non va bene, e infatti quando mi ritrovo a dover eseguire operazioni pesanti e lunghe, mi tocca riavviare il PC, entrare nel BIOS e impostare la velocità delle ventole su "High". Così loro partono al massimo e tengono i processori a temperature ragionevoli anche sotto carichi pesanti.

Vorrei risolvere questo problema ispirandomi a questo progetto: https://github.com/algirdasc/t3600_fancontrol
Le ventole della mia workstation hanno a quanto pare soltanto 3 stati: spenta, bassa velocità, alta velocità.
In pratica vorrei scrivermi un programmino in C/C++ che ogni 5 secondi lancia due thread, ciascuno dei quali valuta la temperatura di una CPU e, se essa non è bassa ma nemmeno elevatissima, comanda le ventole facendole passare ripetutamente, a cicli brevissimi, tra lo stato a massima velocità e quello a bassa velocità, in modo da emulare un segnale analogico che le faccia girare al 50% circa della velocità massima.

Secondo voi è un'idea sensata o rischio di fare un danno alle ventole?
Grazie e buona giornata!
 
Buonasera a tutti,

Ho una workstation Dell T5600 con doppio processore Intel Xeon, ciascuno col suo dissipatore munito di ventola, più un array di 3 ventole più piccole posto sulla parte anteriore del case.
Ora, il problema è che il firmware della scheda madre, in quanto a gestione termica, fa schifo! Mi sembra di notare che usi i dati del sensore ambientale di temperatura per controllare le ventole, invece di usare la temperatura riportata dai sensori di ciascuna CPU per controllare le ventole, appunto, di ciascuna CPU. Il sensore ambientale non so dove sia di preciso, ma dev'essere in una posizione molto periferica, perché infatti in idle segna circa 22 gradi fissi, e sale solo di poco man mano che le CPU iniziano a scaldare. Di conseguenza, le mie CPU arrivano tranquillamente agli 85 gradi senza che le ventole partano al massimo. Questo è ciò che il firmware fa quando nel BIOS imposto la velocità delle ventole su "Auto".

Ovviamente non va bene, e infatti quando mi ritrovo a dover eseguire operazioni pesanti e lunghe, mi tocca riavviare il PC, entrare nel BIOS e impostare la velocità delle ventole su "High". Così loro partono al massimo e tengono i processori a temperature ragionevoli anche sotto carichi pesanti.

Vorrei risolvere questo problema ispirandomi a questo progetto: https://github.com/algirdasc/t3600_fancontrol
Le ventole della mia workstation hanno a quanto pare soltanto 3 stati: spenta, bassa velocità, alta velocità.
In pratica vorrei scrivermi un programmino in C/C++ che ogni 5 secondi lancia due thread, ciascuno dei quali valuta la temperatura di una CPU e, se essa non è bassa ma nemmeno elevatissima, comanda le ventole facendole passare ripetutamente, a cicli brevissimi, tra lo stato a massima velocità e quello a bassa velocità, in modo da emulare un segnale analogico che le faccia girare al 50% circa della velocità massima.

Secondo voi è un'idea sensata o rischio di fare un danno alle ventole?
Grazie e buona giornata!
Ciao. Premessa essenziale ed esistenziale per una rilevazione affidabilke della temperatura delle CPU è la presenza del sensore termico di rilevazione in posizione adatta.
  • La temperatura del diodo CPU o del core è la temperatura misurata attraverso un diodo sensibile alla temperatura sulla matrice del processore. L'implementazione più comune utilizza una parte del sensore di temperatura esterna al processore con le connessioni Anodo a diodo termico CPU (+) e Catodo (-).
  • La temperatura della CPU è la temperatura misurata da una parte dei sensori di temperatura remoti sulla scheda madre vicino alla CPU.
Tutto ciò presuppone quindi la presenza di un sistema di rilevazione della temperatura con lettura diretta dei sensori presenti. Può capitare che o per database insufficiente o incompatibilità del software di monitoraggio utilizzato non si riesca a gestire correttamente la dissipazione. La presenza di un sistema fisso a tre livelli da BIOS non suggerisce purtroppo la presenza di un sistema continuo di gestione termica delle ventole. Quindi ho paura che non avrai materia elettronica da gestire con un software esterno comunque lo crei.
Tieni presente che processori da carico intensivo devono essere ben dissipati e pasta termica di buona qualità è essenziale a garantire lo scambio termico tra CPU e dissipatore che dovrà essere ben fissato sul sistema di ritenzione e premere bene sulla CPU.
Prova ad utilizzare HWinfo per monitorare le temperatura e vedi se la variazione di essa in relazione al carico indica la presenza e la lettura di un sensore di riferimento.
Che CPU hai?
Controlla se i dissipatori installati sono questi:
 
Ultima modifica:
Fai una prova impostando le ventole al massimo e caricando i processori.
Il calore ci mette del tempo per uscire dal processore, passare il dissipatore e arrivare alle alette. Vedi che temperature raggiunge.
 
Ciao. Premessa essenziale ed esistenziale per una rilevazione affidabilke della temperatura delle CPU è la presenza del sensore termico di rilevazione in posizione adatta.
  • La temperatura del diodo CPU o del core è la temperatura misurata attraverso un diodo sensibile alla temperatura sulla matrice del processore. L'implementazione più comune utilizza una parte del sensore di temperatura esterna al processore con le connessioni Anodo a diodo termico CPU (+) e Catodo (-).
  • La temperatura della CPU è la temperatura misurata da una parte dei sensori di temperatura remoti sulla scheda madre vicino alla CPU.
Tutto ciò presuppone quindi la presenza di un sistema di rilevazione della temperatura con lettura diretta dei sensori presenti. Può capitare che o per database insufficiente o incompatibilità del software di monitoraggio utilizzato non si riesca a gestire correttamente la dissipazione. La presenza di un sistema fisso a tre livelli da BIOS non suggerisce purtroppo la presenza di un sistema continuo di gestione termica delle ventole. Quindi ho paura che non avrai materia elettronica da gestire con un software esterno comunque lo crei.
Tieni presente che processori da carico intensivo devono essere ben dissipati e pasta termica di buona qualità è essenziale a garantire lo scambio termico tra CPU e dissipatore che dovrà essere ben fissato sul sistema di ritenzione e premere bene sulla CPU.
Prova ad utilizzare HWinfo per monitorare le temperatura e vedi se la variazione di essa in relazione al carico indica la presenza e la lettura di un sensore di riferimento.
Che CPU hai?
Controlla se i dissipatori installati sono questi:
Le CPU sono due E5-2680 (v1). I dissipatori sono uno identico a quello che mi hai linkato e uno fatto così: https://www.ebay.it/itm/144958341540 (perché se no andrebbe a intralciare un accrocchio di metallo che serve a tenere in posizione il lettore CD/DVD).
Ho cambiato la pasta termica di recente con una Arctic MX4 che mi è stata consigliata proprio qui, e i dissipatori mi sembrano ben collocati, infatti quando imposto le ventole al massimo nel BIOS, le temperature sono al massimo sui 60-65 gradi anche in caso di carichi intensivi prolungati.
Mi sono dimenticato di specificare che uso Linux. In Linux io ho accesso a un sacco di file in /sys che mi permettono di leggere tantissimi sensori di temperatura e di controllare tre generatori di PWM, solo che appunto questi ultimi sono farlocchi (se non ricordo male, se ci scrivo 0 = ventola spenta, qualsiasi intero tra 1 e 128 = ventola gira piano, qualsiasi intero tra 129 e 255 = ventola gira al massimo).
Guarda qui per un esempio dei sensori di temperatura rilevati in Linux: https://paste.opensuse.org/pastes/e873231d19b1
Ho preso questi dati mentre le ventole andavano al massimo e i processori erano sotto sforzo. Come vedi, i sensori ambientali sono più o meno sempre fissi sui 22 o 23 gradi, poi ci sono due strani sensori etichettati "CPU" (il quartultimo e il terzultimo) che riportano valori piuttosto bassi. Non so quale/i di questi sensori usi il firmware della scheda madre quando nel BIOS imposto le ventole in modalità Auto, ma sicuramente non usa quelli giusti. Il mio ipotetico programmino che scriverei andrebbe a usare i due sensori "CPU" che vedi immediatamente sotto la riga "Other Fan".
P.S.: sono anche abbastanza sicuro che le velocità massime delle ventole qui riportate siano fasulle. I due dissipatori montano ventole diverse che sono alimentate da correnti diverse (non so perché, la workstation era così quando l'ho comprata di seconda mano), quindi immagino che la velocità massima di una dovrebbe essere superiore a quella dell'altra.
Fai una prova impostando le ventole al massimo e caricando i processori.
Il calore ci mette del tempo per uscire dal processore, passare il dissipatore e arrivare alle alette. Vedi che temperature raggiunge.
Vedi per favore il link più sopra. Ho postato un report dei sensori in un momento di sforzo elevato e ventole al massimo.
 
Pubblicità
Pubblicità
Indietro
Top