Inhaltsverzeichnis:

DIY PWM-Steuerung für PC-Lüfter - Gunook
DIY PWM-Steuerung für PC-Lüfter - Gunook

Video: DIY PWM-Steuerung für PC-Lüfter - Gunook

Video: DIY PWM-Steuerung für PC-Lüfter - Gunook
Video: Lüftersteuerung temperaturgeregelt über einen Arduino einfach zum nachbauen 2024, Juli
Anonim
DIY PWM-Steuerung für PC-Lüfter
DIY PWM-Steuerung für PC-Lüfter

Dieses Instructable beschreibt den Aufbau eines voll ausgestatteten 12-V-PC-Lüfter-PWM-Controllers. Das Design kann bis zu 16 3-Pin-Computerlüfter steuern. Das Design verwendet ein Paar konfigurierbarer Mixed-Signal-ICs von Dialog GreenPAK™, um den Arbeitszyklus jedes Lüfters zu steuern. Es enthält auch zwei Möglichkeiten, die Geschwindigkeit des Lüfters zu ändern:

A. mit Quadratur-/Drehgeber

B. mit einer in C# erstellten Windows-Anwendung, die über I2C mit dem GreenPAK kommuniziert.

Im Folgenden haben wir die erforderlichen Schritte beschrieben, um zu verstehen, wie der GreenPAK-Chip programmiert wurde, um die PWM-Steuerung für PC-Lüfter zu erstellen. Wenn Sie jedoch nur das Ergebnis der Programmierung erhalten möchten, laden Sie die GreenPAK-Software herunter, um die bereits fertige GreenPAK-Designdatei anzuzeigen. Schließen Sie das GreenPAK Development Kit an Ihren Computer an und klicken Sie auf Programm, um den benutzerdefinierten IC für die PWM-Steuerung für PC-Lüfter zu erstellen.

Schritt 1: Systemblockdiagramm

Systemblockdiagramm
Systemblockdiagramm

Schritt 2: SLG46108 Rotary Decoder Design

SLG46108 Rotary Decoder Design
SLG46108 Rotary Decoder Design
SLG46108 Rotary Decoder Design
SLG46108 Rotary Decoder Design
SLG46108 Rotary Decoder Design
SLG46108 Rotary Decoder Design

Ein Drehgeber wird verwendet, um die Einschaltdauer der Lüfter manuell zu erhöhen oder zu verringern. Dieses Gerät gibt an seinen Ausgängen von Kanal A und Kanal B Impulse aus, die um 90 ° voneinander entfernt sind. Siehe AN-1101: Ungetakteter Quadratur-Decoder für weitere Informationen zur Funktionsweise eines Drehgebers.

Ein getakteter Drehdecoder kann mit einem Dialog GreenPAK SLG46108 erstellt werden, um die Signale von Kanal A und Kanal B zu verarbeiten und sie als Impulse gegen den Uhrzeigersinn (CCW) und im Uhrzeigersinn (CW) auszugeben.

Wenn Kanal A Kanal B vorauseilt, gibt das Design einen kurzen Impuls auf CW aus. Wenn Kanal B Kanal A vorauseilt, gibt er einen kurzen Impuls auf CCW. aus

Drei DFFs synchronisieren den Eingang von Kanal A mit der Uhr. Ebenso erzeugt das Pipe Delay mit OUT0 auf zwei DFFs und OUT1 auf drei DFFs die gleiche Funktionalität für Kanal B.

Um CW- und CCW-Ausgaben zu erstellen, verwenden Sie einige LUTs. Weitere Informationen zu diesem Standard-Rotationsdecoder-Design finden Sie auf dieser Website.

Der GreenPAK Rotary Decoder empfängt die Eingangsimpulse A und B und gibt die CW- und CCW-Impulse aus, wie in Abbildung 4 gezeigt.

Die Schaltung nach den XOR-Gattern stellt sicher, dass es nie gleichzeitig einen CW-Impuls und einen CCW-Impuls gibt, was jegliche Fehler mit dem Drehgeber zulässt. Die Verzögerung der fallenden Flanke von 8 ms bei den CW- und CCW-Signalen zwingt sie dazu, 8 ms plus einen Taktzyklus hoch zu bleiben, was für die nachgeschalteten SLG46826 GreenPAKs erforderlich ist.

Schritt 3: SLG46826 Lüftersteuerung Design

SLG46826 Lüftersteuerungsdesign
SLG46826 Lüftersteuerungsdesign

Schritt 4: PWM-Generierung mit Offset-Zählern

PWM-Generierung mit Offset-Zählern
PWM-Generierung mit Offset-Zählern
PWM-Generierung mit Offset-Zählern
PWM-Generierung mit Offset-Zählern

Ein Paar Offset-Zähler mit gleicher Periode wird verwendet, um das PWM-Signal zu erzeugen. Der erste Zähler setzt einen DFF und der zweite setzt ihn zurück, wodurch ein konsistentes Tastverhältnis-PWM-Signal erzeugt wird, wie in Abbildung 6 und Abbildung 7 gezeigt.

CNT6 setzt DFF10 und der invertierte Ausgang von CNT1 setzt DFF10 zurück. Pins 18 und 19 werden verwendet, um das PWM-Signal an externe Schaltungen auszugeben

Schritt 5: Duty Cycle Control mit Clock Injection und Clock Skipping

Duty Cycle Control mit Clock Injection und Clock Skipping
Duty Cycle Control mit Clock Injection und Clock Skipping
Duty Cycle Control mit Clock Injection und Clock Skipping
Duty Cycle Control mit Clock Injection und Clock Skipping

Die Lüftersteuerung empfängt die CW- und CCW-Signale als Eingaben vom Drehdecoder und verwendet sie, um das PWM-Signal, das die Lüftergeschwindigkeit steuert, entweder zu erhöhen oder zu verringern. Dies wird mit mehreren digitalen Logikkomponenten erreicht.

Das Tastverhältnis muss sich erhöhen, wenn ein CW-Impuls empfangen wird. Dies geschieht, indem ein zusätzlicher Taktimpuls in den CNT6-Block injiziert wird, wodurch dieser einen Taktzyklus früher ausgibt, als es sonst der Fall wäre. Dieser Vorgang ist in Abbildung 8 dargestellt.

CNT1 wird immer noch mit einer konstanten Rate getaktet, aber CNT6 hat ein paar zusätzliche Takte injiziert. Jedes Mal, wenn dem Zähler ein zusätzlicher Takt anliegt, verschiebt er seinen Ausgang um eine Taktperiode nach links.

Um das Tastverhältnis zu verringern, überspringen Sie umgekehrt einen Taktimpuls für CNT6, wie in Abbildung 9 gezeigt. CNT1 wird immer noch mit einer konstanten Rate getaktet, und es gibt übersprungene Taktimpulse für CNT6, bei denen der Zähler nicht wie erwartet getaktet wurde zu. Auf diese Weise wird der Ausgang von CNT6 jeweils um eine Taktperiode nach rechts verschoben, wodurch der PWM-Arbeitszyklus des Ausgangs verkürzt wird.

Die Taktinjektions- und Taktüberspringfunktionalität wird unter Verwendung einiger digitaler Logikelemente innerhalb des GreenPAK ausgeführt. Ein Paar von Multifunktionsblöcken wird verwendet, um ein Paar von Latch-/Flankendetektor-Kombinationen zu erstellen. 4-Bit-LUT0 wird verwendet, um zwischen dem allgemeinen Taktsignal (CLK/8) und den taktinjizierenden oder taktüberspringenden Signalen zu muxen. Diese Funktionalität wird in Schritt 7 genauer beschrieben.

Schritt 6: TASTE-Eingabe

TASTE Eingang
TASTE Eingang

Der BUTTON-Eingang wird 20 ms lang entprellt und dann verwendet, um einen Latch umzuschalten, der bestimmt, ob dieser bestimmte Chip ausgewählt ist. Wenn es ausgewählt ist, übergibt die 4-Bit-LUT die Taktüberspring- oder -injektionssignale. Wenn der Chip nicht ausgewählt ist, übergibt die 4-Bit-LUT einfach das CLK/8-Signal.

Schritt 7: Duty-Cycle-Rollover verhindern

Verhindern von Duty-Cycle-Rollover
Verhindern von Duty-Cycle-Rollover
Verhindern von Duty-Cycle-Rollover
Verhindern von Duty-Cycle-Rollover
Verhindern von Duty-Cycle-Rollover
Verhindern von Duty-Cycle-Rollover

Die RS-Latches 3-Bit-LUT5 und 3-Bit-LUT3 werden verwendet, um sicherzustellen, dass Sie nicht so viele Takte einspeisen oder überspringen können, dass die Offset-Zähler überlaufen. Dies soll verhindern, dass das System 100 % Duty Cycle erreicht und dann auf 1 % Duty Cycle übergeht, wenn es einen weiteren eingespeisten Takt empfängt.

Die RS-Latches verhindern dies, indem sie die Eingänge der Multifunktionsblöcke zwischenspeichern, wenn das System einen Taktzyklus vom Rollover entfernt ist. Ein Paar DFFs verzögert die Signale PWM_SET und PWM_nRST um eine Taktperiode, wie in Abbildung 11 gezeigt.

Ein Paar von LUTs wird verwendet, um die erforderliche Logik zu erstellen. Wenn das Tastverhältnis so niedrig ist, dass das verzögerte PWM_SET-Signal gleichzeitig mit dem PWM_nRST-Signal auftritt, führt eine weitere Verringerung des Tastverhältnisses zu einem Überschlag.

In ähnlicher Weise ist es bei Annäherung an den maximalen Arbeitszyklus, so dass das verzögerte PWM_nRST-Signal gleichzeitig mit dem PWM_SET-Signal auftritt, erforderlich, jede weitere Erhöhung des Arbeitszyklus zu vermeiden. Verzögern Sie in diesem Fall das nRST-Signal um zwei Taktzyklen, um sicherzustellen, dass das System nicht von 99 % auf 1 % überrollt.

Schritt 8: Duty Cycle Control mit I2C

Duty Cycle Control mit I2C
Duty Cycle Control mit I2C
Duty Cycle Control mit I2C
Duty Cycle Control mit I2C
Duty Cycle Control mit I2C
Duty Cycle Control mit I2C

Dieses Design beinhaltet eine andere Möglichkeit, den Arbeitszyklus anders als das Taktüberspringen/Taktinjizieren zu steuern. Ein externer Mikrocontroller kann verwendet werden, um I2C-Befehle an das GreenPAK zu schreiben, um den Arbeitszyklus einzustellen.

Die Steuerung des Arbeitszyklus über I2C erfordert, dass der Controller eine bestimmte Befehlssequenz ausführt. Diese Befehle sind in Tabelle 1 der Reihenfolge nach aufgeführt. Ein „x“zeigt ein Bit an, das sich nicht ändern sollte, „[“zeigt ein START-Bit an und „]“zeigt ein STOP-Bit an

Der PDLY-Block erzeugt an der fallenden Flanke des CLK/8-Signals einen kurzen aktiven High-Impuls, der als !CLK/8 bezeichnet wird. Dieses Signal wird verwendet, um DFF14 mit einer konstanten Frequenz zu takten. Wenn I2C_SET asynchron auf High geht, bewirkt die nächste steigende Flanke von !CLK/8, dass DFF14 HIGH ausgibt, was den CNT5 OneShot auslöst. Der OneShot läuft für die Anzahl von Taktzyklen, die der Benutzer geschrieben hat, wie im I2C-Befehl "Write to CNT5" in Tabelle 1 angegeben. In diesem Fall sind es 10 Taktzyklen. Der OneShot lässt den 25-MHz-Oszillator genau für seine Dauer laufen und nicht länger, sodass 3-Bit-LUT0 die Anzahl der Taktzyklen erhält, die auf CNT5 geschrieben wurden.

Abbildung 15 zeigt diese Signale, wobei die roten Takte diejenigen sind, die an die 3-Bit-LUT0 gesendet werden, die sie an CNT6 (den PWM_SET-Zähler) weiterleitet und so den Offset für die Duty-Cycle-Generierung erzeugt.

Schritt 9: Tachometerablesung

Tachometerstand
Tachometerstand
Tachometerstand
Tachometerstand

Auf Wunsch kann der Benutzer den Tachometerwert über I2C ablesen, um zu verfolgen, wie schnell sich der Lüfter dreht, indem er den CNT2-Wert liest. CNT2 wird bei jeder steigenden Flanke von ACMP0H inkrementiert und kann mit einem I2C-Befehl asynchron zurückgesetzt werden. Beachten Sie, dass dies eine optionale Funktion ist und der Schwellenwert von ACMP0H entsprechend den Spezifikationen des jeweiligen verwendeten Lüfters angepasst werden muss.

Schritt 10: Externes Schaltungsdesign

Externes Schaltungsdesign
Externes Schaltungsdesign

Die externe Schaltung ist ziemlich einfach. An Pin6 des GreenPAK ist ein Taster angeschlossen, um umzuschalten, ob dieses bestimmte Gerät für die Drehsteuerung ausgewählt ist, und eine LED, die an Pin12 und Pin13 angeschlossen ist, um anzuzeigen, wenn das Gerät ausgewählt ist.

Da der Lüfter mit 12 V läuft, ist ein Paar FETs erforderlich, um sein Schalten zu steuern. Die Pin18 und Pin19 des GreenPAK treiben einen nFET. Wenn der nFET eingeschaltet ist, zieht er das Gate des pFET LOW, der den Lüfter mit +12 V verbindet. Wenn der nFET ausgeschaltet ist, wird das Gate des PFET durch den 1 kΩ Widerstand hochgezogen, der den Lüfter trennt ab +12 V.

Schritt 11: PCB-Design

PCB-Design
PCB-Design

Um das Design zu prototypisieren, wurden ein paar PCBs montiert. Die Platine auf der linken Seite ist der "Fan Controller", der den Drehgeber, die 12-V-Buchse, den SLG46108 GreenPAK und die Anschlüsse für das FT232H USB-zu-I2C-Breakout-Board beherbergt. Die beiden Platinen auf der rechten Seite sind "Fan Boards", die die SLG46826 GreenPAKs, Taster, Schalter, LEDs und Lüfteranschlüsse enthalten.

Jedes Fan Board hat einen ummantelten Stecker auf der linken Seite und einen weiblichen Stecker auf der rechten Seite, so dass sie miteinander verkettet werden können. Jede Lüfterplatine kann mit Ressourcen bestückt werden, um zwei Lüfter unabhängig voneinander zu steuern.

Schritt 12: C#-Anwendung

C#-Anwendung
C#-Anwendung

Eine C#-Anwendung wurde geschrieben, um über die FT232H USB-I2C-Brücke mit den Lüfterplatinen zu kommunizieren. Diese Anwendung kann verwendet werden, um die Frequenz jedes Lüfters mit I2C-Befehlen anzupassen, die von der Anwendung generiert werden.

Die Anwendung pingt alle 16 I2C-Adressen einmal pro Sekunde und füllt die GUI mit den vorhandenen Slave-Adressen. In diesem Beispiel sind Lüfter 1 (Slave-Adresse 0001) und Lüfter 3 (Slave-Adresse 0011) an die Karte angeschlossen. Durch Verschieben des Schiebereglers oder durch Eingabe eines Wertes von 0-256 in das Textfeld unter dem Schieberegler können individuelle Anpassungen des Arbeitszyklus jedes Lüfters vorgenommen werden.

Schlussfolgerungen

Mit diesem Design ist es möglich, bis zu 16 Lüfter (da es 16 mögliche I2C-Slave-Adressen gibt) unabhängig entweder mit einem Drehgeber oder mit einer C#-Anwendung anzusteuern. Es wurde gezeigt, wie ein PWM-Signal mit einem Paar Offset-Zähler erzeugt wird und wie das Tastverhältnis dieses Signals ohne Überrollen erhöht und verringert wird.

Empfohlen: