Generovanie vlny PWM s mikrokontrolérom PIC: 6 krokov
Generovanie vlny PWM s mikrokontrolérom PIC: 6 krokov
Anonim
Generujte vlnu PWM s mikrokontrolérom PIC
Generujte vlnu PWM s mikrokontrolérom PIC
Generujte vlnu PWM s mikrokontrolérom PIC
Generujte vlnu PWM s mikrokontrolérom PIC
Generujte vlnu PWM s mikrokontrolérom PIC
Generujte vlnu PWM s mikrokontrolérom PIC

ČO JE PWM?

STANDARDY PWM NA MODULÁCIU ŠÍRKY PULZU je technika, pomocou ktorej sa mení šírka impulzu.

Aby sme pochopili tento koncept, jasne zvážte hodinový impulz alebo akýkoľvek signál štvorcovej vlny, ktorý má 50% pracovný cyklus, čo znamená, že perióda Ton a Toff je rovnaká. Celková doba trvania signálu, ktorá bola vysoká, a doby, počas ktorej bol signál nízky, sa nazýva celková. časový úsek.

Pre obrázok zobrazený vyššie má táto vlna pracovný cyklus 50%

Pracovný cyklus = (čas zapnutia / celkový čas)*100

Čas zapnutia - čas, počas ktorého bol signál vysoký

Čas vypnutia - časový nepriateľ, ktorého signál bol nízky Celkový čas - Celkový časový úsek impulzu (čas zapnutia aj vypnutia)

Krok 1: Výber mikrokontroléra

Výber mikrokontroléra
Výber mikrokontroléra

Výber vhodného mikrokontroléra pre projekt je základnou súčasťou projektu Signály PWM je možné generovať v mikrokontroléroch s kanálmi PWM (registre CCP). V prípade tohto projektu plánujem držať sa pic16f877. odkaz na technický list si môžete stiahnuť nižšie

Dátový list PIC16F877a kliknite sem

Modul CCP je zodpovedný za produkciu signálu PWM. CCP1 a CCP2 sú multiplexované s PORTC. PORTC je 8-bitový obojsmerný port. Zodpovedajúci register smeru údajov je TRISC. Nastavením bitu TRISC (= 1) sa príslušný vstup PORTC použije. Vymazaním bitu TRISC (= 0) sa príslušný pin PORTC stane výstupom.

TRISC = 0; // Vymazaním tohto bitu sa stane PORTC ako výstup

Krok 2: KONFIGURUJTE MODUL CCP

KONFIGURUJTE MODUL CCP
KONFIGURUJTE MODUL CCP
KONFIGURUJTE MODUL CCP
KONFIGURUJTE MODUL CCP

CCP - CAPTURE/COMPARE/PWM MODULES

Každý modul Capture/Compare/PWM (CCP) obsahuje 16-bitový register, ktorý môže fungovať ako:

• 16-bitový register Capture

• 16-bitový porovnávací register

• Register pracovného cyklu Master/Slave PWM

Nakonfigurujte register CCP1CON na režim PWM

Popis registra

CCPxCON Tento register sa používa na konfiguráciu modulu CCP na prevádzku Capture/Compare/PWM.

CCPRxL Tento register pojme 8-Msb bitov PWM, nižšie 2-bity budú súčasťou registra CCPxCON.

TMR2 Voľne bežiaci čítač, ktorý bude porovnávaný s CCPR1L a PR2 na generovanie výstupu PWM.

Teraz použijem binárne súbory na konfiguráciu registra CCP1CON.

pozri obrázok vyššie.

CCP1CON = 0b00001111;

Môžete tiež použiť hexadecimálny formát

CCP1CON = 0x0F; // konfigurácia registra CCP1CON pre režim PWM

Krok 3: Konfigurácia modulu Timer2 (register TMR2)

Konfigurácia modulu Timer2 (register TMR2)
Konfigurácia modulu Timer2 (register TMR2)

Timer2 je 8-bitový časovač s predzváračom a postcalerom. Môže byť použitý ako časová základňa PWM pre režim PWM modulov CCP. Register TMR2 je čitateľný a zapisovateľný a je vymazaný pri každom resete zariadenia.

Zobrazí sa register T2CON

Prescale a postcale upraví výstupnú frekvenciu generovanej vlny PWM.

Frekvencia = taktovacia frekvencia/(4*predzvárač*(PR2-TMR2)*postscaler*počet)

Kde Tout = 1/frekvencia

T2CON = 0b00000100;

Výsledkom bude generovanie kryštálu 2,5 KHz @ 1 Mhz alebo 100 KHz @ 4 MHz (prakticky existuje obmedzenie pre túto frekvenciu PWM, ďalšie podrobnosti nájdete v konkrétnom technickom liste)

hexadecimálna reprezentácia

T2CON = 0x04; // povoľte T2CON bez konfigurácie Prescaler a PostScale

Krok 4: Konfigurácia PR2 (časový register Timer2)

Modul Timer2 má 8-bitový periodický register PR2. Časovač 2 sa zvyšuje od 00 h, kým sa nezhoduje s PR2, a potom sa resetuje na 00 h v nasledujúcom prírastkovom cykle. PR2 je čitateľný a zapisovateľný register. Register PR2 sa po resetovaní inicializuje na FFh.

Nastavenie vhodného rozsahu pre PR2 umožní použitie na zmenu pracovného cyklu generovanej vlny PWM

PR2 = 100; // Nastavte čas cyklu na 100 pre zmenu pracovného cyklu od 0 do 100

Pre jednoduchosť používam PR2 = 100 vytvorením CCPR1L = 80; Je možné dosiahnuť 80% pracovný cyklus.

Krok 5: Konfigurujte modul CCPR1l

Pretože PR2 = 100 CCPR1l je možné nakonfigurovať kdekoľvek od 0 do 100, aby sa dosiahol požadovaný pracovný cyklus.

Krok 6: Napíšte náčrt na seba MPLAB X IDE Kód je uvedený nižšie

Napíšte náčrt na seba MPLAB X IDE, kód je uvedený nižšie
Napíšte náčrt na seba MPLAB X IDE, kód je uvedený nižšie

#zahrnúť

void delay (int a) // funkcia na generovanie oneskorenia {

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

{

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

}

}

neplatné hlavné ()

{TRISC = 0; // Vymazaním tohto bitu sa stane PORTC ako výstup.

CCP1CON = 0x0F; // konfigurácia registra CCP1CON pre režim PWM

T2CON = 0x04; // povoľte T2CON bez konfigurácie Prescaler a PostScale.

PR2 = 100; // Nastavte čas cyklu na 100 pre zmenu pracovného cyklu od 0 do 100

pričom (1) {

CCPR1L = 75; // generované 75% oneskorenie pracovného cyklu (1);

}

}

Tiež som vykonal malú úpravu kódu, aby frekvencia generovanej vlny PWM

Toto je kód simulovaný v proteuse a výstupná vlna PWM je zobrazená nižšie. Ak to chcete nahrať na svoje vývojové dosky pre obrázky, použite #include s vhodnými konfiguračnými bitmi.

Ďakujem