Ustvarite PWM val z mikrokrmilnikom PIC: 6 korakov
Ustvarite PWM val z mikrokrmilnikom PIC: 6 korakov
Anonim
Ustvarite PWM val z mikrokrmilnikom PIC
Ustvarite PWM val z mikrokrmilnikom PIC
Ustvarite PWM val z mikrokrmilnikom PIC
Ustvarite PWM val z mikrokrmilnikom PIC
Ustvarite PWM val z mikrokrmilnikom PIC
Ustvarite PWM val z mikrokrmilnikom PIC

KAJ JE PWM?

PWM STOJI ZA MODULACIJO ŠIRINE PULZA je tehnika, s katero se spreminja širina impulza.

Če želite razumeti ta koncept, jasno upoštevajte taktni impulz ali kateri koli signal kvadratnega vala, ki ima 50% obratovalni cikel, kar pomeni, da sta obdobje Ton in Toff enako. časovno obdobje.

Za zgornjo sliko ima ta val obratovalni cikel 50%

Delovni cikel = (čas vklopa / skupni čas)*100

ON čas - čas, za katerega je bil signal visok

Čas izklopa - časovni sovražnik, signal katerega je bil nizek Skupni čas - Skupno časovno obdobje impulza (čas vklopa in izklopa)

1. korak: Izbira mikrokrmilnika

Izbira mikrokrmilnika
Izbira mikrokrmilnika

Izbira ustreznega mikrokrmilnika za projekt je bistveni del projekta. Signale PWM lahko generiramo v mikrokrmilnikih s kanali PWM (registri CCP). Za ta projekt se nameravam držati pic16f877. povezavo do podatkovnega lista lahko prenesete spodaj

Podatkovni list PIC16F877a kliknite tukaj

Modul CCP je odgovoren za proizvodnjo signala PWM. CCP1 in CCP2 sta multipleksirana s PORTC. PORTC je 8-bitna široka dvosmerna vrata. Ustrezni register smeri podatkov je TRISC. Če nastavite bit TRISC (= 1), boste za vhod vzeli ustrezen pin PORTC. Če počistite bit TRISC (= 0), bo ustrezen pin PORTC izhod.

TRISC = 0; // Če izbrišete ta bit, bo PORTC izhod

2. korak: NASTAVITE MODUL CCP

NASTAVITE MODUL CCP
NASTAVITE MODUL CCP
NASTAVITE MODUL CCP
NASTAVITE MODUL CCP

CCP - MODULI ZAJEMANJA/PRIMERJANJA/PWM

Vsak modul Capture/Compare/PWM (CCP) vsebuje 16-bitni register, ki lahko deluje kot:

• 16-bitni register zajemanja

• 16-bitni register za primerjavo

• Register glavnega/podrejenega delovnega cikla PWM

Register CCP1CON konfigurirajte v način PWM

Opis registra

CCPxCON Ta register se uporablja za konfiguriranje modula CCP za delovanje Capture/Compare/PWM.

CCPRxL Ta register vsebuje 8-Msb bite PWM, spodnji 2-bitni bodo del registra CCPxCON.

TMR2 Števec prostega teka, ki ga bodo primerjali s CCPR1L in PR2 za ustvarjanje izhoda PWM.

Zdaj bom uporabil binarno datoteko za predstavitev bitov za konfiguracijo registra CCP1CON.

glej zgornjo sliko.

CCP1CON = 0b00001111;

Lahko tudi šestnajstiško obliko

CCP1CON = 0x0F; // konfiguriranje registra CCP1CON za način PWM

3. korak: Konfiguriranje modula Timer2 (register TMR2)

Konfiguriranje modula Timer2 (register TMR2)
Konfiguriranje modula Timer2 (register TMR2)

Timer2 je 8-bitni časovnik s predkalerjem in časovnikom. Lahko se uporablja kot časovna osnova PWM za način PWM modula (ov) CCP. Register TMR2 je berljiv in zapisljiv ter se počisti na kateri koli napravi Ponastavi.

Prikazan je register T2CON

Predrazmerna in poštna lestvica prilagodita izhodno frekvenco ustvarjenega vala PWM.

Frekvenca = taktna frekvenca/(4*predrazdeljevalec*(PR2-TMR2)*Razvrščevalnik objav*število)

Kjer je Tout = 1/frekvenca

T2CON = 0b00000100;

To bo ustvarilo kristal 2,5 KHz pri 1 Mhz ali 100 kHz pri 4 MHz (praktično obstaja omejitev za to frekvenco PWM, za več podrobnosti glejte poseben podatkovni list)

šestnajsti prikaz

T2CON = 0x04; // omogočimo T2CON brez predrazdelitve in konfiguracije poštne lestvice

4. korak: Konfiguriranje PR2 (Timer2 Period Register)

Modul Timer2 ima 8-bitni časovni register, PR2. Časovnik 2 se povečuje od 00h, dokler se ne ujema s PR2, nato pa se ponastavi na 00h v naslednjem ciklu prirastka. PR2 je berljiv in zapisljiv register. Register PR2 se ob ponastavitvi inicializira na FFh.

Nastavitev ustreznega območja za PR2 bo omogočila uporabo za spreminjanje delovnega cikla ustvarjenega vala PWM

PR2 = 100; // Nastavite čas cikla na 100 za spreminjanje delovnega cikla od 0-100

Zaradi preprostosti uporabljam PR2 = 100 tako, da naredim CCPR1L = 80; 80% delovni cikel je mogoče doseči.

5. korak: Konfigurirajte modul CCPR1l

Ker je PR2 = 100, lahko CCPR1l konfigurirate kjer koli med 0-100, da dobite želeni delovni cikel.

Korak 6: Napišite skico na vas MPLAB X IDE, koda je podana spodaj

Napišite skico na vas MPLAB X IDE, koda je podana spodaj
Napišite skico na vas MPLAB X IDE, koda je podana spodaj

#vključi

void delay (int a) // funkcija za ustvarjanje zamude {

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

{

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

}

}

void main ()

{TRISC = 0; // Če izbrišete ta bit, bo PORTC izhod.

CCP1CON = 0x0F; // konfiguriranje registra CCP1CON za način PWM

T2CON = 0x04; // omogočimo T2CON brez predrazdelitve in konfiguracije poštne lestvice.

PR2 = 100; // Nastavite čas cikla na 100 za spreminjanje delovnega cikla od 0-100

medtem ko (1) {

CCPR1L = 75; // ustvarili 75% zamudo obratovalnega cikla (1);

}

}

Kodo sem tudi nekoliko spremenil, tako da je frekvenca generiranega vala PWM

Ta koda je simulirana v proteusu in spodaj je prikazan izhodni val PWM. Če želite to naložiti na svoje razvojne plošče za slike, uporabite #include z ustreznimi nastavitvenimi bitovi.

Hvala vam