Satura rādītājs:

Izveidojiet PWM viļņu ar PIC mikrokontrolleri: 6 soļi
Izveidojiet PWM viļņu ar PIC mikrokontrolleri: 6 soļi

Video: Izveidojiet PWM viļņu ar PIC mikrokontrolleri: 6 soļi

Video: Izveidojiet PWM viļņu ar PIC mikrokontrolleri: 6 soļi
Video: Review of ZK-PP2K 8A PWM 4.5V to 30V Motor Driver | Robojax 2024, Novembris
Anonim
Izveidojiet PWM Wave ar PIC mikrokontrolleri
Izveidojiet PWM Wave ar PIC mikrokontrolleri
Izveidojiet PWM Wave ar PIC mikrokontrolleri
Izveidojiet PWM Wave ar PIC mikrokontrolleri
Izveidojiet PWM Wave ar PIC mikrokontrolleri
Izveidojiet PWM Wave ar PIC mikrokontrolleri
Izveidojiet PWM Wave ar PIC mikrokontrolleri
Izveidojiet PWM Wave ar PIC mikrokontrolleri

KAS IR PWM?

PWM STANDS PULSE WIDTH MODULATION ir metode, ar kuras palīdzību tiek mainīts impulsa platums.

Lai skaidri saprastu šo jēdzienu, ņemiet vērā pulksteņa impulsu vai jebkuru kvadrātveida viļņu signālu, kuram ir 50% darba cikls, kas nozīmē, ka tonnas un izslēgšanās periods ir vienāds, kopējo ilgumu, kurā signāls bija augsts, un ilgumu, kurā signāls bija zems laika periods.

Augstāk redzamajam attēlam šī viļņa darbības cikls ir 50%

Darba cikls = (ieslēgšanas laiks / kopējais laiks)*100

ON laiks - laiks, kurā signāls bija augsts

IZSLĒGŠANAS laiks - laiks, kad signāls bija zems Kopējais laiks - kopējais impulsa laika periods (gan ieslēgšanas, gan izslēgšanas laiks)

1. darbība: mikrokontrollera izvēle

Mikrokontrollera izvēle
Mikrokontrollera izvēle

Izvēloties projektam atbilstošu mikrokontrolleri, šī ir projekta būtiskā daļa. PWM signālus var ģenerēt mikrokontrolleros ar PWM kanāliem (CCP reģistri). Šim projektam es plānoju pieturēties pie pic16f877. datu lapas saiti varat lejupielādēt zemāk

PIC16F877a datu lapa noklikšķiniet šeit

CCP modulis ir atbildīgs par PWM signāla ražošanu. CCCP1 un CCP2 ir multipleksēti ar PORTC. PORTC ir 8 bitu plašs divvirzienu ports. Atbilstošais datu virzienu reģistrs ir TRISC. Iestatot TRISC bitu (= 1), ievadīs atbilstošo PORTC tapu. Dzēšot TRISC bitu (= 0), attiecīgā PORTC tapa tiks izvadīta.

TRISC = 0; // Šī bita notīrīšana padarīs PORTC par izvadi

2. darbība. KONFIGURĒT CCP MODULI

KONFIGURĒT CCP MODULI
KONFIGURĒT CCP MODULI
KONFIGURĒT CCP MODULI
KONFIGURĒT CCP MODULI

CCP - CAPTURE/COMPARE/PWM MODULES

Katrā Capture/Compare/PWM (CCP) modulī ir 16 bitu reģistrs, kas var darboties kā:

• 16 bitu uztveršanas reģistrs

• 16 bitu salīdzināšanas reģistrs

• PWM Master/Slave Duty Cycle reģistrs

Konfigurējiet CCP1CON reģistru PWM režīmā

Reģistra apraksts

CCPxCON Šis reģistrs tiek izmantots, lai konfigurētu CCP moduli Capture/Compare/PWM opertaion.

CCPRxL Šajā reģistrā ir PWM 8 Msb biti, zemākie 2 biti būs daļa no CCPxCON reģistra.

TMR2 Brīvas darbības skaitītājs, kas tiks salīdzināts ar CCPR1L un PR2, lai ģenerētu PWM izeju.

Tagad es izmantošu bināro, lai attēlotu bitus, lai konfigurētu CCP1CON reģistru.

skatiet attēlu iepriekš.

CCP1CON = 0b00001111;

Varat arī izmantot hex formātu

CCP1CON = 0x0F; // CCP1CON reģistra konfigurēšana PWM režīmam

3. darbība. Taimera moduļa konfigurēšana (TMR2 reģistrs)

Timer2 moduļa konfigurēšana (TMR2 reģistrs)
Timer2 moduļa konfigurēšana (TMR2 reģistrs)

Timer2 ir 8 bitu taimeris ar prescaler un postcaler. To var izmantot kā PWM laika bāzi CCP moduļa (-u) PWM režīmam. TMR2 reģistrs ir lasāms un rakstāms, un tas tiek notīrīts no jebkuras ierīces Atiestatīt.

Tiek parādīts T2CON reģistrs

Iepriekšēja skala un pēcskaņa pielāgos ģenerētā PWM viļņa izejas frekvenci.

Frekvence = pulksteņa frekvence/(4*prescaler*(PR2-TMR2)*Postscaler*skaits)

Kur Tout = 1/frekvence

T2CON = 0b00000100;

Tas radīs 2,5 KHz @ 1Mhz vai 100KHz @ 4MHz kristālu (praktiski šai PWM frekvencei ir ierobežojums, lai iegūtu sīkāku informāciju, skatiet konkrētu datu lapu)

sešstūra attēlojums

T2CON = 0x04; // iespējot T2CON bez prescaler un postcala konfigurācijas

4. darbība: PR2 konfigurēšana (Timer2 perioda reģistrs)

Timer2 modulim ir 8 bitu periodu reģistrs PR2. Taimeris 2 palielinās no 00h, līdz tas atbilst PR2, un pēc tam nākamajā pieauguma ciklā tiek atiestatīts uz 00h. PR2 ir lasāms un rakstāms reģistrs. Pēc atiestatīšanas PR2 reģistrs tiek inicializēts uz FFh.

Atbilstoša PR2 diapazona iestatīšana ļaus mainīt ģenerētā PWM viļņa darba ciklu

PR2 = 100; // Iestatiet cikla laiku uz 100, lai mainītu darba ciklu no 0 līdz 100

Vienkāršības labad es izmantoju PR2 = 100, padarot CCPR1L = 80; Ir iespējams sasniegt 80% darba ciklu.

5. darbība: konfigurējiet CCPR1l moduli

Tā kā PR2 = 100 CCPR1l var konfigurēt jebkurā vietā no 0 līdz 100, lai iegūtu vēlamo darba ciklu.

6. solis: uzrakstiet skici uz jums MPLAB X IDE kods ir dots zemāk

Uzrakstiet skici uz jums MPLAB X IDE Kods ir dots zemāk
Uzrakstiet skici uz jums MPLAB X IDE Kods ir dots zemāk

#iekļaut

void delay (int a) // funkcija aizkaves ģenerēšanai {

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

{

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

}

}

void main ()

{TRISC = 0; // Šī bita notīrīšana padarīs PORTC par izvadi.

CCP1CON = 0x0F; // CCP1CON reģistra konfigurēšana PWM režīmam

T2CON = 0x04; // iespējot T2CON bez prescaler un postcala konfigurācijas.

PR2 = 100; // Iestatiet cikla laiku uz 100, lai mainītu darba ciklu no 0 līdz 100

kamēr (1) {

CCPR1L = 75; // ģenerēts 75% darba cikla kavējums (1);

}

}

Esmu arī nedaudz mainījis kodu, lai ģenerētā PWM viļņa frekvence

Šis kods tiek simulēts proteusā, un izejas PWM vilnis ir parādīts zemāk. Lai to augšupielādētu savā attēlu izstrādes dēļā, izmantojiet #include ar piemērotiem konfigurācijas bitiem.

Paldies

Ieteicams: