Sisukord:
- Samm: mikrokontrolleri valimine
- 2. samm: seadistage CCP -moodul
- 3. samm: Timer2 mooduli seadistamine (TMR2 register)
- 4. samm: PR2 konfigureerimine (Timer2 perioodi register)
- Samm: seadistage CCPR1l moodul
- Samm 6: Kirjutage eskiis teile MPLAB X IDE, kood antakse allpool
Video: PWM -laine genereerimine PIC -mikrokontrolleriga: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
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
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
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 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
#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:
Erinevate helide genereerimine filmidest ainult Arduino abil: 3 sammu
Erinevate helide genereerimine filmidest, kasutades ainult Arduino: As-salamu alaykum! Tahtsin genereerida erinevaid helisid nagu kiskja, optimus prime & kimalane trafo filmist. Tegelikult vaatasin " hacksmith " video kiskjakiivri valmistamisest
Kunsti genereerimine kommentaaridest: 5 sammu (piltidega)
Kommentaaridest kunsti loomine: see projekt on ambitsioonikas ja soovime kunsti loomiseks kasutada Interneti kõige küsitavamaid osi, kommentaaride sektsioone ja jututubasid. Samuti soovime muuta projekti hõlpsasti juurdepääsetavaks, et igaüks saaks proovida oma kätt luua
Kõrge eraldusvõimega PWM -signaali genereerimine RC -servodele STM32 -seadmetega: 3 sammu
Kõrge eraldusvõimega PWM -signaali genereerimine RC -servodele STM32 -seadmetega: praegu ehitan SX1280 RF -kiibil põhinevat RC -saatjat/vastuvõtjat. Üks projekti eesmärke on see, et soovin 12 -bitist servo eraldusvõimet pulgadest servodeni. Osaliselt seetõttu, et kaasaegsetel digitaalsetel servodel on 12 -bitine reso
PWM koos ESP32 -ga - Hämarduv LED PWM -iga ESP 32 -l Arduino IDE -ga: 6 sammu
PWM koos ESP32 -ga | Hämarduv LED koos PWM -iga ESP 32 -l Arduino IDE -ga: Selles juhendis näeme, kuidas genereerida PWM -signaale ESP32 abil, kasutades Arduino IDE & PWM -i kasutatakse põhimõtteliselt analoogväljundi genereerimiseks mis tahes MCU -st ja see analoogväljund võib olla vahemikus 0V kuni 3,3 V (esp32 puhul) & alates
Erinevate toonide genereerimine matemaatiliste võrrandite abil (MathsMusic) Arduino: 5 sammu
Erinevate toonide genereerimine matemaatiliste võrrandite abil (MathsMusic) Arduino: Projekti kirjeldus: Algas uus teekond, kus ideid saab hõlpsasti ellu viia avatud lähtekoodiga kogukonna abil (tänu Arduinole). Nii et siin on üks võimalus · Vaadake enda ümber ja jälgige ümbritsevat · Avastage probleemid, mida tuleb lahendada