Sisukord:

PWM -laine genereerimine PIC -mikrokontrolleriga: 6 sammu
PWM -laine genereerimine PIC -mikrokontrolleriga: 6 sammu

Video: PWM -laine genereerimine PIC -mikrokontrolleriga: 6 sammu

Video: PWM -laine genereerimine PIC -mikrokontrolleriga: 6 sammu
Video: Como afrontar las críticas y no morir en el intento 2024, November
Anonim
PIC -mikrokontrolleriga genereerige PWM -laine
PIC -mikrokontrolleriga genereerige PWM -laine
PIC -mikrokontrolleriga genereerige PWM -laine
PIC -mikrokontrolleriga genereerige PWM -laine
PIC -mikrokontrolleriga genereerige PWM -laine
PIC -mikrokontrolleriga genereerige PWM -laine
PIC -mikrokontrolleriga genereerige PWM -laine
PIC -mikrokontrolleriga genereerige PWM -laine

MIS ON PWM?

PWM STANDS PULSE WIDTH MODULATION on impulsi laiuse muutmise meetod.

Selle kontseptsiooni mõistmiseks kaaluge selgelt kellaimpulssi või mis tahes ruutlaine signaali, mille töötsükkel on 50%, mis tähendab, et Ton ja Toff periood on sama. Kogukestust, mille jooksul signaal oli kõrge, ja kestust, mille jooksul signaal oli madal, nimetatakse kokku ajavahemik.

Ülaltoodud pildi puhul on selle laine töötsükkel 50%

Töötsükkel = (sisselülitusaeg / kogu aeg)*100

ON aeg - aeg, mille signaal oli kõrge

VÄLJA lülitatud aeg - aeg, mille signaal oli madal Koguaeg - impulsi koguaeg (nii sisse- kui väljalülitusaeg)

Samm: mikrokontrolleri valimine

Mikrokontrolleri valimine
Mikrokontrolleri valimine

Projekti jaoks sobiva mikrokontrolleri valimine on see projekti oluline osa. PWM -signaale saab genereerida PWM -kanalitega mikrokontrollerites (CCP -registrid). Selle projekti puhul kavatsen jääda pic16f877 juurde. saate alla laadida andmelehe lingi

PIC16F877a andmeleht klõpsake siin

CCP moodul vastutab PWM signaali tootmise eest. CCP1 ja CCP2 on multipleksitud PORTC -ga. PORTC on 8-bitine kahesuunaline port. Vastav andmesuundade register on TRISC. TRISC -bitti (= 1) seadistamisel võetakse sisendiks vastav PORTC -tihvt. TRISC -bitti (= 0) tühjendamine muudab vastava PORTC -tihvti väljundiks.

TRISC = 0; // Selle biti kustutamine muudab väljundiks PORTC

2. samm: seadistage CCP -moodul

KONFIGUREERI CCP MOODUL
KONFIGUREERI CCP MOODUL
KONFIGUREERI CCP MOODUL
KONFIGUREERI CCP MOODUL

CCP - CAPTURE/COMPARE/PWM MODULES

Iga Capture/Compare/PWM (CCP) moodul sisaldab 16-bitist registrit, mis võib toimida järgmiselt:

• 16-bitine jäädvustusregister

• 16-bitine võrdlusregister

• PWM Master/Slave Duty Cycle register

Seadistage CCP1CON -register PWM -režiimi

Registri kirjeldus

CCPxCON Seda registrit kasutatakse CCP mooduli seadistamiseks Capture/Compare/PWM opertaioniks.

CCPRxL See register sisaldab PWM-i 8-Msb bitti, madalamad 2-bitised on osa CCPxCON registrist.

TMR2 Vabalt töötav loendur, mida võrreldakse PWM -väljundi genereerimiseks CCPR1L ja PR2 -ga.

Nüüd kasutan CCP1CON registri seadistamiseks bittide esitamiseks binaarset.

vaadake ülaltoodud pilti.

CCP1CON = 0b00001111;

Saate kasutada ka kuuskantvormingut

CCP1CON = 0x0F; // CCP1CON registri seadistamine PWM režiimi jaoks

3. samm: Timer2 mooduli seadistamine (TMR2 register)

Timer2 mooduli seadistamine (TMR2 register)
Timer2 mooduli seadistamine (TMR2 register)

Timer2 on 8-bitine taimer, millel on eel- ja järeltalija. Seda saab kasutada CCP mooduli (te) PWM -režiimi PWM -i ajabaasina. TMR2 register on loetav ja kirjutatav ning kustutatakse mis tahes seadme lähtestamisel.

Kuvatakse T2CON -register

Eel- ja järelskaala reguleerivad genereeritud PWM -laine väljundsagedust.

Sagedus = taktsagedus/(4*eelskaleerija*(PR2-TMR2)*Postscaler*arv)

Kus Tout = 1/sagedus

T2CON = 0b00000100;

See genereerib 2,5 KHz @ 1Mhz või 100KHz @ 4MHz kristalli (praktiliselt on sellel PWM sagedusel piirangud, vaadake lisateavet konkreetselt andmelehelt)

kuusnurkne esitus

T2CON = 0x04; // lubage T2CON ilma eelseadistuse ja postkaala konfiguratsioonita

4. samm: PR2 konfigureerimine (Timer2 perioodi register)

Timer2 moodulil on 8-bitine perioodiregister PR2. Taimer2 suureneb alates 00h, kuni see vastab PR2 -le, ja lähtestab seejärel järgmise suurendamistsükli ajal 00h -le. PR2 on loetav ja kirjutatav register. PR2 register lähtestamisel lähtestatakse vormingule FFh.

PR2 jaoks sobiva vahemiku määramine võimaldab muuta genereeritud PWM -laine töötsüklit

PR2 = 100; // Seadke tsükliaeg 100-le, et muuta töötsüklit vahemikus 0-100

Lihtsuse huvides kasutan PR2 = 100, tehes CCPR1L = 80; 80% töötsüklit on võimalik saavutada.

Samm: seadistage CCPR1l moodul

Kuna PR2 = 100 CCPR1l saab soovitud töötsükli saamiseks seadistada vahemikus 0-100.

Samm 6: Kirjutage eskiis teile MPLAB X IDE, kood antakse allpool

Kirjutage eskiis teile MPLAB X IDE, kood on antud allpool
Kirjutage eskiis teile MPLAB X IDE, kood on antud allpool

#kaasake

void delay (int a) // funktsioon viivituse genereerimiseks {

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

{

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

}

}

void main ()

{TRISC = 0; // Selle biti kustutamine muudab väljundiks PORTC.

CCP1CON = 0x0F; // CCP1CON registri seadistamine PWM režiimi jaoks

T2CON = 0x04; // lubage T2CON ilma eelkvalifitseerija ja postkaala konfiguratsioonita.

PR2 = 100; // Seadke tsükliaeg 100-le, et muuta töötsüklit vahemikus 0-100

samas (1) {

CCPR1L = 75; // tekitas 75% töötsükli viivituse (1);

}

}

Samuti olen koodi veidi muutnud, nii et genereeritud PWM -laine sagedus

Seda koodi simuleeritakse proteuses ja väljund PWM laine on näidatud allpool. Selle üleslaadimiseks oma piltide arendusplaatidele kasutage sobivate konfiguratsioonibittidega #include.

Aitäh

Soovitan: