Satura rādītājs:
- 1. darbība: mikrokontrollera izvēle
- 2. darbība. KONFIGURĒT CCP MODULI
- 3. darbība. Taimera moduļa konfigurēšana (TMR2 reģistrs)
- 4. darbība: PR2 konfigurēšana (Timer2 perioda reģistrs)
- 5. darbība: konfigurējiet CCPR1l moduli
- 6. solis: uzrakstiet skici uz jums MPLAB X IDE kods ir dots zemāk
Video: Izveidojiet PWM viļņu ar PIC mikrokontrolleri: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
KAS IR PWM?
PWM STANDS PULSE WIDTH MODULATION ir metode, ar kuras palīdzību tiek mainīts impulsa platums.
Lai skaidri saprastu šo jēdzienu, ņemiet vērā pulksteņa impulsu vai jebkuru kvadrātveida viļņu signālu, kuram ir 50% darba cikls, kas nozīmē, ka tonnas un izslēgšanās periods ir vienāds, kopējo ilgumu, kurā signāls bija augsts, un ilgumu, kurā signāls bija zems laika periods.
Augstāk redzamajam attēlam šī viļņa darbības cikls ir 50%
Darba cikls = (ieslēgšanas laiks / kopējais laiks)*100
ON laiks - laiks, kurā signāls bija augsts
IZSLĒGŠANAS laiks - laiks, kad signāls bija zems Kopējais laiks - kopējais impulsa laika periods (gan ieslēgšanas, gan izslēgšanas laiks)
1. darbība: mikrokontrollera izvēle
Izvēloties projektam atbilstošu mikrokontrolleri, šī ir projekta būtiskā daļa. PWM signālus var ģenerēt mikrokontrolleros ar PWM kanāliem (CCP reģistri). Šim projektam es plānoju pieturēties pie pic16f877. datu lapas saiti varat lejupielādēt zemāk
PIC16F877a datu lapa noklikšķiniet šeit
CCP modulis ir atbildīgs par PWM signāla ražošanu. CCCP1 un CCP2 ir multipleksēti ar PORTC. PORTC ir 8 bitu plašs divvirzienu ports. Atbilstošais datu virzienu reģistrs ir TRISC. Iestatot TRISC bitu (= 1), ievadīs atbilstošo PORTC tapu. Dzēšot TRISC bitu (= 0), attiecīgā PORTC tapa tiks izvadīta.
TRISC = 0; // Šī bita notīrīšana padarīs PORTC par izvadi
2. darbība. KONFIGURĒT CCP MODULI
CCP - CAPTURE/COMPARE/PWM MODULES
Katrā Capture/Compare/PWM (CCP) modulī ir 16 bitu reģistrs, kas var darboties kā:
• 16 bitu uztveršanas reģistrs
• 16 bitu salīdzināšanas reģistrs
• PWM Master/Slave Duty Cycle reģistrs
Konfigurējiet CCP1CON reģistru PWM režīmā
Reģistra apraksts
CCPxCON Šis reģistrs tiek izmantots, lai konfigurētu CCP moduli Capture/Compare/PWM opertaion.
CCPRxL Šajā reģistrā ir PWM 8 Msb biti, zemākie 2 biti būs daļa no CCPxCON reģistra.
TMR2 Brīvas darbības skaitītājs, kas tiks salīdzināts ar CCPR1L un PR2, lai ģenerētu PWM izeju.
Tagad es izmantošu bināro, lai attēlotu bitus, lai konfigurētu CCP1CON reģistru.
skatiet attēlu iepriekš.
CCP1CON = 0b00001111;
Varat arī izmantot hex formātu
CCP1CON = 0x0F; // CCP1CON reģistra konfigurēšana PWM režīmam
3. darbība. Taimera moduļa konfigurēšana (TMR2 reģistrs)
Timer2 ir 8 bitu taimeris ar prescaler un postcaler. To var izmantot kā PWM laika bāzi CCP moduļa (-u) PWM režīmam. TMR2 reģistrs ir lasāms un rakstāms, un tas tiek notīrīts no jebkuras ierīces Atiestatīt.
Tiek parādīts T2CON reģistrs
Iepriekšēja skala un pēcskaņa pielāgos ģenerētā PWM viļņa izejas frekvenci.
Frekvence = pulksteņa frekvence/(4*prescaler*(PR2-TMR2)*Postscaler*skaits)
Kur Tout = 1/frekvence
T2CON = 0b00000100;
Tas radīs 2,5 KHz @ 1Mhz vai 100KHz @ 4MHz kristālu (praktiski šai PWM frekvencei ir ierobežojums, lai iegūtu sīkāku informāciju, skatiet konkrētu datu lapu)
sešstūra attēlojums
T2CON = 0x04; // iespējot T2CON bez prescaler un postcala konfigurācijas
4. darbība: PR2 konfigurēšana (Timer2 perioda reģistrs)
Timer2 modulim ir 8 bitu periodu reģistrs PR2. Taimeris 2 palielinās no 00h, līdz tas atbilst PR2, un pēc tam nākamajā pieauguma ciklā tiek atiestatīts uz 00h. PR2 ir lasāms un rakstāms reģistrs. Pēc atiestatīšanas PR2 reģistrs tiek inicializēts uz FFh.
Atbilstoša PR2 diapazona iestatīšana ļaus mainīt ģenerētā PWM viļņa darba ciklu
PR2 = 100; // Iestatiet cikla laiku uz 100, lai mainītu darba ciklu no 0 līdz 100
Vienkāršības labad es izmantoju PR2 = 100, padarot CCPR1L = 80; Ir iespējams sasniegt 80% darba ciklu.
5. darbība: konfigurējiet CCPR1l moduli
Tā kā PR2 = 100 CCPR1l var konfigurēt jebkurā vietā no 0 līdz 100, lai iegūtu vēlamo darba ciklu.
6. solis: uzrakstiet skici uz jums MPLAB X IDE kods ir dots zemāk
#iekļaut
void delay (int a) // funkcija aizkaves ģenerēšanai {
par (int i = 0; i <a; i ++)
{
par (int j = 0; j <144; j ++);
}
}
void main ()
{TRISC = 0; // Šī bita notīrīšana padarīs PORTC par izvadi.
CCP1CON = 0x0F; // CCP1CON reģistra konfigurēšana PWM režīmam
T2CON = 0x04; // iespējot T2CON bez prescaler un postcala konfigurācijas.
PR2 = 100; // Iestatiet cikla laiku uz 100, lai mainītu darba ciklu no 0 līdz 100
kamēr (1) {
CCPR1L = 75; // ģenerēts 75% darba cikla kavējums (1);
}
}
Esmu arī nedaudz mainījis kodu, lai ģenerētā PWM viļņa frekvence
Šis kods tiek simulēts proteusā, un izejas PWM vilnis ir parādīts zemāk. Lai to augšupielādētu savā attēlu izstrādes dēļā, izmantojiet #include ar piemērotiem konfigurācijas bitiem.
Paldies
Ieteicams:
Z-viļņu antena: 4 soļi
Z-Wave antena: pasīvās antenas palielina jaudu un diapazonu Nav nepieciešama demontāža vai lodēšana Lēti Viegli uzstādīt Es eksperimentēju ar savu Z-Wave Plus sistēmu, lai palielinātu ar akumulatoru darbināmo durvju diapazonu
Pilna viļņu tilta taisngriezis (JL): 5 soļi
Pilna viļņu tilta taisngriezis (JL): Ievads Šī neatrisināmā lapa palīdzēs jums veikt visas darbības, kas nepieciešamas, lai izveidotu pilna viļņa tilta taisngriezi. Tas ir noderīgi, pārveidojot maiņstrāvu par līdzstrāvu. Daļas (ar iegādes saitēm) (detaļu attēli ir iekļauti atbilstošajā
Tīrs sinusa viļņu invertors: 8 soļi
Tīrs sinusa viļņu invertors: mans pētījums
DIY funkcija/viļņu formas ģenerators: 6 soļi (ar attēliem)
DIY funkcija/viļņu formas ģenerators: Šajā projektā mēs īsumā apskatīsim komerciālos funkciju/viļņu formu ģeneratorus, lai noteiktu, kādas funkcijas ir svarīgas DIY versijai. Pēc tam es jums parādīšu, kā izveidot vienkāršu funkciju ģeneratoru, analogo un ciparu
Skeitbords ar PIC mikrokontrolleri un gaismas diodēm: 8 soļi (ar attēliem)
Skeitbords ar PIC mikrokontrolleri un gaismas diodēm: ko jūs iegūstat, ja elektrotehnikas inženieris no nulles izveido skrituļdēli 13 gadu vecumam Ziemassvētku dāvanai? Jūs saņemsiet skeitbordu ar astoņām baltām gaismas diodēm (priekšējiem lukturiem), astoņas sarkanās gaismas diodes (aizmugurējās gaismas), kuras visas tiek kontrolētas, izmantojot PIC mikrokontrolleru! Un es migrēju