Obsah:

Generování vlny PWM s mikrokontrolérem PIC: 6 kroků
Generování vlny PWM s mikrokontrolérem PIC: 6 kroků

Video: Generování vlny PWM s mikrokontrolérem PIC: 6 kroků

Video: Generování vlny PWM s mikrokontrolérem PIC: 6 kroků
Video: ESP8266 Diesel Injector Purging Station - PWM NodeMCU pump flow Control (Subtittled) 2024, Listopad
Anonim
Generujte vlnu PWM s mikrokontrolérem PIC
Generujte vlnu PWM s mikrokontrolérem PIC
Generujte vlnu PWM s mikrokontrolérem PIC
Generujte vlnu PWM s mikrokontrolérem PIC
Generujte vlnu PWM s mikrokontrolérem PIC
Generujte vlnu PWM s mikrokontrolérem PIC
Generujte vlnu PWM s mikrokontrolérem PIC
Generujte vlnu PWM s mikrokontrolérem PIC

CO JE PWM?

STANDARDY PWM PRO MODULACI ŠÍŘKY PULZU je technika, pomocí které se mění šířka pulzu.

Abychom porozuměli tomuto konceptu, jasně zvažte hodinový impuls nebo jakýkoli signál čtvercové vlny, který má 50% pracovní cyklus, což znamená, že doba Ton a Toff je stejná. Celková doba, po kterou byl signál vysoký, a doba, po kterou byl signál nízký, se nazývá celkový časový úsek.

Pro výše uvedený obrázek má tato vlna pracovní cyklus 50%

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

ON time - čas, po který byl signál vysoký

VYPNUTÝ čas - časový nepřítel, jehož signál byl nízký Celkový čas - Celkový časový úsek pulzu (čas ZAP i VYP)

Krok 1: Výběr mikrokontroléru

Výběr mikrokontroléru
Výběr mikrokontroléru

Výběr vhodného mikrokontroléru pro projekt je základní součástí projektu Signály PWM lze generovat v mikrokontrolérech s kanály PWM (registry CCP). Pro tento projekt plánuji zůstat u pic16f877. níže si můžete stáhnout odkaz na datový list

Datový list PIC16F877a klikněte zde

Modul CCP je zodpovědný za produkci signálu PWM. CCP1 a CCP2 jsou multiplexovány s PORTC. PORTC je 8bitový široký obousměrný port. Odpovídající registr směru dat je TRISC. Nastavení TRISC bitu (= 1) způsobí, že se jako vstup použije odpovídající pin PORTC. Vymazáním bitu TRISC (= 0) se příslušný pin PORTC stane výstupem.

TRISC = 0; // Vymazáním tohoto bitu se jako výstup vytvoří PORTC

Krok 2: KONFIGURACE CCP MODULU

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 16bitový registr, který může fungovat jako:

• 16bitový registr zachycení

• 16bitový srovnávací registr

• Registr pracovního cyklu PWM Master/Slave

Konfigurujte registr CCP1CON do režimu PWM

Popis registru

CCPxCON Tento registr se používá ke konfiguraci modulu CCP pro provoz Capture/Compare/PWM.

CCPRxL Tento registr uchovává 8-Msb bitů PWM, nižší 2bitové budou součástí registru CCPxCON.

TMR2 Volně běžící čítač, který bude porovnáván s CCPR1L a PR2 pro generování výstupu PWM.

Nyní použiji binární reprezentaci bitů ke konfiguraci registru CCP1CON.

viz obrázek výše.

CCP1CON = 0b00001111;

Můžete také použít hexadecimální formát

CCP1CON = 0x0F; // konfigurace registru CCP1CON pro režim PWM

Krok 3: Konfigurace modulu Timer2 (registr TMR2)

Konfigurace modulu Timer2 (registr TMR2)
Konfigurace modulu Timer2 (registr TMR2)

Timer2 je 8bitový časovač s předřazeným a postcalujícím. Lze jej použít jako časovou základnu PWM pro režim PWM modulů CCP. Registr TMR2 je čitelný a zapisovatelný a je vymazán při každém resetu zařízení.

Zobrazí se registr T2CON

Předškála a měřítko upraví výstupní frekvenci generované vlny PWM.

Frequency = taktovací frekvence/(4*předzměňovač*(PR2-TMR2)*postscaler*počet)

Kde Tout = 1/frekvence

T2CON = 0b00000100;

Tím se vygeneruje krystal 2,5 KHz @ 1Mhz nebo 100KHz @ 4MHz (prakticky existuje omezení pro tuto frekvenci PWM, další podrobnosti viz konkrétní list)

hexadecimální zobrazení

T2CON = 0x04; // povolit T2CON bez konfigurace Prescaler a PostScale

Krok 4: Konfigurace PR2 (časový registr Timer2)

Modul Timer2 má 8bitový periodický registr PR2. Časovač 2 se zvyšuje od 00 h, dokud se neshoduje s PR2, a poté se resetuje na 00 h v dalším přírůstkovém cyklu. PR2 je čitelný a zapisovatelný registr. Po resetu je registr PR2 inicializován na FFh.

Nastavení vhodného rozsahu pro PR2 umožní použití ke změně pracovního cyklu generované vlny PWM

PR2 = 100; // Nastavením doby cyklu na 100 se mění pracovní cyklus od 0 do 100

Pro jednoduchost používám PR2 = 100 vytvořením CCPR1L = 80; Lze dosáhnout 80% pracovního cyklu.

Krok 5: Konfigurace modulu CCPR1l

Protože PR2 = 100, lze CCPR1l konfigurovat kdekoli mezi 0-100 a získat požadovaný pracovní cyklus.

Krok 6: Napište na sebe skicu MPLAB X IDE, kód je uveden níže

Napište na sebe skicu MPLAB X IDE, kód je uveden níže
Napište na sebe skicu MPLAB X IDE, kód je uveden níže

#zahrnout

void delay (int a) // funkce pro generování zpoždění {

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

{

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

}

}

neplatný hlavní ()

{TRISC = 0; // Vymazáním tohoto bitu se jako výstup vytvoří PORTC.

CCP1CON = 0x0F; // konfigurace registru CCP1CON pro režim PWM

T2CON = 0x04; // povolit T2CON bez konfigurace Prescaler a PostScale.

PR2 = 100; // Nastavením doby cyklu na 100 se mění pracovní cyklus od 0 do 100

zatímco (1) {

CCPR1L = 75; // generováno 75% zpoždění pracovního cyklu (1);

}

}

Také jsem provedl malou úpravu kódu, aby frekvence generované vlny PWM

Toto je kód simulovaný v proteusu a výstupní PWM vlna je zobrazena níže. Chcete -li to nahrát na své vývojové desky pro obrázky, použijte #include s vhodnými konfiguračními bity.

Děkuji

Doporučuje: