PWM-sovellusten tehollista resoluutiota voidaan reilusti lisätä hyödyntämällä mikro-ohjaimen NCO- ja CLC-oheislohkoja. Tämä on tarpeen esimerkiksi valaistuksen himmennyksessä sekä korkean hyötysuhteen tehomuuntimissa.
Artikkelin kirjoittaja Cobus Van Eeden toimii Microchip Technologyn mikro-ohjainpiirien sovellusinsinöörinä. |
Monet sovellukset voivat hyödyntää pulssinleveysmodulaatiota (PWM) alle kahdeksan bitin resoluutiolla, mutta joissakin tapauksissa, kuten valaisimien himmennyksessä, tarvitaan suurempaa resoluutiota ihmissilmän herkkyyden vuoksi.
Tavanomainen PWM hyödyntää ajastinta kytkentätaajuuden tuottamiseen ja käyttää sitten laskuria määrittämään, kuinka monen kellopulssin ajan lähtö pysyy korkeana ennen pulssin päättymistä. Lähtöpulssien leveyttä säädetään tuottamaan asetusarvot halutun pituisille toimintajaksoille (duty cycle).
Resoluution laskeminen
PWM:n tehollinen resoluutio (bitteinä) voidaan laskea ottamalla kantaluvun 2 logaritmi kaikkien mahdollisten pulssinleveysasetusten lukumäärästä.
16 MHz kellotaajuudella toimivalle laitteelle pienin mahdollinen toimintajakson säätölisäys on 62,5 nanosekuntia (yksi järjestelmäkellon jakso). Jos PWM on konfiguroitu toimimaan 200 kilohertsin kytkentätaajuudella (kytkentäjakso 5 µs), sataprosenttinen toimintajakso saavutetaan, kun toimintajaksorekisteri asetetaan arvoon 80 kellojaksoa (80 x 62,5 ns = 5 µs). Tämän seurauksena tehollinen PWM-resoluutio on vain hieman yli kuusi bittiä, sillä valittavissa on kaikkiaan 80 askelta. Tämä johtuu siitä, että yksi kytkentäjakso vastaa kestoltaan 80 järjestelmäkellojaksoa.
Koska tiedetään, että käytettävissä on 80 mahdollista toimintajakson säätöaskelta, voidaan laskea tarkka arvo vaaditulle PWM-resoluutiolle.
16 megahertsin taajuudella kellotettu PWM, jolla on kymmenbittinen toimintajaksorekisteri alkaa tämän rajoituksen vuoksi menettää resoluutiotaan 15,6 kilohertsin kytkentätaajuudella. Suuremmilla PWM-kytkentätaajuuksilla toimintajakso yltää sataan prosenttiin jo ennen kuin kaikki säätöaskeleet kymmenbittisessä toimintajaksorekisterissä on käytetty, ja kaikki jäljelle jäävät arvot antavat lähtöön sadan prosentin toimintajakson. Se taajuus, jolla tämä piste saavutetaan, voidaan myös laskea.
Useimmissa PWM-sovelluksissa kytkentä tehdään paljon suuremmalla taajuudella kuin lähtö voi muuttua. Suodattamalla tämä PWM-signaali alipäästösuotimella saadaan haluttu lähtö. Suodin poistaa PWM:n suuritaajuiset kytkentäkomponentit laskemalla lähinnä PWM-signaalin keskiarvon ja antamalla sen lähtöarvoksi.
Esimerkiksi hakkuriteholähteessä lähtöjännite on suoraan verrannollinen toimintajaksoon. Tästä seuraa, että mitä pienempi on PWM-toimintajakson säätöaskel, sitä vähäisempi on muutos lähtöjännitteessä. Näin päästään entistä tarkempaan lähtöjännitteen säätöön.
Järjestelmän ohjauksen näkökulmasta tekemällä pieniä säätöjä lähtöön voidaan tehokkaasti alentaa PWM:n tuottamaa kvantisointivahvistusta. Kaikissa ohjausjärjestelmissä tämän vahvistusarvon pienentäminen auttaa lisäämään koko järjestelmän vakautta.
PWM-toiminnan periaate
Kuten kuvasta 1 nähdään, pulssinleveysmodulaatio muodostetaan pääasiassa kahden eri parametrin yhdistelmällä. Toistuva liipaisu määrittää, kuinka usein kytkentäjakso/kytkentätaajuus pulssitetaan, ja yksittäispulsseja tuottava generaattori määrittää pulssin leveyden (toimintajakson).
Kuva 1: PWM-toiminnan periaate.
Tehollisen PWM-resoluution lisäämiseen voidaan käyttää mikro-ohjaimen oheislaitteena toimivaa numeerisesti ohjattua oskillaattoria (NCO), jollainen on mukana esimerkiksi Microchipin PIC-ohjaimissa. Sen avulla voidaan luoda monostabiili piiri, joka antaa aina liipaistaessa yhden vakiopituisen pulssin. NCO generoi signaalin, joka vaihtelee kahden arvon välillä ennalta määritellyssä suhteessa ja tuottaa keskimääräisen pulssinleveyden, joka on jotain kahden järjestelmäkellopulssin väliltä. PWM-signaalin pulssinleveys vaihtelee värinän ja huojunnan muodossa yhden kellojakson verran siinä vaihtelusuhteessa, joka on täsmällisesti määritetty NCO-oskillaattorin konfiguraatiossa.
Kaikissa sovelluksissa, joiden lähtö tuottaa keskiarvosignaalia – esimerkiksi kuormatehon siirrossa hakkuriteholähteissä tai valaistussovelluksissa - pulssinleveyden vaihtelu on täysin hyväksyttävää, koska keskimääräistä pulssinleveyttä ohjataan tarkasti.
NCO-oheislaite ei voi itsenäisesti tuottaa PWM-signaalia, mutta sen käyttäytymistä voidaan muuttaa lisäämällä konfiguroitavista logiikkasoluista (CLC) koostuva logiikkalohko, joka muodostaa PWM-lähtösignaalin. Tähän päästään käyttämällä tavallista PWM-lohkoa kellolähteenä, joka liipaisee PWM-jakson, sekä käyttämällä NCO-piiriä pulssin leveyden määrittämiseen.
Kellolähteiden lukumäärä voi olla mitä tahansa. Esimerkiksi ajastimia tai jopa ulkoisia signaaleja ja joissain tapauksissa ulkoisia liipaisuja voidaan käyttää pulssien käynnistämiseen. Sellainen on esimerkiksi teholähteissä käytettävä nollavirran ilmaisupiiri. Kuvassa 2 nähdään pelkistetty lohkokaavio tästä toimintaperiaatteesta.
Kuva 2: NCO-pohjaisen toiminnan periaate.
CLC-ohjauslogiikkaa käytetään asettamaan lähtö aina silloin, kun kytkentäkello osoittaa, että on aika tuottaa seuraava pulssi. Se myös nollaa lähdön pulssin päättämiseksi, kun NCO antaa ylivuotosignaalin.
Käytännön toteutus
Kuvassa 3 nähdään PWM-toteutuksen rakenne, jossa hyödynnetään NCO- ja CLC-lohkoja. NCO asetetaan pulssitaajuustilaan, jossa ylivuototilanne tuottaa lyhyen ilmaisupulssin.
Kuva 3: PWM-toteutus CLC- ja NCO-lohkojen avulla.
Kun järjestelmä käynnistetään, NCO-lähtö on alhaalla, koska se odottaa riittävää määrää laskettavia pulsseja, ennen kuin ylivuoto tapahtuu ja ilmaisupulssi tuotetaan. Tämä lähtösignaali invertoidaan, joten PWM-lähtö on siinä vaiheessa ylhäällä. Tästä saadaan nopea kellosignaali syötettäväksi NCO-lohkon kellolinjaan.
PWM-lähtö pysyy korkeana, kunnes rekisteri tyhjenee ja NCO-lähtö muuttuu. Tämän seurauksena se lopettaa kellopulssien tuottamisen NCO-lohkolle. Tällöin NCO pysyy korkeana, kunnes se saa jälleen tarvittavat kellopulssit, jotta lähtöpulssi saadaan valmiiksi. Tässä vaiheessa PWM-lähtö on alhaalla.
Seuraavan jakson alkaessa ajoituslähde pulssittaa ykkösen ja syöttää nopean kellosignaalin takaisin NCO-lohkolle.
NCO käyttää näitä muutamia kellojaksoja pulssin lopettamiseen, minkä jälkeen lähtö palaa nollatasoon, mistä se aloittaa koko proseduurin jälleen alusta. NCO:n ylivuotoon vaadittava aikamäärä riippuu rekisterin sisällöstä viimeisimmän ylivuodon vasemmalla puolella ja myös lisäysrekisterin tilasta. Rekisterin sisällöstä riippuen pulssi voi joskus olla yhden järjestelmäkellojakson verran lyhyempi kuin normaalisti. Pulssinleveyden tarkkaa keskiarvoa voidaan kuitenkin hallita valvomalla lisäysrekisterin asetuksen avulla, kuinka usein pulssin lyheneminen tapahtuu.
Pulssin leveyden laskeminen tapahtuu NCO-ylivuodon mukaisesti. Keskimääräinen ylivuototaajuus määrittää tuotetun lähtöpulssin keskimääräisen leveyden.
NCO on suunniteltu antamaan lineaarinen ohjaus taajuuden mukaan. Pulssin leveyden ohjaus ei enää sen jälkeen ole lineaarinen. Näin ollen tehollinen PWM-resoluutio ei ole vakio koko toimintasuhteen 0-100 prosentin alueella.
Kullakin toimintajaksoasetuksella tehollinen resoluutio juuri kyseisessä pisteessä voidaan laskea ja sen jälkeen piirtää kuvaajaksi. Tämä käyrä näyttää erilaiselta riippuen siitä, mikä on kytkentätaajuus, sillä pulssinleveyttä säädetään itsenäisesti.
Jopa 15 pikosekuntiin
Tavallisen PWM:n pienin mahdollinen pulssinleveyden lisäysaskel 16 MHz järjestelmäkellolla on 62,5 nanosekuntia. Jos nopein käytettävissä oleva PWM-kellosignaali on neljäsosa oskillaattoritaajuudesta (Fosc), tämä lukema kasvaa 250 nanosekuntiin.
Tässä esitetyllä tekniikalla samanlaisella PWM-laitteella pulssinleveyden lisäysaskel voidaan kuitenkin lyhentää jopa 15 pikosekuntiin.
Vaikkei suuri resoluutio olisikaan ensisijaisena vaatimuksena, tämä menetelmä voi olla houkutteleva lisä lukuisiin eri sovelluksiin, sillä se tuo ylimääräisen PWM-toiminnon laitteiden toimintamahdollisuuksiin. Sen avulla voidaan myös luoda vakioajassa sammuva taajuudeltaan säädettävä PWM-toiminto, jossa pulssi voidaan liipaista ulkoisesti, mitä vaaditaan esimerkiksi nollavirtakytketyissä suuren hyötysuhteen tehomuuntimissa.