Mini Controllo per ventole, con Arduino Nano, sensore DS18B20 e display TM1637

Salve a tutti,
Vorrei realizzare un piccolo sistema, che attivi e controlli due ventole a 12V, 4-pin, (PWM a 25Khz) in funzione di un certo range di temperatura, rilevato da un DS18B20. Il valore in °C, viene mostrato in tempo reale dal display Tm1637.

Il sistema dovrebbe attivarsi ad una soglia di temperatura minima, che avvii le ventole al minimo (PWM 10%?).
L'incremento di temperatura farà progressivamente aumentare la velocità delle ventole, fino alla soglia massima (PWM 100%).
Il raggiungimento di questa, attiverà anche un Led lampeggiante, ed eventualmente un avvisatore acustico (non implementato).

La scelta dei dispositivi di base (un clone Arduino Nano, DS18B20 e TM1637) è data semplicemente dal fatto di averli già in casa.

Circa le ventole, nel mio caso ne impiegherò due da CPU, con HeatPipe, per un sistema di dissipazione attiva del calore.

Queste, le specifiche delle ventole:
Deep Cool Gammaxx 400 v2
Dimensions: 120 x 120 x 25 mm.
Fan speed: 500-1650 RPM ±10%
Fan Airflow: 64.5 CFM
Fan Air Pressure: 2.1 mmAq
Fan noise ≤27.8 dB(A)
Fan connector: 4-pin PWM
Rated Voltage: 12V
Rated Current: 0.18A
Power Cons.: 2.16W

Il circuito.
Le prime ricerche di progetti simili, con i dispositivi citati, ha prodotto molti risultati.
Tra i più interessanti, questi:

Nessuno tra quelli citati fa uso del display, ma le risorse su come interfacciare il TM1637 con Arduino sono moltissime, tra cui:

Dovendo partire da qualcosa, ho scelto il circuito chiamato Argus Controller, che impiega già una doppia ventola, il controllo fast pwm a 4 pin e il sensore di temperatura DS18B20.
Questo lo schema circuitale di base, preso dalla guida online di Argus Monitor:

Partendo dal presupposto che fosse corretto, l'ho esteso con i componenti per la seconda ventola (già prevista) e ho aggiunto le connessioni per Display e Led.
Ho anche aggiunto uno stadio di regolazione intermedio alla linea di alimentazione a 12V, per fornire una più bassa "e fresca" tensione di alimentazione ad Arduino Nano, appunto di 7,5V.
Infine, ho disegnato il circuito completo in Fidocadj, mantenendo un passo punto-punto di 2,54 mm. e una certa proporzione tra i componenti.
Data la semplicità dello schema e l'esiguo numero di componenti, li ho disposti cercando di sbrogliare e ottimizzare lo spazio, in modo da poter replicare il circuito su una millefori da 6x8 cm., mantenendo comunque una certa pulizia del layout.
Questo ci porta allo schema completo quì sotto:
(Schema, dettagli ed elenco componenti nella versione PDF)
Dual_Fan_control_01C__.pdf (70,6 KB)

Prima domanda:
Lo schema è elettricamente corretto?

Credo sia meglio chiarire la mia domanda, che non era riferita alla mia versione del circuito.

Intendevo chiedere se a vostro parere, il circuito di Argus Controller, che connette le ventole a 4 pin ad Arduino è corretto, dato che in altri progetti, le connessioni PWM e Sense, avvengono direttamente.

Per quanto riguarda il mio schema, replica esattamente le stesse connessioni e componenti di Argus controller, a parte il pin diverso scelto per il DS18B20 (D8), il collegamento dei pin del Display TM1637, CLK e DIO (rispettivamente D4 e D5) e infine D13, predefinito per il controllo Led.
Se Il circuito di Argus Controller è corretto, potrei cominciare a fare ragionamenti sulla programmazione.

Ma prima preferisco aspettare qualche commento (...osservazione o anche critica, nel caso).

Nel frattempo, allego gli sketch di Argus Controller, di Mariuste e anche quello di ajaust, che impiega gli stessi componenti:

Ajaust_fan_control.ino (5,3 KB)
ArgusController1.ino (7,1 KB)
Mariuste_Fan_Temp_Control.ino (6,8 KB)

Mah, guarda, in passato, per le ventole a 4 pin, noi abbiamo sempre suggerito questo schema:

Quindi, con i segnali connessi direttamente ai pin di Arduino.

Guglielmo

Con un diodo zener connesso direttamente ad un pin di arduino?
E cosa limita la corrente?

L'autore di quel libretto si conferma un c * alt * one

1 Like

In effetti quella non l'ho capita neanche io ... a che servirà quello Zener :roll_eyes:

Magari pensava di limitare l'ingresso sul pin 4 della ventola a 3.3V ...
... ma senza neanche una resistenza :thinking:

Guglielmo

A bruciare l'uscita di arduino

Io e Fabio abbiamo deciso che nulla che derivi da pighi vale la pena di essere preso in considerazione

Troppi errori e troppe approssimazioni

E comunque non si da retta a un ladro...

... mah ... in realtà s'è trovato fregato anche lui e ... non ha più saputo cosa fare ... ed alla fine è risultato il capro espiatorio di tutta la cosa ... :roll_eyes:

Comunque questo è un'altro discorso ...

@Ansible: senza quello Zener dovrebbe andare.

Guglielmo

Grazie Guglielmo.

Ho trovato alcuni link che aiutano a comprendere meglio il circuito di Argus Controller:

MotorSpeedControlSchematic

E' un tipo di controllo chiamato "low-side switch", che prevede appunto un Transistor NPN.
Come spiegato nella pagina Github di Mariuste, il codice permette lo spegnimento delle ventole con PWM = 0%, ma l'effettivo spegnimento dipende dalla tipologia di ventola (comunque a 4-pin), ed è supportato solo dal tipo "B" e "C", ma non dal tipo "A" (secondo specifiche Intel).
Non ho trovato riferimenti ulteriori circa le tipologie A, B, C, delle ventole per pc, ma Mariuste suggerisce come verificarlo.
Basta collegare la ventola ad una alimentazione a 12V (gira al massimo) e poi collegare il pin PWM a GND. Se la ventola è di tipo "B" o "C", si spegne.
Con le mie ventole (le Gammaxx citate e una classica Intel), connettendo PWM a GND, girano al minimo. Ne deduco che sono entrambe di tipo "A".

Mariuste aggiuge che è possibile modificare il circuito in modo da poter spegnere le ventole con PWM = 0%. Basterebbe aggiungere un "High-side switch", composto da un PMOS + NMOS oppure da un transistor PNP+NPN.
In rete si trovano schemi specifici per integrare nel circuito questa funzionalità. Personalmente, non la sento indispensabile.

In quest'altro link, viene mostrato un circuito analogo a quello di Argus, per la gestione del pin "Sense".

E proprio circa la gestione del pin "Sense" delle ventole (Arduino Pin 2, 3), non sono riuscito a trovarne traccia nel codice di Argus, ne in quello di Mariuste, che a giudicare dal suo schema, nemmeno lo ha collegato.

Altro aspetto interessante l'impiego del diodo, non tra PWM e GND, come nel circuito che avete allegato, piuttosto tra il Collettore del Transistor (pin PWM) e +12V della ventola (Con il Catodo verso i +12V, e l'anodo verso il collettore).

Come citato nel post arduino:

"Il diodo è chiamato diodo flyback e viene utilizzato per impedire che la rotazione della ventola crei una corrente opposta e danneggi il circuito."
Il diodo di Flayback messo in questo modo è mostrato in diverse altre pagine.
transistor-amplifier-circuit-1

Che ne pensate?
Il circuito di Argus non prevede diodi.
Sarebbe il caso di aggiungerlo?

Il motivo per cui continuo a parlarne (...no, non siamo parenti e non ho percentuali) è solo perchè avrei già preparato l'hardware.

Ho scelto proprio questo circuito, per alcuni motivi:
A - Impiega esattamente i sensori scelti (LCD a parte), ha due ventole pre-impostate e una gestione fast PWM (25 Khz.)
B - Il circuito è semplice e abbastanza ben descritto.
C - Ha uno spazio su Github con gli sketch per Arduino Nano e una Guida online che descrive il suo Software per Windows di gestione avanzata delle ventole. Per questo, credo sia altamente improbabile che che il suo schema si "sbagliato". Ragionevolmente, lo avrebbe corretto o eliminato.

Se non ci sono ulteriori osservazioni sul circuito di Argus, sarei per provarlo,
ma come dicevo, nessuno degli sketch che ho trovato prevede il display.
Qualcuno vuole aiutarmi con il codice?

Ri-allego gli sketch trovati:

Ajaust_fan_control.ino (5,3 KB)
ArgusController1.ino (7,1 KB)
Mariuste_Fan_Temp_Control.ino (6,8 KB)

Va bene, prendo atto che nessuno ha commenti sul circuito di Argus. :roll_eyes:

E per quanto riguarda il codice?
Davvero non c'è nessuno che possa aiutarmi a metterlo insieme?

Il controllo Fast PWM delle ventole in funzione della temperatura del DS18B20, dovrebbe esserci già negli sketch allegati.
Suppongo basti capire quale dei tre è meglio utilizzare (e/o adattare) e aggiungere il controllo del Display...

E' un classico transitor BJT NPN usato come switch e un partitore per leggere il segnale di feedback tachimetrico della ventola.

Non è che ci sia poi molto da dire...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.