Turinys:

„Pasidaryk pats“PWM valdymas kompiuterių gerbėjams: 12 žingsnių
„Pasidaryk pats“PWM valdymas kompiuterių gerbėjams: 12 žingsnių

Video: „Pasidaryk pats“PWM valdymas kompiuterių gerbėjams: 12 žingsnių

Video: „Pasidaryk pats“PWM valdymas kompiuterių gerbėjams: 12 žingsnių
Video: Kaip pasigaminti PCB? 2024, Liepa
Anonim
„Pasidaryk pats“PWM valdymas kompiuterių gerbėjams
„Pasidaryk pats“PWM valdymas kompiuterių gerbėjams

Šioje instrukcijoje aprašomas pilnavertis 12 V kompiuterio ventiliatoriaus PWM valdiklio kūrimas. Dizainas gali valdyti iki 16 3 kontaktų kompiuterio ventiliatorių. Dizainas naudoja porą „Dialog GreenPAK ™“konfigūruojamų mišraus signalo IC, kad valdytų kiekvieno ventiliatoriaus darbo ciklą. Tai taip pat apima du būdus, kaip pakeisti ventiliatoriaus greitį:

a. su kvadratūriniu/sukamuoju kodavimo įrenginiu

b. su „Windows“programa, integruota C#, kuri bendrauja su „GreenPAK“per „I2C“.

Žemiau aprašėme veiksmus, kurių reikia norint suprasti, kaip „GreenPAK“lustas buvo užprogramuotas sukurti PWM valdiklį kompiuterių gerbėjams. Tačiau, jei norite gauti programavimo rezultatą, atsisiųskite „GreenPAK“programinę įrangą, kad peržiūrėtumėte jau užpildytą „GreenPAK“dizaino failą. Prijunkite „GreenPAK Development Kit“prie kompiuterio ir paspauskite programą, kad sukurtumėte pasirinktinį PWM valdymo IC, skirtą kompiuterių gerbėjams.

1 žingsnis: sistemos bloko schema

Sistemos bloko schema
Sistemos bloko schema

2 žingsnis: SLG46108 sukamojo dekoderio dizainas

Rotacinio dekoderio dizainas SLG46108
Rotacinio dekoderio dizainas SLG46108
Rotacinio dekoderio dizainas SLG46108
Rotacinio dekoderio dizainas SLG46108
Rotacinio dekoderio dizainas SLG46108
Rotacinio dekoderio dizainas SLG46108

Sukamasis kodavimo įrenginys naudojamas rankiniu būdu padidinti arba sumažinti ventiliatorių darbo ciklą. Šis prietaisas perduoda impulsus savo A ir B kanalų išėjimuose, kurie yra 90 ° atstumu vienas nuo kito. Daugiau informacijos apie sukamojo kodavimo įrenginio veikimą žr. AN-1101: Neužrakintas kvadratinis dekoderis.

Laikrodinis sukamasis dekoderis gali būti sukurtas naudojant „Dialog GreenPAK SLG46108“, kad apdorotų A ir B kanalo signalus ir išvestų juos prieš laikrodžio rodyklę (CCW) ir pagal laikrodžio rodyklę (CW).

Kai kanalas A veda kanalą B, dizainas perduoda trumpą impulsą CW. Kai B kanalas veda kanalą A, jis CCW perduoda trumpą impulsą

Trys DFF sinchronizuoja A kanalo įvestį su laikrodžiu. Panašiai vamzdžio uždelsimas, kai OUT0 nustatytas į dvi DFF, o OUT1 - į tris DFF, sukuria tą pačią B kanalo funkciją.

Norėdami sukurti CW ir CCW išvestis, naudokite keletą LUT, jei norite gauti daugiau informacijos apie šį standartinį rotacinio dekoderio dizainą, apsilankykite šioje svetainėje.

„GreenPAK“rotacinis dekoderis gaus įvesties impulsus A ir B ir išves CW ir CCW impulsus, kaip parodyta 4 paveiksle.

Po XOR vartų esanti grandinė užtikrina, kad niekada nebus CW ir CCW impulsų vienu metu, o tai sukels sukamojo kodavimo įrenginio klaidas. 8 ms krintančio krašto vėlavimas CW ir CCW signaluose verčia juos išlikti aukštai 8 ms plius vieną laikrodžio ciklą, kuris yra būtinas paskesniems SLG46826 GreenPAK.

3 žingsnis: SLG46826 ventiliatoriaus valdiklio dizainas

SLG46826 Ventiliatoriaus valdiklio dizainas
SLG46826 Ventiliatoriaus valdiklio dizainas

4 žingsnis: PWM generavimas naudojant poslinkio skaitiklius

PWM karta su poslinkio skaitikliu
PWM karta su poslinkio skaitikliu
PWM karta su poslinkio skaitikliu
PWM karta su poslinkio skaitikliu

PWM signalui generuoti naudojama to paties laikotarpio poslinkio skaitiklių pora. Pirmasis skaitiklis nustato DFF, o antrasis - iš naujo, sukurdamas pastovų darbo ciklo PWM signalą, kaip parodyta 6 paveiksle ir 7 paveiksle.

CNT6 nustato DFF10, o apverstas CNT1 išėjimas iš naujo nustato DFF10. 18 ir 19 kaiščiai naudojami PWM signalui išvesti į išorinę grandinę

5 veiksmas: darbo ciklo valdymas su laikrodžio įpurškimu ir laikrodžio praleidimu

Darbo ciklo valdymas su laikrodžio įpurškimu ir laikrodžio praleidimu
Darbo ciklo valdymas su laikrodžio įpurškimu ir laikrodžio praleidimu
Darbo ciklo valdymas su laikrodžio įpurškimu ir laikrodžio praleidimu
Darbo ciklo valdymas su laikrodžio įpurškimu ir laikrodžio praleidimu

Ventiliatoriaus valdiklis priima CW ir CCW signalus kaip įvestis iš rotacinio dekoderio ir naudoja juos, kad padidintų arba sumažintų PWM signalą, kuris valdo ventiliatoriaus greitį. Tai pasiekiama naudojant kelis skaitmeninės logikos komponentus.

Gavus CW impulsą, darbo ciklas turi padidėti. Tai daroma įterpiant papildomą laikrodžio impulsą į CNT6 bloką, todėl jis išvedamas vienu laikrodžio ciklu anksčiau, nei būtų buvę kitaip. Šis procesas parodytas 8 paveiksle.

CNT1 laikrodis vis dar yra pastovus, tačiau CNT6 turi keletą papildomų laikrodžių. Kiekvieną kartą, kai prie skaitiklio yra papildomas laikrodis, jis perkelia savo išėjimą vienu laikrodžio periodu į kairę.

Ir atvirkščiai, norėdami sumažinti darbo ciklą, praleiskite CNT6 laikrodžio impulsą, kaip parodyta 9 paveiksle. į. Tokiu būdu CNT6 produkcija vienu laikrodžio periodu vienu metu stumiama į dešinę, sutrumpinant išvesties PWM darbo ciklą.

Laikrodžio įpurškimo ir laikrodžio praleidimo funkcija atliekama naudojant kai kuriuos „GreenPAK“skaitmeninius loginius elementus. Daugiafunkcinių blokų pora naudojama spynos/krašto detektoriaus derinių porai sukurti. 4 bitų LUT0 naudojamas bendram laikrodžio signalui (CLK/8) ir laikrodžio įpurškimo arba laikrodžio praleidimo signalams maišyti. Ši funkcija išsamiau aprašyta 7 veiksme.

6 veiksmas: mygtuko įvestis

MYGTUKAS Įvestis
MYGTUKAS Įvestis

BUTTON įvestis atjungiama 20 ms, tada naudojama fiksatoriui įjungti, kuris nustato, ar pasirinktas būtent šis lustas. Jei jis pasirinktas, 4 bitų LUT perduoda laikrodžio praleidimo ar įpurškimo signalus. Jei lustas nepasirinktas, 4 bitų LUT tiesiog perduoda CLK/8 signalą.

7 žingsnis: užkirsti kelią darbo ciklo apsivertimui

Užkirsti kelią darbo ciklo apsivertimui
Užkirsti kelią darbo ciklo apsivertimui
Užkirsti kelią darbo ciklo apsivertimui
Užkirsti kelią darbo ciklo apsivertimui
Užkirsti kelią darbo ciklo apsivertimui
Užkirsti kelią darbo ciklo apsivertimui

RS skląsčiai 3 bitų LUT5 ir 3 bitų LUT3 naudojami siekiant įsitikinti, kad negalite švirkšti ar praleisti tiek daug laikrodžių, kad poslinkio skaitikliai apsiverstų. Taip siekiama išvengti, kad sistema pasiektų 100 % darbo ciklą, o paskui pereitų prie 1 % darbo ciklo, jei ji gauna kitą įpurškiamą laikrodį.

RS skląsčiai neleidžia to padaryti, užfiksuodami įėjimus į daugiafunkcinius blokus, kai sistema yra per vieną laikrodžio ciklą nuo apvirtimo. DFF pora atideda PWM_SET ir PWM_nRST signalus vienu laikrodžio periodu, kaip parodyta 11 paveiksle.

Norint sukurti reikiamą logiką, naudojama pora LUT. Jei darbo ciklas yra toks mažas, kad vėluojantis PWM_SET signalas atsiranda tuo pačiu metu kaip ir signalas PWM_nRST, tolesnis darbo ciklo sumažėjimas sukels apvirtimą.

Panašiai, jei artėja prie maksimalaus darbo ciklo, kai vėluojantis PWM_nRST signalas atsiranda tuo pačiu metu kaip ir signalas PWM_SET, būtina vengti tolesnio darbo ciklo padidinimo. Šiuo atveju atidėkite nRST signalą dviem laikrodžio ciklais, kad įsitikintumėte, jog sistema nevirsta nuo 99 % iki 1 %.

8 veiksmas: darbo ciklo valdymas naudojant I2C

Darbo ciklo valdymas naudojant I2C
Darbo ciklo valdymas naudojant I2C
Darbo ciklo valdymas naudojant I2C
Darbo ciklo valdymas naudojant I2C
Darbo ciklo valdymas naudojant I2C
Darbo ciklo valdymas naudojant I2C

Ši konstrukcija apima kitą darbo ciklo valdymo būdą, išskyrus laikrodžio praleidimą/įpurškimą. Išorinis mikrovaldiklis gali būti naudojamas „GreenPAK“rašyti I2C komandas, kad būtų nustatytas darbo ciklas.

Norint valdyti darbo ciklą per I2C, valdiklis turi atlikti tam tikrą komandų seką. Šios komandos parodytos eilės tvarka 1 lentelėje. „X“reiškia bitą, kuris neturėtų keistis, „[“žymi START bitą, o „]“nurodo STOP bitą

PDLY blokas generuoja trumpą aktyvų aukštą impulsą ant krintančio CLK/8 signalo krašto, kuris vadinamas! CLK/8. Šis signalas naudojamas nuolatiniam DFF14 laikrodžiui stebėti. Kai I2C_SET kyla aukštai asinchroniškai, kitas pakilęs CLK/8 kraštas sukelia DFF14 išvestį HIGH, o tai suaktyvina „CNT5 OneShot“. „OneShot“veikia pagal laikrodžio ciklų skaičių, kurį vartotojas parašė, kaip nurodyta 1 lentelės komandoje „Rašyti į CNT5“I2C. Šiuo atveju tai yra 10 laikrodžio ciklų. „OneShot“leidžia 25 MHz osciliatoriui veikti tiksliai savo trukmę ir ne ilgiau, todėl 3 bitų LUT0 gauna tiek laikrodžio ciklų, kiek buvo parašyta CNT5.

15 paveiksle pavaizduoti šie signalai, kur raudoni laikrodžiai siunčiami į 3 bitų LUT0, kuris perduoda juos į CNT6 (PWM_SET skaitiklis), taip sukuriant darbo ciklo generavimo poslinkį.

9 žingsnis: Tachometro nuskaitymas

Tachometro rodmenys
Tachometro rodmenys
Tachometro rodmenys
Tachometro rodmenys

Jei pageidaujama, vartotojas gali perskaityti tachometro vertę per I2C ir sekti, kaip greitai sukasi ventiliatorius, skaitydamas CNT2 vertę. CNT2 padidinamas kiekvieną kartą, kai ACMP0H pakyla, ir jį galima asinchroniškai iš naujo nustatyti naudojant I2C komandą. Atminkite, kad tai yra neprivaloma funkcija, todėl ACMP0H slenkstį reikės keisti pagal konkretaus naudojamo ventiliatoriaus specifikacijas.

10 veiksmas: išorinės grandinės projektavimas

Išorinės grandinės dizainas
Išorinės grandinės dizainas

Išorinė grandinė yra gana paprasta. Prie „GreenPAK“kaiščio 6 yra prijungtas mygtukas, skirtas perjungti, ar šis įrenginys pasirinktas sukamajam valdymui, ir prie „Pin12“ir „Pin13“prijungtas šviesos diodas, nurodantis, kada pasirinktas įrenginys.

Kadangi ventiliatorius veikia 12 V įtampa, norint valdyti jo perjungimą, reikalinga pora FET. „GreenPAK“„Pin18“ir „Pin19“valdo nFET. Įjungus nFET, jis traukia pFET LOW vartus, kurie prijungia ventiliatorių prie +12 V. Kai nFET yra išjungtas, PFET vartus traukia aukštyn 1 kΩ rezistorius, kuris atjungia ventiliatorių nuo +12 V.

11 žingsnis: PCB projektavimas

PCB dizainas
PCB dizainas

Norėdami sukurti prototipą, buvo surinkta pora PCB. Kairėje esanti PCB yra „Ventiliatoriaus valdiklis“, kuriame yra sukamasis kodavimo įrenginys, 12 V lizdas, SLG46108 GreenPAK ir jungtys, skirtos FT232H USB - I2C pertraukimo plokštei. Dvi dešinėje esančios PCB plokštės yra „Ventiliatorių plokštės“, kuriose yra SLG46826 „GreenPAK“, mygtukai, jungikliai, šviesos diodai ir ventiliatoriaus antraštės.

Kiekvienoje gerbėjų lentoje kairėje pusėje yra apgaubta vyriška antraštė, o dešinėje-moteriška antraštė, kad jas būtų galima kartu sujungti. Kiekvienoje ventiliatoriaus lentoje gali būti išteklių, skirtų savarankiškai valdyti du ventiliatorius.

12 žingsnis: C# taikymas

C# Taikymas
C# Taikymas

C# programa buvo parašyta sąsajai su ventiliatorių plokštėmis per FT232H USB-I2C tiltą. Šia programa galima reguliuoti kiekvieno ventiliatoriaus dažnį naudojant I2C komandas, kurias sukuria programa.

Programa vieną kartą per sekundę pinga visus 16 I2C adresų ir užpildo GUI esamais vergų adresais. Šiame pavyzdyje ventiliatorius 1 (vergo adresas 0001) ir ventiliatorius 3 (pavaldinio adresas 0011) prijungti prie plokštės. Kiekvieno ventiliatoriaus darbo ciklą galima koreguoti atskirai perkėlus slankiklį arba įvedus reikšmę nuo 0 iki 256 teksto laukelyje po slankikliu.

Išvados

Naudojant šią konstrukciją, galima savarankiškai valdyti iki 16 ventiliatorių (nes yra 16 galimų I2C pavaldinių adresų) sukamuoju kodavimo įrenginiu arba naudojant C# programą. Buvo įrodyta, kaip sugeneruoti PWM signalą naudojant porą poslinkio skaitiklių ir kaip padidinti ir sumažinti to signalo veikimo ciklą neperkeliant.

Rekomenduojamas: