Tuulettimien ohjaus ja lämpötilan mittaus

Olis taas yksi projekti mielessä ja jonka voisi vaihteeksi toteuttaakin.

Ajatus olisi, että laittaisin piirilevylle AVR:n (luutavimmin AtMega32U4, jossa on USB) ja ohjaisin sillä tietokoneen tuulettimia sekä lukisin lämpövastuksia. Koska en ole tällaista ennen tehnyt, niin minulla on muutamia kysymyksiä:

Atmegasta saa pihalle PWM-signaalin. Tahtoisin kuitenkin pystyä ohjaamaan sekä PWM-ohjattavia, että tavallisia tuulettimia. PWM-ohjattavat eivät tuone mitään kummempia haasteita, koska ne voi kytkeä aikalailla suoraan kiinni. Tosin joku open-drain-puskuri olisi ilmeisesti suositeltava. Tavallisia tuulettimia hidastetaan kytkemällä niiden kanssa sarjaan vastus eli voisinko käyttää MOSFET:iä ja ohjata sitä PWM-signaalilla? Ajattelin, että se olisi jotain tämän tapaista:

Tuossa on kuitenkin se ongelma, että tahtoisin ohjata tuuletinta niin, että se on oletuksena täysillä eli saa suurin piirtein sen 12 V ja sitten, kun PWM on päällä niin sillä voidaan laskea tuo nopeus nollaan eli käytännössä MOSFETin hilajännite pitää saada nätisti jollekin välille. Vastus (vastukset) ja kondensaattori pitänee jotenkin mitoittaa. Ainakin Arduinossa tuo PWM on oletuksena säädetty 500 Hz:lle, jos sillä on mitään merkitystä. Luin, että tuulettimia kuuluisi ohjata noin 25 KHz:n PWM-signaalilla (21-28 KHz), joten pitänee tutkia onko tuollaista saatavissa Atmegasta ulos. Voiko sitä käyttää myös MOSFET:lle vai aiheuttaako korkea taajuus ongelmia? Tietysti käytössä on tuo alipäästösuodatin.

Lisäksi tuulettimet eivät ilmeisesti saisi viedä yli 1,5 A virtaa 12,6 V jännitteellä, joten MOSFET pitäisi jotenkin mitoittaa sen mukaan. Lisäksi hetkellisesti käynnistyksessä voi mennä 2,2A. Olisiko hyviä ehdotuksia millaisen MOSFET:n tarvitsisin vaikkapa Partcon valikoimasta? Atmegasta saa vain sen 5V ulos, joten sekin pitää huomioida ja kun tässä nyt on tarkoitus käyttää tuota vastuksen tavoin, niin sekin tuo oman lisänsä. Yritän itse katsella noita vaikka viikonloppuna, kun on aikaa.
Tuossa vähän noista tuulettimien spekseistä ja vaatimuksista: formfactors.org/developer/sp … M_Spec.pdf Harmi vain että tuo ottaa kantaa ainoastaan PWM-ohjaukseen.

Tuulettimen nopeuden mittaamisessa ei liene myöskään mitään erikoista. Kytketään vain tuulettimen pulssinasta Atmegaan ja sitten käytetään keskeytyksiä sen lukemiseen miten parhaiten osataan. Ohjelmistopuolen näin tietojenkäsittelytieteen opiskelijana en usko olevan ongelma.

Atmegassa on useita analogisia tuloja, joten niillä voisi lukea lämpövastuksen arvoja. Mitenhän tämä kannattaisi toteuttaa? Ilmeisesti pitäisi käyttää NTC-vastuksia ja tehdä tämän tyyppinen kytkentä:

En ole tällaistakaan koskaan tehnyt. Pitäisikö tässä ottaa jotain erityistä huomioon? Näkyy olevan jotain 1K NTC-vastuksia, mutta ilmeisesti yleensä käytetään 10K ohmin vastuksia. Pitänee tilata niitä.

Yritän itsekin perehtyä näihin, mutta jos teillä on jotain ajatuksia tai neuvoja, niin otan niitä mielellään vastaan. Minulla on aina mielessä näitä projekteja ja monet on kesken, mutta tämän suhteen olen aika luottavainen, että tulen tämän toteuttamaankin vielä kevään ja kesän aikana.

Ensimmäinen ongelma. P-mos johtaa, kun sen yläpuoli on korkeammassa potentiaalissa, kuin hila. Hilasi on aina 5V.

Toinen ongelma. Suojadiodi. Moottori potkaisee takasin. Laita zener.

avrfreaks.net/forum/pwm-fan-control-mega16

Tuon mukaan PWM ei olisi ihan kiva juttu BLDC tuulettimelle.

Sikamaisena sähkönpolttajana laittaisin kivat 10W tehwastukset ja niille jäykät N-fetit ohittamaan ne. Kun haluan hidastaa, kiskaisen pikkutrankulla fetin hilan maahan ja virta kulkee vastuksen kautta. Lämpöä lähtee. Laittamalla noita rinnan, saadaan luotua erilaisia sarjavastuksia eteen.

Toisaalta Atmelilla on kaksikin application notea miten tuo tehdään. jekku on vain siinä, että nuo käsittelevät tuon BLDC:n kommutointia, mutta ehkä sitäkin voisi miettiä.

Niin siis ajattelin, että jos kytketään 4-pinninen tietokoneen tuuletin (valinta vaikka jumpperilla tai ohjelmallisesti, ei olennaista) niin silloin tuulettimessa on itsessään PWM-signaalia syövä ohjain, jolla voi säätää tuulettimen nopeutta. Sitä on käsitelty tuolla pdf:ssä:
formfactors.org/developer/sp … M_Spec.pdf
Tämän pitäisi olla helppoa, koska tällöin tuuletin kytketään suoraan 12 V jännitteeseen ja maahan sekä yhdestä pinnistään PWM-lähtöön ja yhdestä saa vielä kierrosluvun.

Sitten jos kytketään tavallisempi 3-pinninen tietokoneen tuuletin, niin sen nopeutta on säädettävä jännitteellä. Kolmas pinni on kierroslukua varten. AtMegasta ei tietenkään saa mitenkään sellaista jännitettä ulos ja tarvitsisinkin apuja sellaisen kytkennän suunnittelemiseen. Ilmeisesti ajatukseni MOSFETn käytöstä vastuksen tapaan ei ollut oikea tai vähintäänkin latoin tuon FETn väärin päin…
fi.wikipedia.org/wiki/MOSFET#Toimintamuodot
Sitä en kutenkaan tosiaankaan tarkoittanut, että yrittäisin saada tuulettimen nopeutta säädettyä katkomalla sen omaa virtaa.

Kyllä tuon oman virran katkomisenkin pitäisi toimia:http://pdfserv.maximintegrated.com/en/an/AN1784.pdf

Käsitykseni mukaan tietokoneiden tuulettimille tuo ei toimi kovinkaan hyvin, vaikka sitä voisikin käyttää joillekin tuulettimille. Lisäksi se haittaa tuon kierroslukupulssin toimintaa eli sekään ei ole oikein hyvä juttu. Tuolla PDF:ssä oli kuitenkin kerrottu muistakin tavoista ohjata ja se antoi minulle vähän ajatusta.

Tästä tulikin mieleeni, että pitääkin selvittää minkä jännitteen tuo kierroslukupulssi antaa eli onko se sellaisenaan liikaa AtMegalle.

Jotakin mahdollisesti hyödyllistä: instructables.com/id/Variabl … -Supply-u/
PWM:llä ohjattava virtalähde toteutettu operaatiovahvistimella, MOSFET:llä, käämillä sekä jokusella vastuksella ja kondensaattorilla. Jokin tällainen saattaisi toimia, tosin tarvinnen enemmän kuin 0,6 A, joka tuolla on luvattu tälle nimenomaiselle kytkennälle.

Tässä vielä tuolla ollut kytkentä:

Jos haluat tuon tehokkaasti toteuttaa säätyvällä jännitteellä, laita jännitelähteen ja tuulettimen välillä hakkurivirtalähde, jonka feedbackiä pääset sorkkimaan sillä AVR (PWM:llä tai DACilla, jos sellainen on). Tuo onnistuu vaikkapa syöttämällä sopivan vastuksen kautta jännitettä feedbackiin, joka on jännitejaolla ulostulossa. Sopivat vastukset pitää laskea vaadittavan feedbackin perusteella ja jos käytät PWM:ää, pitää siihen laitta vastus ja konkka jännitteen stabiloimiseksi.

Voihan tuossa käyttää myös jotain digitaalista potentiometriä tms. hienompaa ja varmasti löytyy myös hakkureita, joiden ulostuloa voi säätää digitaalisesti.