Sisällysluettelo:

Luo PWM -aalto PIC -mikrokontrollerilla: 6 vaihetta
Luo PWM -aalto PIC -mikrokontrollerilla: 6 vaihetta

Video: Luo PWM -aalto PIC -mikrokontrollerilla: 6 vaihetta

Video: Luo PWM -aalto PIC -mikrokontrollerilla: 6 vaihetta
Video: Переход. Я нашёл нечто страшное в доме своего дяди. Джеральд Даррелл 2024, Marraskuu
Anonim
Luo PWM -aalto PIC -mikrokontrollerilla
Luo PWM -aalto PIC -mikrokontrollerilla
Luo PWM -aalto PIC -mikrokontrollerilla
Luo PWM -aalto PIC -mikrokontrollerilla
Luo PWM -aalto PIC -mikrokontrollerilla
Luo PWM -aalto PIC -mikrokontrollerilla
Luo PWM -aalto PIC -mikrokontrollerilla
Luo PWM -aalto PIC -mikrokontrollerilla

MIKÄ ON PWM?

PWM STANDS PULSE WIDTH MODULATION on pulssin leveyttä säätelevä tekniikka.

Tämän käsitteen ymmärtämiseksi harkitse selvästi kellopulssia tai mitä tahansa neliöaaltosignaalia, jonka käyttöjakso on 50%, mikä tarkoittaa, että Ton- ja Toff -aika ovat samat. ajanjakso.

Yllä olevassa kuvassa tämän aallon käyttöjakso on 50%

Toimintasykli = (ON -aika / kokonaisaika)*100

ON -aika - aika, jonka signaali oli korkea

POIS -aika - aika, jonka signaali oli alhainen

Vaihe 1: Mikro -ohjaimen valinta

Mikro -ohjaimen valinta
Mikro -ohjaimen valinta

Sopivan mikro -ohjaimen valitseminen projektille tämä on olennainen osa projektia PWM -signaaleja voidaan tuottaa PWM -kanavilla varustetuissa mikro -ohjaimissa (CCP -rekisterit). voit ladata taulukon linkin alla

PIC16F877a -tietolomake napsauta tätä

CCP -moduuli vastaa PWM -signaalin tuottamisesta. CCP1 ja CCP2 multipleksoidaan PORTC: llä. PORTC on 8-bittinen kaksisuuntainen portti. Vastaava datasuuntarekisteri on TRISC. Kun asetat TRISC -bitin (= 1), tuloksi otetaan vastaava PORTC -nasta. Jos poistat TRISC -bitin (= 0), vastaava PORTC -nasta on ulostulo.

TRISC = 0; // Tämän bitin tyhjentäminen tekee PORTC: stä tuloksen

Vaihe 2: MÄÄRITÄ CCP -MODUULI

MÄÄRITÄ CCP -MODUULI
MÄÄRITÄ CCP -MODUULI
MÄÄRITÄ CCP -MODUULI
MÄÄRITÄ CCP -MODUULI

CCP - CAPTURE/COMPARE/PWM MODULES

Jokainen Capture/Compare/PWM (CCP) -moduuli sisältää 16-bittisen rekisterin, joka voi toimia seuraavasti:

• 16-bittinen sieppausrekisteri

• 16-bittinen vertailurekisteri

• PWM Master/Slave Duty Cycle -rekisteri

Määritä CCP1CON -rekisteri PWM -tilaan

Rekisterin kuvaus

CCPxCON Tätä rekisteriä käytetään CCP -moduulin määrittämiseen Capture/Compare/PWM -toiminnolle.

CCPRxL Tämä rekisteri sisältää PWM: n 8 Mb: n bitit, alemmat 2-bitit ovat osa CCPxCON-rekisteriä.

TMR2 Vapaakäyntilaskuri, jota verrataan CCPR1L: ään ja PR2: een PWM -lähdön tuottamiseksi.

Nyt käytän binaaria edustamaan bittejä CCP1CON -rekisterin määrittämiseen.

katso yllä oleva kuva.

CCP1CON = 0b00001111;

Voit myös käyttää hex -muotoa

CCP1CON = 0x0F; // CCP1CON -rekisterin määrittäminen PWM -tilaa varten

Vaihe 3: Timer2 -moduulin määrittäminen (TMR2 -rekisteri)

Timer2 -moduulin määrittäminen (TMR2 -rekisteri)
Timer2 -moduulin määrittäminen (TMR2 -rekisteri)

Ajastin2 on 8-bittinen ajastin, jossa on esiasetin ja jälkikäyttö. Sitä voidaan käyttää PWM -aikapohjana CCP -moduulin (-moduulien) PWM -moodille. TMR2 -rekisteri on luettavissa ja kirjoitettavissa, ja se tyhjennetään millä tahansa laitteella.

T2CON -rekisteri näkyy

Esiasteikko ja jälkiasteikko säätävät muodostetun PWM -aallon lähtötaajuutta.

Taajuus = kellotaajuus/(4*esiskaalain*(PR2-TMR2)*Jälkiaskelkaasu*määrä)

Missä Tout = 1/taajuus

T2CON = 0b00000100;

Tämä tuottaa 2,5 KHz @ 1Mhz tai 100KHz @ 4MHz kristallin (käytännössä tälle PWM -taajuudelle on rajoitus, katso tarkemmat tiedot)

heksadesimaatio

T2CON = 0x04; // ota T2CON käyttöön ilman esiasetinta ja jälkiasteikkoa

Vaihe 4: PR2: n määrittäminen (Timer2 -jaksorekisteri)

Timer2-moduulissa on 8-bittinen jaksorekisteri PR2. Ajastin2 kasvaa 00h: sta, kunnes se vastaa PR2: ta, ja palautuu sitten 00h: ksi seuraavan lisäysjakson aikana. PR2 on luettava ja kirjoitettava rekisteri. PR2 -rekisteri alustetaan FFh: ksi nollaushetkellä.

Kun asetat sopivan alueen PR2: lle, voit muuttaa muodostetun PWM -aallon toimintajaksoa

PR2 = 100; // Aseta sykliaika 100, jos haluat muuttaa käyttöjaksoa 0-100

Yksinkertaisuuden vuoksi käytän PR2 = 100 tekemällä CCPR1L = 80; 80% käyttöjakso voidaan saavuttaa.

Vaihe 5: Määritä CCPR1l -moduuli

Koska PR2 = 100 CCPR1l voidaan konfiguroida missä tahansa välillä 0-100 halutun käyttöjakson saavuttamiseksi.

Vaihe 6: Kirjoita luonnos sinulle MPLAB X IDE Koodi annetaan alla

Kirjoita luonnos sinulle MPLAB X IDE Koodi annetaan alla
Kirjoita luonnos sinulle MPLAB X IDE Koodi annetaan alla

#sisältää

void delay (int a) // funktio viiveen luomiseksi {

(int i = 0; i <a; i ++)

{

for (int j = 0; j <144; j ++);

}

}

void main ()

{TRISC = 0; // Tämän bitin tyhjentäminen tekee PORTC: stä tuloksen.

CCP1CON = 0x0F; // CCP1CON -rekisterin määrittäminen PWM -tilaa varten

T2CON = 0x04; // ota T2CON käyttöön ilman esiasetinta ja jälkiasteikkoa.

PR2 = 100; // Aseta työkiertoaika 100, jos haluat muuttaa käyttöjaksoa 0-100

samalla (1) {

CCPR1L = 75; // tuotti 75%: n käyttöjakson viiveen (1);

}

}

Olen myös tehnyt pieniä muutoksia koodiin niin, että generoidun PWM -aallon taajuus

Tämä koodi on simuloitu proteuksessa ja lähtö PWM -aalto näkyy alla. Lähetä tämä kuva -kehityskorteillesi käyttämällä #include sopivilla kokoonpanobiteillä.

Kiitos

Suositeltava: