Cuprins:

Generați PWM Wave cu microcontrolerul PIC: 6 pași
Generați PWM Wave cu microcontrolerul PIC: 6 pași

Video: Generați PWM Wave cu microcontrolerul PIC: 6 pași

Video: Generați PWM Wave cu microcontrolerul PIC: 6 pași
Video: Generating PWM signals in RL78 microcontroller 2024, Noiembrie
Anonim
Generați PWM Wave cu microcontrolerul PIC
Generați PWM Wave cu microcontrolerul PIC
Generați PWM Wave cu microcontrolerul PIC
Generați PWM Wave cu microcontrolerul PIC
Generați PWM Wave cu microcontrolerul PIC
Generați PWM Wave cu microcontrolerul PIC
Generați PWM Wave cu microcontrolerul PIC
Generați PWM Wave cu microcontrolerul PIC

CE ESTE PWM?

PWM STANDS PENTRU MODULAREA LĂȚIMII PULSULOR este o tehnică prin care lățimea pulsului este variată.

Pentru a înțelege acest concept, luați în considerare în mod clar un impuls de ceas sau orice semnal de undă pătrată, are un ciclu de funcționare de 50%, ceea ce înseamnă că perioada Ton și Toff este aceeași, durata totală pentru care semnalul a fost ridicat și durata pentru care semnalul a fost scăzut se numește total perioada de timp.

Pentru imaginea de mai sus această undă are un ciclu de funcționare de 50%

Ciclul de funcționare = (timp ON / Timp total) * 100

ON time - timp pentru care semnalul a fost ridicat

Timp OFF - Timpul care semnalul a fost scăzut Timp total - Perioada totală de timp a impulsului (atât timp ON, cât și OFF)

Pasul 1: Selectarea microcontrolerului

Selectarea microcontrolerului
Selectarea microcontrolerului

Selectarea microcontrolerului adecvat pentru proiect aceasta este partea esențială a proiectului Semnalele PWM pot fi generate în microcontrolere cu canale PWM (registre CCP). Pentru acest proiect intenționez să rămân cu pic16f877. puteți descărca link-ul fișei tehnice este dat mai jos

Foaie de date PIC16F877a faceți clic aici

Modulul CCP este responsabil pentru producerea semnalului PWM. CCP1 și CCP2 sunt multiplexate cu PORTC. PORTC este un port bidirecțional lat de 8 biți. Registrul de direcție a datelor corespunzător este TRISC. Setarea bitului TRISC (= 1) va face să ia pinul PORTC corespunzător ca intrare. Ștergerea unui bit TRISC (= 0) va face pinul PORTC corespunzător o ieșire.

TRISC = 0; // Ștergerea acestui bit va face PORTC ca ieșire

Pasul 2: CONFIGURAȚI MODULUL CCP

CONFIGURAȚI MODULUL CCP
CONFIGURAȚI MODULUL CCP
CONFIGURAȚI MODULUL CCP
CONFIGURAȚI MODULUL CCP

CCP - MODULURI CAPTURARE / COMPARARE / PWM

Fiecare modul Capture / Compare / PWM (CCP) conține un registru pe 16 biți care poate funcționa ca:

• Registr de captură pe 16 biți

• Registrul de comparație pe 16 biți

• Registrul PWM Master / Slave Duty Cycle

Configurați registrul CCP1CON în modul PWM

Descriere registru

CCPxCON Acest registru este utilizat pentru a configura modulul CCP pentru funcționarea Capture / Compare / PWM.

CCPRxL Acest registru deține biții de 8 Mb de PWM, 2 biți inferiori vor face parte din registrul CCPxCON.

Contor de rulare gratuit TMR2 care va fi comparat cu CCPR1L și PR2 pentru generarea ieșirii PWM.

Acum voi folosi binar pentru a reprezenta biții pentru a configura registrul CCP1CON.

consultați imaginea de mai sus.

CCP1CON = 0b00001111;

Puteți, de asemenea, să formatați hex

CCP1CON = 0x0F; // configurarea registrului CCP1CON pentru modul PWM

Pasul 3: Configurarea modulului Timer2 (Registrul TMR2)

Configurarea modulului Timer2 (Registrul TMR2)
Configurarea modulului Timer2 (Registrul TMR2)

Timer2 este un temporizator de 8 biți cu un prescaler și un postscaler. Poate fi folosit ca bază de timp PWM pentru modul PWM al modulului (modulelor) CCP. Registrul TMR2 poate fi citit și scris și este șters pe orice resetare a dispozitivului.

Este afișat registrul T2CON

Prescala și postcala vor regla frecvența de ieșire a undei PWM generate.

Frecvența = frecvența ceasului / (4 * prescaler * (PR2-TMR2) * Postscaler * număr)

Unde Tout = 1 / frecvență

T2CON = 0b00000100;

Acest lucru va genera cristal de 2,5 KHz @ 1Mhz sau 100KHz @ 4MHz (practic există o limitare pentru această frecvență PWM consultați fișa de date specială pentru mai multe detalii)

reprezentare hexagonală

T2CON = 0x04; // activați T2CON fără configurare Prescaler și postscale

Pasul 4: Configurarea PR2 (Timer2 Period Register)

Modulul Timer2 are un registru de perioadă de 8 biți, PR2. Timer2 crește de la 00h până când se potrivește cu PR2 și apoi se resetează la 00h în următorul ciclu de incrementare. PR2 este un registru care poate fi citit și scris. Registrul PR2 este inițializat la FFh după resetare.

Setarea unui interval adecvat pentru PR2 va permite utilizarea să schimbe ciclul de funcționare al undei PWM generate

PR2 = 100; // Setați timpul ciclului la 100 pentru a varia ciclul de funcționare de la 0 la 100

Pentru simplitate, folosesc PR2 = 100 făcând CCPR1L = 80; Ciclul de funcționare de 80% poate fi realizat.

Pasul 5: Configurați modulul CCPR1l

Deoarece PR2 = 100 CCPR1l poate fi configurat oriunde între 0-100 pentru a obține ciclul de funcționare dorit.

Pasul 6: Scrieți schița pe dvs. MPLAB X IDE, codul este dat mai jos

Scrieți schița pe dvs. MPLAB X IDE, codul este dat mai jos
Scrieți schița pe dvs. MPLAB X IDE, codul este dat mai jos

#include

void delay (int a) // funcție pentru a genera întârziere {

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

{

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

}

}

void main ()

{TRISC = 0; // Ștergerea acestui bit va face PORTC ca ieșire.

CCP1CON = 0x0F; // configurarea registrului CCP1CON pentru modul PWM

T2CON = 0x04; // activați T2CON fără configurare Prescaler și postscale.

PR2 = 100; // Setați timpul ciclului la 100 pentru a varia ciclul de funcționare de la 0 la 100

în timp ce (1) {

CCPR1L = 75; // a generat 75% întârziere a ciclului de funcționare (1);

}

}

De asemenea, am făcut o mică modificare a codului, astfel încât frecvența undei PWM generate

Acesta este codul este simulat în proteus și unda PWM de ieșire este prezentată mai jos.

Mulțumesc

Recomandat: