Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Š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 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
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)
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
#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