- Mikä on PWM-signaali?
- Kuinka muuntaa PWM-signaali analogiseksi jännitteeksi?
- Piirikaavio:
- MSP: n ohjelmointi PWM-signaalille:
- LED-kirkkauden säätäminen PWM: llä:
Tämä opetusohjelma on osa sarjaa MSP430G2 LaunchPad -oppaita, joissa opimme käyttämään Texas Instrumentsin MSP430G2 LaunchPad -ohjelmaa. Toistaiseksi olemme oppineet taulun perustiedot ja käsittelemme analogisen jännitteen lukemista, käyttöliittymän nestekidenäyttöä MSP430G2: lla jne. Nyt siirrytään seuraavaan vaiheeseen PWM: n oppimisesta MSP430G2: ssa. Teemme sen säätämällä ledin kirkkautta vaihtelemalla potentiometriä. Joten potentiometri kiinnitetään MSP430: n analogiseen tapiin sen analogisen jännitteen lukemiseksi, joten on suositeltavaa tietää läpi ADC-opetusohjelman ennen jatkamista.
Mikä on PWM-signaali?
Pulssileveyden modulaatio (PWM) on digitaalinen signaali, jota käytetään yleisimmin ohjauspiireissä. Tämä signaali on asetettu korkealle (3,3 V) ja matalalle (0 V) ennalta määritetyssä ajassa ja nopeudessa. Aikaa, jonka aikana signaali pysyy korkealla, kutsutaan “päälläoloaikaksi” ja aikaa, jonka aikana signaali pysyy matalana, ”sammutusajaksi”. PWM: llä on kaksi tärkeää parametria, kuten alla käsitellään:
PWM: n käyttöjakso:
Prosenttiaikaa, jonka aikana PWM-signaali pysyy KORKEAna (ajallaan), kutsutaan työjaksoksi. Jos signaali on aina päällä, se on 100%: n käyttöjaksossa ja jos se on aina pois päältä, se on 0%: n käyttöjakso.
Käyttösykli = Kytke päälle aika / (Kytke päälle aika + Sammuta aika)
PWM: n taajuus:
PWM-signaalin taajuus määrittää kuinka nopeasti PWM suorittaa yhden jakson. Yksi jakso on valmis PWM-signaalin PÄÄLLE ja POIS PÄÄLTÄ, kuten yllä olevassa kuvassa on esitetty. Opetusohjelmassa taajuus on 500 Hz, koska se on Energia IDE: n asettama oletusarvo.
PWM-signaaleille on lukemattomia sovelluksia reaaliajassa, mutta saadaksesi käsityksen, PWM-signaalia voidaan käyttää servomoottoreiden ohjaamiseen ja se voidaan muuntaa myös analogiseksi jännitteeksi, joka voi ohjata LEDin kirkkauden kirkkautta. Opitaan vähän siitä, miten se voitaisiin tehdä.
Tässä on muutama PWM-esimerkki muiden mikrokontrollerien kanssa:
- PWM: n tuottaminen PIC-mikrokontrollerilla MPLAB: n ja XC8: n kanssa
- Servomoottorin ohjaus Raspberry Pi: llä
- Arduino-pohjainen LED-himmennin PWM: n avulla
Tarkista kaikki PWM: ään liittyvät projektit täältä.
Kuinka muuntaa PWM-signaali analogiseksi jännitteeksi?
PWM-signaalien analogiseen jännitteeseen saamiseksi voidaan käyttää piiriä, jota kutsutaan RC-suodattimeksi. Tämä on yksinkertainen ja yleisimmin käytetty piiri tähän tarkoitukseen. Piiri sisältää vain vastuksen ja kondensaattorin sarjaan, kuten alla olevassa piirissä on esitetty.
Joten mitä periaatteessa tapahtuu tässä, on se, että kun PWM-signaali on korkea, kondensaattori latautuu vastuksen kautta ja kun PWM-signaali laskee matalaksi, kondensaattori purkautuu tallennetun varauksen kautta. Tällä tavoin ulostulossa on aina vakio jännite, joka on verrannollinen PWM-työjaksoon.
Yllä olevassa kaaviossa keltainen on PWM-signaali ja sininen on analoginen lähtöjännite. Kuten näette, lähtöaalto ei ole puhdas DC-aalto, mutta sen pitäisi toimia hyvin sovelluksessamme. Jos tarvitset puhdasta DC-aaltoa muuntyyppisiin sovelluksiin, sinun on suunniteltava kytkentäpiiri.
Piirikaavio:
Piirikaavio on melko yksinkertainen; sillä on vain potentiometri sekä vastus ja kondensaattori muodostamaan RC-piiri ja itse led. Potentiometriä käytetään tuottamaan analoginen jännite, jonka perusteella PWM-signaalin käyttöjaksoa voidaan ohjata. Potin lähtö on kytketty nastaan P1.0, joka pystyy lukemaan analogisia jännitteitä. Sitten meidän on tuotettava PWM-signaali, joka voidaan tehdä käyttämällä tapia P1.2, tämä PWM-signaali lähetetään sitten RC-suodatinpiiriin PWM-signaalin muuntamiseksi analogiseksi jännitteeksi, joka annetaan sitten LEDille.
On erittäin tärkeää ymmärtää, että kaikki MSP-kortin nastat eivät voi lukea analogista jännitettä tai luoda PWM-nastoja. Erityiset nastat, joilla voidaan suorittaa tietyt tehtävät, on esitetty alla olevassa kuvassa. Käytä aina tätä ohjeena valitaksesi nastat ohjelmointia varten.
Kokoa koko piiri yllä esitetyllä tavalla, voit käyttää leipälevyä ja muutamia hyppyjohtoja ja tehdä liitännät helposti. Kun liitännät on tehty, tauluni näytti seuraavalta.
MSP: n ohjelmointi PWM-signaalille:
Kun laitteisto on valmis, voimme aloittaa ohjelmoinnin. Ensimmäinen asia ohjelmassa on ilmoittaa nastat, joita aiomme käyttää. Tässä aiotaan käyttää pin-numeroa 4 (P1.2) lähtöniittinä, koska sillä on kyky tuottaa PWM. Joten luomme muuttujan ja annamme pin-nimen niin, että siihen on helppo viitata myöhemmin ohjelmassa. Täydellinen ohjelma annetaan lopussa.
int PWMpin = 4; // Käytämme MSP-moduulin 4. nastaa PWM-nastana
Seuraavaksi tulevat asetukset toiminto. Riippumatta koodi on kirjoitettu täällä toteutetaan vain kerran, täällä ilmoittaa, että käytämme tätä 4 th PIN tuotos pin koska PWM lähtö toiminnallisuutta. Huomaa, että olemme käyttäneet muuttujaa PWMpin tässä numeron 4 sijasta, jotta koodi näyttää merkityksellisemmältä
void setup () { pinMode (PWMpin, OUTPUT); // PEMpin asetetaan Outptut }
Lopuksi päästä silmukan toiminto. Mitä täällä kirjoitamme, teloitetaan uudestaan ja uudestaan. Tässä ohjelmassa meidän on luettava analoginen jännite ja luotava PWM-signaali vastaavasti, ja tämän on tapahduttava uudestaan ja uudestaan. Joten aloitetaan ensin lukemalla analoginen jännite tapista A0, koska olemme liittäneet siihen potentiometrin.
Tässä luemme arvoa AanalogRead- funktiolla, tämä toiminto palauttaa arvon 0-1024 nastaan kohdistetun jännitteen arvon perusteella. Sitten tallennamme tämän arvon muuttujaan nimeltä val, kuten alla on esitetty
int val = analoginen luku (A0); // lue ADC-arvo nastasta A0
Meidän on muunnettava arvot 0-1024 ADC: stä arvoihin 0-255, jotta voimme antaa sen PWM-funktiolle. Miksi meidän pitäisi muuttaa tämä? Kerron sen pian, mutta toistaiseksi muista, että meidän on muutettava. Muuntaa yhdet arvoista toiseen arvojoukon Energia omistaa kartan toiminto samanlainen Arduino. Joten muunnamme arvot 0-1204 arvoksi 0-255 ja tallennamme sen takaisin muuttujaan "val".
val = kartta (val , 0, 1023, 0, 255); // ADC antaa arvon 0-1023, muunna se arvoksi 0-255
Nyt meillä on vaihteleva arvo 0-255 potentiometrin sijainnin perusteella. Meidän on vain käytettävä tätä arvoa PWM-nastassa. Tämä voidaan tehdä seuraavalla rivillä.
analogWrite (PWMpin, val); // Kirjoita arvo PWM-nastalle.
Palataan takaisin kysymykseen, miksi 0-255 kirjoitetaan PWM-nastalle. Tämä arvo 0-255 päättää PWM-signaalin käyttöjakson. Esimerkiksi jos signaalin arvo on 0, se tarkoittaa, että käyttöjakso on 0% 127: lle se on 50% ja 255: lle se on 100% aivan kuten mitä tämän artikkelin yläosassa näytetään ja selitetään.
LED-kirkkauden säätäminen PWM: llä:
Kun olet ymmärtänyt laitteiston ja koodin, on aika pitää hauskaa piirin toiminnassa. Lataa koodi MSP430G2-kortille ja käännä potentiometrin nappulaa. Kun käännät nappulaa, tapin 2 jännite vaihtelee, jonka mikrokontrolleri lukee, ja jännitteen mukaan PWM-signaalit syntyvät tapille 4. Mitä suurempi jännite, sitä suurempi on käyttöjakso ja päinvastoin.
Tämä PWM-signaali muunnetaan sitten analogiseksi jännitteeksi ledin hehkuttamiseksi. Kirkkaus LED on suoraan verrannollinen PWM-signaalin pulssisuhdetta. Leipätaulun LED-valon lisäksi voit myös huomata smd-LEDin (punainen väri), joka vaihtelee kirkkaudeltaan samanlaisena kuin leipälautan led. Tämä on LED on kytketty samaan nastaan, mutta sillä ei ole RC-verkkoa, joten se välkkyy todella nopeasti. Voit ravistaa levyä pimeässä huoneessa tarkistaaksesi sen välkkyvän luonteen. Koko työ näkyy myös alla olevassa videossa.
Se on kaikki nyt ihmisille, olemme oppineet käyttämään PWM-signaaleja MSP430G2-levyllä, seuraavassa opetusohjelmassa opimme, kuinka helppoa on ohjata servomoottoria samoilla PWM-signaaleilla. Jos sinulla on epäilyksiä, lähetä ne alla olevaan kommenttiosioon tai teknisen avun foorumeille.