Sommario:

Controllo PWM fai da te per i fan del PC: 12 passaggi
Controllo PWM fai da te per i fan del PC: 12 passaggi

Video: Controllo PWM fai da te per i fan del PC: 12 passaggi

Video: Controllo PWM fai da te per i fan del PC: 12 passaggi
Video: Controller manuale per regolare la velocità delle ventole del PC 2024, Dicembre
Anonim
Controllo PWM fai da te per i fan del PC
Controllo PWM fai da te per i fan del PC

Questo Instructable descrive la costruzione di un controller PWM della ventola del PC da 12 V completo di tutte le funzionalità. Il design può controllare fino a 16 ventole per computer a 3 pin. Il design utilizza una coppia di circuiti integrati a segnale misto configurabili Dialog GreenPAK™ per controllare il ciclo di lavoro di ciascuna ventola. Include anche due modi per modificare la velocità della ventola:

un. con encoder in quadratura/rotativo

B. con un'applicazione Windows costruita in C# che comunica con GreenPAK tramite I2C.

Di seguito abbiamo descritto i passaggi necessari per capire come è stato programmato il chip GreenPAK per creare il controllo PWM per le ventole del PC. Tuttavia, se desideri solo ottenere il risultato della programmazione, scarica il software GreenPAK per visualizzare il file di progettazione GreenPAK già completato. Collega il kit di sviluppo GreenPAK al tuo computer e premi il programma per creare l'IC personalizzato per il controllo PWM per i fan del PC.

Passaggio 1: diagramma a blocchi del sistema

Diagramma a blocchi di sistema
Diagramma a blocchi di sistema

Passaggio 2: progettazione del decodificatore rotativo SLG46108

Design del decodificatore rotativo SLG46108
Design del decodificatore rotativo SLG46108
Design del decodificatore rotativo SLG46108
Design del decodificatore rotativo SLG46108
Design del decodificatore rotativo SLG46108
Design del decodificatore rotativo SLG46108

Un encoder rotativo viene utilizzato per aumentare o diminuire manualmente il ciclo di lavoro delle ventole. Questo dispositivo emette impulsi sulle sue uscite Canale A e Canale B che sono distanti 90 °. Vedere AN-1101: Decodificatore di quadratura senza clock per ulteriori informazioni su come funziona un encoder rotativo.

È possibile creare un decodificatore rotante con clock utilizzando un Dialog GreenPAK SLG46108 per elaborare i segnali del canale A e del canale B ed emetterli come impulsi in senso antiorario (CCW) e orario (CW).

Quando il canale A precede il canale B, il progetto emette un breve impulso in CW. Quando il canale B precede il canale A, emette un breve impulso su CCW

Tre DFF sincronizzano l'ingresso del canale A con il clock. Allo stesso modo, il pipe delay con OUT0 impostato su due DFF e OUT1 impostato su tre DFF crea la stessa funzionalità per il canale B.

Per creare uscite CW e CCW, utilizzare alcune LUT, per ulteriori informazioni sul design di questo decodificatore rotativo standard, visitare questo sito Web.

Il decodificatore rotativo GreenPAK riceverà gli impulsi di ingresso A e B ed emetterà gli impulsi CW e CCW come mostrato nella Figura 4.

Il circuito dopo le porte XOR assicura che non ci sarà mai un impulso CW e un impulso CCW allo stesso tempo, consentendo qualsiasi errore con l'encoder rotante. Il ritardo del fronte di discesa di 8 ms sui segnali CW e CCW li costringe a rimanere alti per 8 ms più un ciclo di clock, che è necessario per i GreenPAK SLG46826 a valle.

Passaggio 3: progettazione del controller della ventola SLG46826

SLG46826 Design del controller della ventola
SLG46826 Design del controller della ventola

Passaggio 4: generazione PWM con contatori offset

Generazione PWM con contatori offset
Generazione PWM con contatori offset
Generazione PWM con contatori offset
Generazione PWM con contatori offset

Una coppia di contatori di offset con lo stesso periodo viene utilizzata per generare il segnale PWM. Il primo contatore imposta un DFF e il secondo lo reimposta, creando un segnale PWM con ciclo di lavoro coerente come mostrato nella Figura 6 e nella Figura 7.

CNT6 imposta DFF10 e l'uscita invertita di CNT1 ripristina DFF10. I pin 18 e 19 vengono utilizzati per inviare il segnale PWM a circuiti esterni

Passaggio 5: controllo del ciclo di lavoro con iniezione e salto dell'orologio

Controllo del ciclo di lavoro con iniezione e salto dell'orologio
Controllo del ciclo di lavoro con iniezione e salto dell'orologio
Controllo del ciclo di lavoro con iniezione e salto dell'orologio
Controllo del ciclo di lavoro con iniezione e salto dell'orologio

Il controller della ventola riceve i segnali CW e CCW come input dal decodificatore rotante e li utilizza per aumentare o diminuire il segnale PWM che controlla la velocità della ventola. Ciò si ottiene con diversi componenti logici digitali.

Il ciclo di lavoro deve aumentare quando viene ricevuto un impulso CW. Questo viene fatto iniettando un impulso di clock extra nel blocco CNT6, facendo in modo che emetta un ciclo di clock prima di quanto avrebbe altrimenti. Questo processo è mostrato nella Figura 8.

CNT1 sta ancora ricevendo un clock a una velocità costante, ma CNT6 ha un paio di clock in più iniettati. Ogni volta che c'è un clock in più al contatore, sposta la sua uscita di un periodo di clock a sinistra.

Al contrario, per ridurre il duty cycle, saltare un impulso di clock per CNT6 come mostrato nella Figura 9. CNT1 viene ancora sincronizzato a una velocità costante e ci sono impulsi di clock saltati per CNT6, dove il contatore non è stato sincronizzato quando avrebbe dovuto a. In questo modo l'uscita di CNT6 viene spinta a destra di un periodo di clock alla volta, accorciando il ciclo di lavoro PWM dell'uscita.

La funzionalità di clock injecting e clock skipping viene eseguita con l'uso di alcuni elementi logici digitali all'interno del GreenPAK. Una coppia di blocchi multifunzione viene utilizzata per creare una coppia di combinazioni di latch/rivelatore di bordi. LUT0 a 4 bit viene utilizzato per eseguire il mux tra il segnale di clock generale (CLK/8) e i segnali di clock injecting o clock skipping. Questa funzionalità è descritta più dettagliatamente nel passaggio 7.

Passaggio 6: ingresso PULSANTE

PULSANTE Ingresso
PULSANTE Ingresso

L'ingresso BUTTON viene antirimbalzo per 20 ms, quindi utilizzato per attivare un latch che determina se questo particolare chip è selezionato. Se è selezionato, la LUT a 4 bit passa i segnali di salto del clock o di iniezione. Se il chip non è selezionato, la LUT a 4 bit passa semplicemente il segnale CLK/8.

Passaggio 7: prevenzione del rollover del ciclo di lavoro

Prevenire il rollover del ciclo di lavoro
Prevenire il rollover del ciclo di lavoro
Prevenire il rollover del ciclo di lavoro
Prevenire il rollover del ciclo di lavoro
Prevenire il rollover del ciclo di lavoro
Prevenire il rollover del ciclo di lavoro

I latch RS LUT5 a 3 bit e LUT3 a 3 bit vengono utilizzati per assicurarsi che non sia possibile iniettare o saltare così tanti clock da far saltare i contatori di offset. Questo per evitare che il sistema raggiunga il ciclo di lavoro del 100% e poi passi a un ciclo di lavoro dell'1% se riceve un altro clock iniettato.

I latch RS impediscono che ciò accada agganciando gli ingressi ai blocchi multifunzione quando il sistema è a un ciclo di clock dal rollover. Una coppia di DFF ritarda i segnali PWM_SET e PWM_nRST di un periodo di clock, come mostrato nella Figura 11.

Una coppia di LUT viene utilizzata per creare la logica necessaria. Se il duty cycle è così basso che il segnale PWM_SET ritardato si verifica contemporaneamente al segnale PWM_nRST, un'ulteriore diminuzione del duty cycle causerà un rollover.

Analogamente, se ci si avvicina al duty cycle massimo, tale che il segnale PWM_nRST ritardato si presenti contemporaneamente al segnale PWM_SET, è necessario evitare qualsiasi ulteriore aumento del duty cycle. In questo caso, ritardare il segnale nRST di due cicli di clock per garantire che il sistema non passi dal 99% all'1%.

Passaggio 8: controllo del ciclo di lavoro con I2C

Controllo del ciclo di lavoro con I2C
Controllo del ciclo di lavoro con I2C
Controllo del ciclo di lavoro con I2C
Controllo del ciclo di lavoro con I2C
Controllo del ciclo di lavoro con I2C
Controllo del ciclo di lavoro con I2C

Questo design incorpora un altro modo per controllare il ciclo di lavoro diverso dal salto di clock/clock injecting. È possibile utilizzare un microcontrollore esterno per scrivere comandi I2C sul GreenPAK per impostare il ciclo di lavoro.

Il controllo del ciclo di lavoro su I2C richiede che il controller esegua una sequenza di comandi specifica. Questi comandi sono mostrati in ordine nella Tabella 1. Una "x" indica un bit che non deve cambiare, "[" indica un bit di START e "]" indica un bit di STOP

Il blocco PDLY genera un breve impulso alto attivo sul fronte di discesa del segnale CLK/8, chiamato !CLK/8. Quel segnale viene utilizzato per sincronizzare DFF14 a una frequenza costante. Quando I2C_SET diventa alto in modo asincrono, il successivo fronte di salita di !CLK/8 fa sì che DFF14 emetta HIGH, il che attiva CNT5 OneShot. OneShot viene eseguito per il numero di cicli di clock che l'utente ha scritto come specificato nel comando I2C "Write to CNT5" nella Tabella 1. In questo caso, sono 10 cicli di clock. OneShot consente all'oscillatore a 25 MHz di funzionare esattamente per la sua durata e non di più, in modo che LUT0 a 3 bit riceva il numero di cicli di clock che sono stati scritti su CNT5.

La Figura 15 mostra questi segnali, dove i clock rossi sono quelli che vengono inviati a LUT0 a 3 bit, che li passa a CNT6 (il contatore PWM_SET), creando così l'offset per la generazione del duty cycle.

Passaggio 9: lettura del tachimetro

Lettura del tachimetro
Lettura del tachimetro
Lettura del tachimetro
Lettura del tachimetro

Se lo si desidera, l'utente può leggere il valore del tachimetro su I2C per tenere traccia della velocità di rotazione della ventola leggendo il valore CNT2. CNT2 viene incrementato ogni volta che ACMP0H ha un fronte di salita e può essere resettato in modo asincrono con un comando I2C. Si noti che questa è una funzione opzionale e la soglia di ACMP0H dovrà essere modificata in base alle specifiche della particolare ventola utilizzata.

Passaggio 10: progettazione del circuito esterno

Progettazione di circuiti esterni
Progettazione di circuiti esterni

Il circuito esterno è abbastanza semplice. C'è un pulsante collegato al Pin6 del GreenPAK per alternare se questo particolare dispositivo è selezionato per il controllo rotante e un LED collegato al Pin12 e Pin13 per indicare quando il dispositivo è selezionato.

Poiché la ventola funziona a 12 V, è necessaria una coppia di FET per controllarne la commutazione. Il Pin18 e il Pin19 di GreenPAK pilotano un nFET. Quando l'nFET è acceso, tira il gate del pFET LOW, che collega la ventola a +12 V. Quando l'nFET è spento, il gate del PFET viene sollevato dal resistore da 1 kΩ, che disconnette la ventola da +12V.

Passaggio 11: progettazione PCB

Progettazione PCB
Progettazione PCB

Per prototipare il design sono stati assemblati un paio di PCB. Il PCB a sinistra è il "Fan Controller", che ospita l'encoder rotativo, il jack da 12 V, SLG46108 GreenPAK e i connettori per la scheda breakout FT232H da USB a I2C. I due PCB sulla destra sono "Fan Boards", che contengono i GreenPAK SLG46826, i pulsanti, gli interruttori, i LED e le intestazioni delle ventole.

Ogni Fan Board ha un'intestazione maschile nascosta sul lato sinistro e un'intestazione femminile sul lato destro in modo che possano essere collegate a margherita insieme. Ogni Fan Board può essere popolata con risorse per controllare in modo indipendente due ventole.

Passaggio 12: applicazione C#

Applicazione C#
Applicazione C#

È stata scritta un'applicazione C# per interfacciarsi con le Fan Board tramite il bridge USB-I2C FT232H. Questa applicazione può essere utilizzata per regolare la frequenza di ciascun ventilatore con i comandi I2C generati dall'applicazione.

L'applicazione esegue il ping di tutti i 16 indirizzi I2C una volta al secondo e popola la GUI con gli indirizzi slave presenti. In questo esempio Fan 1 (indirizzo slave 0001) e Fan 3 (indirizzo slave 0011) collegati alla scheda. È possibile apportare modifiche al ciclo di lavoro di ciascuna ventola singolarmente spostando la barra di scorrimento o digitando un valore compreso tra 0 e 256 nella casella di testo sotto la barra di scorrimento.

Conclusioni

Utilizzando questo design è possibile controllare in modo indipendente fino a 16 ventole (poiché ci sono 16 possibili indirizzi slave I2C) sia con un encoder rotativo che con un'applicazione C#. È stato dimostrato come generare un segnale PWM con una coppia di contatori di offset e come aumentare e diminuire il ciclo di lavoro di quel segnale senza rollover.

Consigliato: