Innehållsförteckning:

DIY PWM -kontroll för PC -fläktar: 12 steg
DIY PWM -kontroll för PC -fläktar: 12 steg

Video: DIY PWM -kontroll för PC -fläktar: 12 steg

Video: DIY PWM -kontroll för PC -fläktar: 12 steg
Video: ZFC39 PWM Fan controller 2024, November
Anonim
DIY PWM -kontroll för PC -fläktar
DIY PWM -kontroll för PC -fläktar

Denna instruktion beskriver att bygga en fullt utrustad 12 V PC-fläkt PWM-styrenhet. Designen kan styra upp till 16 3-stifts datorfläktar. Designen använder ett par Dialog GreenPAK ™ -konfigurerbara blandade IC: er för att styra varje fläkts arbetscykel. Det innehåller också två sätt att ändra fläktens hastighet:

a. med en kvadratur/roterande pulsgivare

b. med ett Windows -program inbyggt C# som kommunicerar med GreenPAK via I2C.

Nedan beskriver vi de steg som behövs för att förstå hur GreenPAK -chipet har programmerats för att skapa PWM -kontroll för PC -fläktar. Men om du bara vill få resultatet av programmeringen, ladda ner GreenPAK -programvara för att se den redan färdiga GreenPAK -designfilen. Anslut GreenPAK Development Kit till din dator och tryck på programmet för att skapa anpassad IC för PWM -kontroll för PC -fläktar.

Steg 1: Systemblockdiagram

Systemblock Diagram
Systemblock Diagram

Steg 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

En roterande kodare används för att öka eller minska fläktarnas driftscykel manuellt. Denna enhet matar ut pulser på sina kanal A- och kanal B -utgångar som är 90 ° från varandra. Se AN-1101: Unclocked Quadrature Decoder för mer information om hur en roterande kodare fungerar.

En klockad roterande avkodare kan skapas med en Dialog GreenPAK SLG46108 för att bearbeta kanal A- och kanal B -signalerna och mata ut dem som moturs (CCW) och medurs (CW) pulser.

När kanal A leder kanal B, ger designen en kort puls på CW. När kanal B leder kanal A matar den ut en kort puls på CCW

Tre DFF: er synkroniserar kanal A -ingången med klockan. På samma sätt skapar rörfördröjningen med OUT0 inställd på två DFF och OUT1 inställd på tre DFF samma funktion för kanal B.

För att skapa CW- och CCW -utgångar, använd några LUT, för mer information om denna standard roterande dekoder -design, besök denna webbplats.

GreenPAK Rotary Decoder tar emot ingångspulser A och B och matar ut CW- och CCW -pulserna som visas i figur 4.

Kretsen efter XOR -grindarna säkerställer att det aldrig kommer att finnas en CW -puls och en CCW -puls samtidigt, vilket möjliggör eventuella fel med den roterande givaren. 8 ms fallande kantfördröjning på CW- och CCW -signalerna tvingar dem att hålla sig höga i 8 ms plus en klockcykel, vilket är nödvändigt för nedströms SLG46826 GreenPAK.

Steg 3: SLG46826 Design av fläktkontroller

SLG46826 Fläktkontrolldesign
SLG46826 Fläktkontrolldesign

Steg 4: PWM -generation med förskjutningsräknare

PWM -generation med förskjutningsräknare
PWM -generation med förskjutningsräknare
PWM -generation med förskjutningsräknare
PWM -generation med förskjutningsräknare

Ett par förskjutningsräknare med samma period används för att generera PWM -signalen. Den första räknaren ställer in en DFF, och den andra återställer den, vilket skapar en konsekvent PWM -signal för arbetscykeln som visas i figur 6 och figur 7.

CNT6 ställer in DFF10 och den inverterade utsignalen från CNT1 återställer DFF10. Stift 18 och 19 används för att mata ut PWM -signalen till externa kretsar

Steg 5: Duty Cycle Control med klockinjektion och klockhoppning

Driftcykelkontroll med klockinjektion och klockhoppning
Driftcykelkontroll med klockinjektion och klockhoppning
Driftcykelkontroll med klockinjektion och klockhoppning
Driftcykelkontroll med klockinjektion och klockhoppning

Fläktstyrenheten tar emot CW- och CCW -signalerna som ingångar från den roterande avkodaren och använder dem för att antingen öka eller minska PWM -signalen som styr fläkthastigheten. Detta uppnås med flera digitala logikkomponenter.

Driftscykeln måste öka när en CW -puls tas emot. Detta görs genom att injicera en extra klockpuls i CNT6 -blocket, vilket får den att mata ut en klockcykel tidigare än den annars skulle ha. Denna process visas i figur 8.

CNT1 klockas fortfarande i konstant takt, men CNT6 har ett par extra klockor injicerade. Varje gång det finns en extra klocka till räknaren, flyttar den sin utgång en klockperiod till vänster.

Omvänt, för att minska arbetscykeln, hoppa över en klockpuls för CNT6 som visas i figur 9. CNT1 klockas fortfarande med en konstant hastighet, och det finns hoppade klockpulser för CNT6, där räknaren inte fick klockan när den var tänkt till. På detta sätt trycks utmatningen från CNT6 åt höger med en klockperiod i taget, vilket förkortar PWM -driftscykeln.

Klockinjektionen och klockhoppningsfunktionen utförs med användning av några digitala logiska element i GreenPAK. Ett par multifunktionsblock används för att skapa ett par lås/kantdetektorkombinationer. 4-bitars LUT0 används för att muxa mellan den allmänna klocksignalen (CLK/8) och klockinsprutnings- eller klockhoppningssignalerna. Denna funktion beskrivs mer detaljerat i steg 7.

Steg 6: KNAPP -ingång

KNAPP Ingång
KNAPP Ingång

KNAPP -ingången avbryts i 20 ms och används sedan för att växla en spärr som avgör om just detta chip är valt. Om det väljs, passerar 4-bitars LUT klockans hoppning eller injektionssignaler. Om chipet inte väljs passerar 4-bitars LUT helt enkelt CLK/8-signalen.

Steg 7: Förhindra rullning av arbetscykeln

Förhindra rullning av arbetscykeln
Förhindra rullning av arbetscykeln
Förhindra rullning av arbetscykeln
Förhindra rullning av arbetscykeln
Förhindra rullning av arbetscykeln
Förhindra rullning av arbetscykeln

RS-spärrarna 3-bitars LUT5 och 3-bitars LUT3 används för att se till att du inte kan injicera eller hoppa över så många klockor att förskjutningsräknarna välter. Detta för att undvika att systemet når 100 % driftscykel och sedan rullar över till en 1 % driftscykel om det får en annan injicerad klocka.

RS -spärrarna förhindrar att detta händer genom att låsa ingångarna till multifunktionsblocken när systemet är en klockcykel borta från att välta. Ett par DFF: er fördröjer PWM_SET- och PWM_nRST -signalerna med en klockperiod som visas i figur 11.

Ett par LUT används för att skapa den nödvändiga logiken. Om arbetscykeln är så låg att den fördröjda PWM_SET -signalen inträffar samtidigt som PWM_nRST -signalen, kommer en ytterligare minskning av arbetscykeln att orsaka en övergång.

På samma sätt, när man närmar sig maximal driftscykel, så att den fördröjda PWM_nRST -signalen inträffar samtidigt som PWM_SET -signalen, är det nödvändigt att undvika ytterligare ökning av arbetscykeln. I det här fallet, fördröja nRST -signalen med två klockcykler för att säkerställa att systemet inte rullar från 99 % till 1 %.

Steg 8: Driftcykelkontroll med I2C

Driftcykelkontroll med I2C
Driftcykelkontroll med I2C
Driftcykelkontroll med I2C
Driftcykelkontroll med I2C
Driftcykelkontroll med I2C
Driftcykelkontroll med I2C

Denna design innehåller ett annat sätt att styra arbetscykeln än klockhoppning/klockinsprutning. En extern mikrokontroller kan användas för att skriva I2C -kommandon till GreenPAK för att ställa in driftscykeln.

För att styra arbetscykeln över I2C krävs att regulatorn utför en specifik kommandosekvens. Dessa kommandon visas i ordning i tabell 1. Ett "x" indikerar en bit som inte bör ändras, "[" indikerar en START -bit och "]" indikerar en STOP -bit

PDLY -blocket genererar en kort aktiv hög puls på den fallande kanten av CLK/8 -signalen, som kallas! CLK/8. Den signalen används för att klocka DFF14 med en konstant frekvens. När I2C_SET går högt asynkront, får nästa stigande kant på! CLK/8 DFF14 att mata ut HIGH, vilket utlöser CNT5 OneShot. OneShot körs för antalet klockcykler som användaren skrev enligt specifikationen i "Skriv till CNT5" I2C -kommandot i tabell 1. I det här fallet är det 10 klockcykler. OneShot tillåter 25 MHz-oscillatorn att köra exakt under dess längd och inte längre, så att 3-bitars LUT0 tar emot antalet klockcykler som skrevs till CNT5.

Figur 15 visar dessa signaler, där de röda klockorna är de som skickas till 3-bitars LUT0, som skickar dem in i CNT6 (PWM_SET-räknaren), och skapar därmed förskjutningen för driftcykelgenerering.

Steg 9: Varvräknare

Varvräknare avläsning
Varvräknare avläsning
Varvräknare avläsning
Varvräknare avläsning

Om så önskas kan användaren läsa varvräknaren över I2C för att spåra hur snabbt fläkten vrider genom att läsa CNT2 -värdet. CNT2 ökas varje gång ACMP0H har en stigande kant och kan asynkront återställas med ett I2C -kommando. Observera att detta är en valfri funktion, och tröskeln för ACMP0H måste justeras enligt specifikationerna för den specifika fläkten som används.

Steg 10: Extern kretsdesign

Extern kretsdesign
Extern kretsdesign

Den externa kretsen är ganska enkel. Det finns en tryckknapp ansluten till Pin6 på GreenPAK för att växla om just denna enhet är vald för roterande styrning, och en LED ansluten till Pin12 och Pin13 för att indikera när enheten är vald.

Eftersom fläkten går från 12 V krävs ett par FET: er för att styra dess omkoppling. GreenPAK: s Pin18 och Pin19 driver en nFET. När nFET slås på drar det porten till pFET LOW, som ansluter fläkten till +12 V. När nFET är avstängd, dras PFET -porten upp av 1 kΩ motståndet, som kopplar bort fläkten från +12 V.

Steg 11: PCB -design

PCB -design
PCB -design

För att prototypa konstruktionen monterades ett par kretskort. Kretskortet till vänster är "Fan Controller", som rymmer roterande givare, 12 V -uttag, SLG46108 GreenPAK och kontakter för FT232H USB till I2C -brytkort. De två kretskorten till höger är "Fan Boards", som innehåller SLG46826 GreenPAK, tryckknappar, omkopplare, lysdioder och fläkthuvuden.

Varje fläktbräda har ett höljt manligt sidhuvud på vänster sida och ett kvinnligt huvud på höger sida så att de kan kopplas ihop med tusensköna. Varje Fan Board kan fyllas med resurser för att självständigt styra två fans.

Steg 12: C# -applikation

C# Ansökan
C# Ansökan

En C# -applikation skrevs för att ansluta till fläktkorten via FT232H USB-I2C-bron. Denna applikation kan användas för att justera frekvensen för varje fläkt med I2C -kommandon som genereras av applikationen.

Programmet pingar alla 16 I2C -adresser en gång per sekund och fyller i GUI: n med de slavadresser som finns. I detta exempel är fläkt 1 (slavadress 0001) och fläkt 3 (slavadress 0011) anslutna till kortet. Justeringar av varje fläkt individuellt kan göras genom att flytta reglaget eller genom att skriva ett värde från 0-256 i textrutan under reglaget.

Slutsatser

Med denna design är det möjligt att självständigt styra upp till 16 fläktar (eftersom det finns 16 möjliga I2C -slavadresser) antingen med en roterande kodare eller med en C# -applikation. Det har visats hur man genererar en PWM -signal med ett par förskjutningsräknare och hur man ökar och minskar signalcykeln utan att välta.

Rekommenderad: