Sadržaj:

Generirajte PWM val pomoću PIC mikrokontrolera: 6 koraka
Generirajte PWM val pomoću PIC mikrokontrolera: 6 koraka

Video: Generirajte PWM val pomoću PIC mikrokontrolera: 6 koraka

Video: Generirajte PWM val pomoću PIC mikrokontrolera: 6 koraka
Video: Julian plays with: Microchip PIC10F322 6-pin Microcontroller 2024, Studeni
Anonim
Generirajte PWM val pomoću PIC mikrokontrolera
Generirajte PWM val pomoću PIC mikrokontrolera
Generirajte PWM val pomoću PIC mikrokontrolera
Generirajte PWM val pomoću PIC mikrokontrolera
Generirajte PWM val pomoću PIC mikrokontrolera
Generirajte PWM val pomoću PIC mikrokontrolera
Generirajte PWM val pomoću PIC mikrokontrolera
Generirajte PWM val pomoću PIC mikrokontrolera

ŠTO JE PWM?

PWM STOJCI ZA MODULACIJU ŠIRINE PULSA je tehnika pomoću koje se mijenja širina pulsa.

Da biste razumjeli ovaj koncept, jasno razmotrite taktni impuls ili bilo koji signal kvadratnog vala koji ima radni ciklus od 50%, što znači da su razdoblje Ton i Toff isto. vremenski period.

Za gornju sliku ovaj val ima radni ciklus od 50%

Radni ciklus = (vrijeme uključivanja / ukupno vrijeme)*100

ON vrijeme - vrijeme za koje je signal bio visok

OFF vrijeme - vremenski neprijatelj čiji je signal bio nizak Ukupno vrijeme -Ukupno vremensko razdoblje impulsa (i ON i OFF vrijeme)

Korak 1: Odabir mikrokontrolera

Odabir mikrokontrolera
Odabir mikrokontrolera

Odabir odgovarajućeg mikrokontrolera za projekt ovo je bitni dio projekta. PWM signali mogu se generirati u mikrokontrolerima s PWM kanalima (CCP registri). Za ovaj projekt planiram se držati slike pic16f877. vezu za podatkovnu tablicu možete preuzeti ispod

PIC16F877a podatkovni list kliknite ovdje

CCP modul je odgovoran za proizvodnju PWM signala. CCP1 i CCP2 su multipleksirani s PORTC -om. PORTC je 8-bitni široki dvosmjerni port. Odgovarajući registar smjera podataka je TRISC. Postavljanje bita TRISC (= 1) učinit će da odgovarajući PORTC pin bude ulaz. Brisanjem bita TRISC (= 0) odgovarajući PORTC pin bit će izlaz.

TRISC = 0; // Brisanjem ovog bita učinit će se PORTC izlazom

Korak 2: KONFIGURIRAJTE CCP MODUL

KONFIGURIRAJTE CCP MODUL
KONFIGURIRAJTE CCP MODUL
KONFIGURIRAJTE CCP MODUL
KONFIGURIRAJTE CCP MODUL

CCP - MODULI HVATANJA/USPOREDBE/PWM

Svaki modul Hvatanje/Usporedba/PWM (CCP) sadrži 16-bitni registar koji može funkcionirati kao:

• 16-bitni registar hvatanja

• 16-bitni usporedni registar

• Registar PWM glavnog/podređenog radnog ciklusa

Konfigurirajte CCP1CON registar u način rada PWM

Opis registra

CCPxCON Ovaj registar se koristi za konfiguriranje CCP modula za rad Hvatanje/Usporedba/PWM.

CCPRxL Ovaj registar sadrži 8-Msb bitove PWM-a, niži 2-bitni bit će dio CCPxCON registra.

TMR2 Brojač slobodnog rada koji će se usporediti s CCPR1L i PR2 za generiranje PWM izlaza.

Sada ću koristiti binarne datoteke za predstavljanje bitova za konfiguraciju registra CCP1CON.

pogledajte gornju sliku.

CCP1CON = 0b00001111;

Možete i šesterokutni format

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

Korak 3: Konfiguriranje Timer2 modula (TMR2 registar)

Konfiguriranje Timer2 modula (TMR2 registar)
Konfiguriranje Timer2 modula (TMR2 registar)

Timer2 je 8-bitni mjerač vremena s predskalerima i mjeračem postova. Može se koristiti kao PWM vremenska baza za PWM način rada CCP modula (ova). TMR2 registar je čitljiv i upisan te se briše na bilo kojem uređaju.

Prikazan je T2CON registar

Pred -skala i post -ljestvica prilagodit će izlaznu frekvenciju generiranog PWM vala.

Učestalost = frekvencija sata/(4*predskaler*(PR2-TMR2)*Mjerilo postova*broj)

Gdje je Tout = 1/frekvencija

T2CON = 0b00000100;

Time će se generirati kristal od 2,5 KHz @ 1Mhz ili 100KHz @ 4MHz (praktički postoji ograničenje za ovu frekvenciju PWM -a, za više pojedinosti obratite se specifikaciji)

hex prikaz

T2CON = 0x04; // omogućujemo T2CON bez Prescalera i konfiguracije postcale

Korak 4: Konfiguriranje PR2 (Timer2 Period Register)

Modul Timer2 ima 8-bitni registar perioda, PR2. Tajmer 2 povećava se od 00h do usklađivanja s PR2, a zatim se vraća na 00h u sljedećem ciklusu povećanja. PR2 je čitljiv i upisiv registar. PR2 registar se nakon resetiranja inicijalizira u FFh.

Postavljanje odgovarajućeg raspona za PR2 omogućit će korištenje za promjenu radnog ciklusa generiranog PWM vala

PR2 = 100; // Postavite vrijeme ciklusa na 100 za promjenu radnog ciklusa od 0-100

Radi jednostavnosti koristim PR2 = 100 čineći CCPR1L = 80; Može se postići 80% radni ciklus.

Korak 5: Konfigurirajte CCPR1l modul

Budući da je PR2 = 100, CCPR1l se može konfigurirati bilo gdje između 0-100 kako bi se dobio željeni radni ciklus.

Korak 6: Napišite skicu na sebi MPLAB X IDE kôd je dat ispod

Napišite skicu na sebi MPLAB X IDE kôd je dat ispod
Napišite skicu na sebi MPLAB X IDE kôd je dat ispod

#uključi

void delay (int a) // funkcija za generiranje kašnjenja {

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

{

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

}

}

void main ()

{TRISC = 0; // Brisanjem ovog bita učinit će se PORTC izlazom.

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

T2CON = 0x04; // omogućujemo T2CON bez Prescalera i konfiguracije postcale.

PR2 = 100; // Postavite vrijeme ciklusa na 100 za promjenu radnog ciklusa od 0-100

dok (1) {

CCPR1L = 75; // generirano 75% kašnjenja radnog ciklusa (1);

}

}

Također sam napravio malu izmjenu koda tako da učestalost generiranog PWM vala

Ovaj kôd je simuliran u Proteus -u, a izlazni PWM val prikazan je ispod. Da biste to prenijeli na svoje razvojne ploče za slike, koristite #include s odgovarajućim konfiguracijskim bitovima.

Hvala vam

Preporučeni: