Indholdsfortegnelse:

DIY PWM -kontrol til pc -fans: 12 trin
DIY PWM -kontrol til pc -fans: 12 trin

Video: DIY PWM -kontrol til pc -fans: 12 trin

Video: DIY PWM -kontrol til pc -fans: 12 trin
Video: как сделать простой инвертор 6000Вт, 4 трансформатора, синусоида, IRFz 44n, jlcpcb 2024, Juli
Anonim
DIY PWM -kontrol til pc -fans
DIY PWM -kontrol til pc -fans

Denne instruktionsbog beskriver opbygning af en fuldt udstyret 12 V pc-ventilator PWM-controller. Designet kan styre op til 16 3-bens computerblæsere. Designet bruger et par Dialog GreenPAK ™ -konfigurerbare blandede signal-IC'er til at styre hver ventilators driftscyklus. Det inkluderer også to måder at ændre ventilatorens hastighed på:

en. med en kvadratur/roterende encoder

b. med en Windows -applikation indbygget C#, der kommunikerer med GreenPAK gennem I2C.

Nedenfor beskrev vi de nødvendige trin for at forstå, hvordan GreenPAK -chippen er programmeret til at oprette PWM -kontrol til pc -fans. Men hvis du bare vil få resultatet af programmeringen, skal du downloade GreenPAK -software for at se den allerede gennemførte GreenPAK -designfil. Tilslut GreenPAK Development Kit til din computer, og tryk på programmet for at oprette den brugerdefinerede IC til PWM -kontrol til pc -fans.

Trin 1: Systemblokdiagram

Systemblokdiagram
Systemblokdiagram

Trin 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 roterende encoder bruges til at øge eller reducere ventilatorernes driftscyklus manuelt. Denne enhed udsender pulser på sine kanal A- og kanal B -udgange, der er 90 ° fra hinanden. Se AN-1101: Unlocked Quadrature Decoder for flere oplysninger om, hvordan en roterende encoder fungerer.

En roterende dekoder med ur kan oprettes ved hjælp af en Dialog GreenPAK SLG46108 til at behandle kanal A- og kanal B -signalerne og udsende dem som mod uret (CCW) og med uret (CW) pulser.

Når kanal A leder kanal B, udsender designet en kort puls på CW. Når kanal B fører kanal A, udsender den en kort puls på CCW

Tre DFF'er synkroniserer kanal A -indgangen med uret. På samme måde skaber rørforsinkelsen med OUT0 indstillet til to DFF'er og OUT1 indstillet til tre DFF'er den samme funktionalitet for kanal B.

For at oprette CW- og CCW -udgange skal du bruge et par LUT'er. Besøg dette websted for at få flere oplysninger om dette standard roterende dekoder -design.

GreenPAK Rotary Decoder modtager inputimpulser A og B og udsender CW- og CCW -impulser som vist i figur 4.

Kredsløbet efter XOR -portene sikrer, at der aldrig vil være en CW -puls og en CCW -puls på samme tid, hvilket muliggør enhver fejl med den roterende encoder. De 8 ms faldende kantforsinkelse på CW- og CCW -signalerne tvinger dem til at forblive høje i 8 ms plus en urcyklus, hvilket er nødvendigt for nedstrøms SLG46826 GreenPAK'er.

Trin 3: SLG46826 Design af ventilatorstyring

SLG46826 Ventilatorstyringsdesign
SLG46826 Ventilatorstyringsdesign

Trin 4: PWM -generation med forskydningstællere

PWM -generation med forskydningstællere
PWM -generation med forskydningstællere
PWM -generation med forskydningstællere
PWM -generation med forskydningstællere

Et par forskydningstællere med samme periode bruges til at generere PWM -signalet. Den første tæller indstiller en DFF, og den anden nulstiller den, hvilket skaber et konsekvent PWM -signal for driftscyklus som vist i figur 6 og figur 7.

CNT6 indstiller DFF10, og den omvendte output fra CNT1 nulstiller DFF10. Stifterne 18 og 19 bruges til at sende PWM -signalet til eksterne kredsløb

Trin 5: Duty Cycle Control med urinjektion og urspring

Duty Cycle Control med urinjektion og urspring
Duty Cycle Control med urinjektion og urspring
Duty Cycle Control med urinjektion og urspring
Duty Cycle Control med urinjektion og urspring

Ventilatorstyringen modtager CW- og CCW -signalerne som input fra den roterende dekoder og bruger dem til enten at øge eller reducere PWM -signalet, der styrer blæserhastigheden. Dette opnås med flere digitale logiske komponenter.

Driftscyklussen skal øges, når der modtages en CW -puls. Dette gøres ved at injicere en ekstra urpuls i CNT6 -blokken, hvilket får den til at udsende en urcyklus tidligere, end den ellers ville have. Denne proces er vist i figur 8.

CNT1 får stadig uret med en konstant hastighed, men CNT6 har injiceret et par ekstra ure. Hver gang der er et ekstra ur til tælleren, flytter det sit output en urperiode til venstre.

Omvendt, for at reducere driftscyklussen, skal du springe en urpuls til CNT6 over som vist i figur 9. CNT1 bliver stadig klokket med en konstant hastighed, og der er sprunget over urimpulser for CNT6, hvor tælleren ikke blev klokket, da den skulle til. På denne måde skubbes output fra CNT6 til højre med en urperiode ad gangen, hvilket forkorter output PWM -driftscyklussen.

Urinjektionen og uret springer funktionalitet ud med brug af nogle digitale logiske elementer i GreenPAK. Et par multifunktionsblokke bruges til at oprette et par låse-/kantdetektorkombinationer. 4-bit LUT0 bruges til at mikse mellem det generelle urssignal (CLK/8) og urets indsprøjtning eller uroverspringssignaler. Denne funktionalitet er beskrevet mere detaljeret i trin 7.

Trin 6: KNAPP -input

KNAP Indgang
KNAP Indgang

KNAPPE -indgangen frakobles i 20 ms og bruges derefter til at skifte en lås, der bestemmer, om denne særlige chip er valgt. Hvis det er valgt, passerer 4-bit LUT urets oversprings- eller injektionssignaler. Hvis chippen ikke er valgt, passerer 4-bit LUT simpelthen CLK/8-signalet.

Trin 7: Forebyggelse af rullecyklus

Forebyggelse af rullecyklus
Forebyggelse af rullecyklus
Forebyggelse af rullecyklus
Forebyggelse af rullecyklus
Forebyggelse af rullecyklus
Forebyggelse af rullecyklus

RS-låsene 3-bit LUT5 og 3-bit LUT3 bruges til at sikre, at du ikke kan injicere eller springe så mange ure over, at offset-tællerne vælter. Dette er for at undgå, at systemet når 100 % driftscyklus og derefter ruller over til en 1 % driftscyklus, hvis det modtager endnu et injiceret ur.

RS -låsene forhindrer dette i at ske ved at låse input til multifunktionsblokkene, når systemet er en urcyklus væk fra at vælte. Et par DFF'er forsinker PWM_SET- og PWM_nRST -signalerne med en urperiode som vist i figur 11.

Et par LUT'er bruges til at skabe den nødvendige logik. Hvis driftscyklussen er så lav, at det forsinkede PWM_SET -signal forekommer samtidig med PWM_nRST -signalet, vil et yderligere fald i driftscyklussen forårsage en rollover.

På samme måde, hvis man nærmer sig maksimal driftscyklus, således at det forsinkede PWM_nRST -signal forekommer samtidig med PWM_SET -signalet, er det nødvendigt at undgå yderligere forøgelse af driftscyklussen. I dette tilfælde skal du forsinke nRST -signalet med to urcyklusser for at sikre, at systemet ikke vælter fra 99 % til 1 %.

Trin 8: Duty Cycle Control med I2C

Duty Cycle Control med I2C
Duty Cycle Control med I2C
Duty Cycle Control med I2C
Duty Cycle Control med I2C
Duty Cycle Control med I2C
Duty Cycle Control med I2C

Dette design indeholder en anden måde at styre driftscyklussen på, andet end urspring/urinjektion. En ekstern mikrokontroller kan bruges til at skrive I2C -kommandoer til GreenPAK for at indstille driftscyklussen.

Kontrol af driftscyklussen over I2C kræver, at controlleren udfører en bestemt kommandosekvens. Disse kommandoer vises i rækkefølge i tabel 1. Et "x" angiver en bit, der ikke bør ændres, "[" angiver en START -bit, og "]" angiver en STOP -bit

PDLY -blokken genererer en kort aktiv høj puls på den faldende kant af CLK/8 -signalet, som kaldes! CLK/8. Dette signal bruges til at klokke DFF14 med en konstant frekvens. Når I2C_SET går højt asynkront, får den næste stigende kant af! CLK/8 DFF14 til at udsende HIGH, hvilket udløser CNT5 OneShot. OneShot kører for antallet af urcyklusser, som brugeren skrev som angivet i kommandoen "Skriv til CNT5" I2C i tabel 1. I dette tilfælde er det 10 urcyklusser. OneShot tillader 25 MHz-oscillatoren at køre i nøjagtig sin varighed og ikke længere, så 3-bit LUT0 modtager det antal urcykler, der blev skrevet til CNT5.

Figur 15 viser disse signaler, hvor de røde ure er dem, der sendes til 3-bit LUT0, som sender dem ind i CNT6 (PWM_SET-tælleren), hvilket skaber forskydning for driftscyklusgenerering.

Trin 9: Omdrejningstælleraflæsning

Omdrejningstælleraflæsning
Omdrejningstælleraflæsning
Omdrejningstælleraflæsning
Omdrejningstælleraflæsning

Hvis det ønskes, kan brugeren aflæse omdrejningstællerværdien over I2C for at spore, hvor hurtigt ventilatoren drejer ved at aflæse CNT2 -værdien. CNT2 øges hver gang ACMP0H har en stigende kant og kan nulstilles asynkront med en I2C -kommando. Bemærk, at dette er en valgfri funktion, og tærsklen for ACMP0H skal justeres i henhold til specifikationerne for den særlige blæser, der bruges.

Trin 10: Eksternt kredsløbsdesign

Eksternt kredsløb Design
Eksternt kredsløb Design

Det eksterne kredsløb er ret simpelt. Der er en trykknap tilsluttet Pin6 på GreenPAK for at skifte, om denne særlige enhed er valgt til rotationsstyring, og en LED tilsluttet Pin12 og Pin13 for at angive, hvornår enheden er valgt.

Da blæseren kører 12 V, er et par FET'er til styring af dens omskiftning påkrævet. GreenPAKs Pin18 og Pin19 driver en nFET. Når nFET er tændt, trækker det porten til pFET LOW, som forbinder blæseren til +12 V. Når nFET er slukket, trækkes porten til PFET op af 1 kΩ modstanden, som afbryder blæseren fra +12 V.

Trin 11: PCB -design

PCB Design
PCB Design

For at prototype designet blev et par printkort samlet. PCB'et til venstre er "Fan Controller", der huser den roterende encoder, 12 V jack, SLG46108 GreenPAK og stik til FT232H USB til I2C breakout board. De to printkort til højre er "Fan Boards", som indeholder SLG46826 GreenPAK'er, trykknapper, kontakter, lysdioder og ventilatorhoveder.

Hvert fanbræt har et indhyllet hanhoved i venstre side og et kvindeligt overskud i højre side, så de kan kobles sammen med en daisy. Hvert fanbræt kan udfyldes med ressourcer til uafhængigt at styre to fans.

Trin 12: C# -applikation

C# Ansøgning
C# Ansøgning

En C# -applikation blev skrevet til grænseflade med ventilatortavlerne via FT232H USB-I2C-broen. Denne applikation kan bruges til at justere frekvensen for hver blæser med I2C -kommandoer, der genereres af applikationen.

Applikationen pinger alle 16 I2C -adresser en gang i sekundet og udfylder GUI'en med de tilstedeværende slaveadresser. I dette eksempel er ventilator 1 (slaveadresse 0001) og ventilator 3 (slaveadresse 0011) forbundet til kortet. Justeringer af hver blæsers individuelle driftscyklus kan foretages ved at flytte skyderen eller ved at indtaste en værdi fra 0-256 i tekstboksen under skyderen.

Konklusioner

Ved hjælp af dette design er det muligt uafhængigt at styre op til 16 blæsere (da der er 16 mulige I2C -slaveadresser) enten med en roterende encoder eller med en C# -applikation. Det er blevet demonstreret, hvordan man genererer et PWM -signal med et par offset -tællere, og hvordan man kan øge og reducere arbejdscyklussen for dette signal uden rollover.

Anbefalede: