Sadržaj:

Generirajte PWM val s PIC mikrokontrolerom: 6 koraka
Generirajte PWM val s PIC mikrokontrolerom: 6 koraka

Video: Generirajte PWM val s PIC mikrokontrolerom: 6 koraka

Video: Generirajte PWM val s PIC mikrokontrolerom: 6 koraka
Video: ESP8266 Diesel Injector Purging Station - PWM NodeMCU pump flow Control (Subtittled) 2024, Novembar
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

ŠTA JE PWM?

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

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 Ton i Toff period isti. Ukupno trajanje za koje je signal bio visok i trajanje za koje je signal bio nizak naziva se ukupno vremenski period.

Za gornju sliku ovaj val ima radni ciklus od 50%

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

ON vreme - vreme 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 bitan dio projekta. PWM signali se mogu generirati u mikrokontrolerima sa PWM kanalima (CCP registri). Za ovaj projekt planiram se držati slike pic16f877. link za podatkovnu tablicu možete preuzeti ispod

PIC16F877a tehnički list kliknite ovdje

CCP modul je odgovoran za proizvodnju PWM signala. CCP1 i CCP2 su multipleksirani sa PORTC. PORTC je 8-bitni dvosmjerni port. Odgovarajući registar smjera podataka je TRISC. Postavljanje bita TRISC (= 1) će uzeti odgovarajući PORTC pin kao ulaz. Brisanjem bita TRISC (= 0) odgovarajući PORTC pin će biti 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/POREDBE/PWM

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

• 16-bitni registar snimanja

• 16-bitni registar usporedbi

• Registar PWM master/slave radnog ciklusa

Konfigurirajte CCP1CON registar u PWM modu

Opis registra

CCPxCON Ovaj registar se koristi za konfiguriranje CCP modula za rad Hvatanje/Upoređivanje/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 uporediti sa CCPR1L i PR2 za generisanje PWM izlaza.

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

pogledajte gornju sliku.

CCP1CON = 0b00001111;

Možete i heksadecimalni format

CCP1CON = 0x0F; // konfiguriranje CCP1CON registra 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. TMR2 registar je čitljiv i upisiv i briše se na bilo kojem uređaju. Resetiraj.

Prikazan je T2CON registar

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

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

Gdje je Tout = 1/frekvencija

T2CON = 0b00000100;

Time će se generirati kristal od 2,5 KHz @ 1Mhz ili 100KHz @ 4MHz (praktično postoji ograničenje za ovu frekvenciju PWM -a, za više detalja pogledajte posebnu tablicu podataka)

hex prikaz

T2CON = 0x04; // omogućujemo T2CON bez predskalera i konfiguracije post skale

Korak 4: Konfiguriranje PR2 (Timer2 Period Register)

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

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

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

Radi pojednostavljenja, 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

#include

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

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

{

for (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 predskalera i konfiguracije post skale.

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);

}

}

Napravio sam i 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. Za postavljanje ovoga na vaše razvojne ploče za slike koristite #include s odgovarajućim konfiguracijskim bitovima.

Hvala ti

Preporučuje se: