Indholdsfortegnelse:

Generer PWM Wave med PIC -mikrokontroller: 6 trin
Generer PWM Wave med PIC -mikrokontroller: 6 trin

Video: Generer PWM Wave med PIC -mikrokontroller: 6 trin

Video: Generer PWM Wave med PIC -mikrokontroller: 6 trin
Video: как сделать контроллер бесколлекторного двигателя, mosfet, IRFz 44n 2024, November
Anonim
Generer PWM Wave med PIC -mikrokontroller
Generer PWM Wave med PIC -mikrokontroller
Generer PWM Wave med PIC -mikrokontroller
Generer PWM Wave med PIC -mikrokontroller
Generer PWM Wave med PIC -mikrokontroller
Generer PWM Wave med PIC -mikrokontroller
Generer PWM Wave med PIC -mikrokontroller
Generer PWM Wave med PIC -mikrokontroller

HVAD ER PWM?

PWM STANDS FOR PULSE WIDTH MODULATION er en teknik, hvorved bredden af pulsen varieres.

For at forstå dette koncept skal du klart overveje en urpuls eller et kvadratbølgesignal, der har en driftscyklus på 50%, hvilket betyder, at Ton og Toff -perioden er den samme. tidsperiode.

For billedet vist ovenfor har denne bølge en driftscyklus på 50%

Driftscyklus = (ON -tid / samlet tid)*100

ON -tid - tid for hvilket signal var højt

OFF tid - tid fjende, hvilket signal var lavt Total tid - Total tidsperiode for pulsen (både ON og OFF tid)

Trin 1: Vælg mikrokontroller

Valg af mikrokontroller
Valg af mikrokontroller

Valg af passende mikrokontroller til projektet er dette den væsentlige del af projektet PWM -signaler kan genereres i mikrokontrollere med PWM -kanaler (CCP -registre). Til dette projekt planlægger jeg at holde mig til pic16f877. du kan downloade databladets link er angivet nedenfor

PIC16F877a datablad klik her

CCP -modulet er ansvarligt for at producere PWM -signal. CCP1 og CCP2 er multiplekset med PORTC. PORTC er en 8-bit bred tovejs port. Det tilhørende dataretningsregister er TRISC. Indstilling af TRISC bit (= 1) vil tage den tilsvarende PORTC pin som input. Sletning af en TRISC -bit (= 0) vil gøre den tilsvarende PORTC -pin til en udgang.

TRISC = 0; // Rydning af denne bit vil gøre PORTC til output

Trin 2: KONFIGURER CCP -MODUL

KONFIGURER CCP -MODUL
KONFIGURER CCP -MODUL
KONFIGURER CCP -MODUL
KONFIGURER CCP -MODUL

CCP - CAPTURE/COMPARE/PWM MODULES

Hvert Capture/Compare/PWM (CCP) modul indeholder et 16-bit register, der kan fungere som:

• 16-bit Capture register

• 16-bit sammenligningsregister

• PWM Master/Slave Duty Cycle -register

Konfigurer CCP1CON -register til PWM -tilstand

Registrer beskrivelse

CCPxCON Dette register bruges til at konfigurere CCP -modulet til Capture/Compare/PWM -åbning.

CCPRxL Dette register indeholder 8-Msb bits af PWM, lavere 2-bits vil være en del af CCPxCON-register.

TMR2 Fritgående tæller, som vil blive sammenlignet med CCPR1L og PR2 til generering af PWM -output.

Nu vil jeg bruge binær til at repræsentere bitene til at konfigurere CCP1CON -register.

se billedet ovenfor.

CCP1CON = 0b00001111;

Du kan også hex -format

CCP1CON = 0x0F; // konfigurering af CCP1CON -register til PWM -tilstand

Trin 3: Konfiguration af Timer2 -modul (TMR2 -register)

Konfiguration af Timer2 -modul (TMR2 -register)
Konfiguration af Timer2 -modul (TMR2 -register)

Timer2 er en 8-bit timer med en forudskaler og en postscaler. Det kan bruges som PWM -tidsbase for PWM -tilstanden for CCP -modulerne. TMR2 -registret er læseligt og skrivbart og ryddes på enhver nulstilling af enheden.

T2CON -register vises

Forskalaen og efterskalaen justerer udgangsfrekvensen for den genererede PWM -bølge.

Frekvens = urfrekvens/(4*forudkalkning*(PR2-TMR2)*Postscaler*antal)

Hvor Tout = 1/frekvens

T2CON = 0b00000100;

Dette genererer 2,5 KHz @ 1Mhz eller 100KHz @ 4MHz krystal (praktisk talt er der en begrænsning for denne PWM -frekvens, se det særlige datablad for flere detaljer)

hex repræsentation

T2CON = 0x04; // aktiver T2CON uden Prescaler og efterskala konfiguration

Trin 4: Konfiguration af PR2 (Timer2 Perioderegister)

Timer2-modulet har et 8-bit perioderegister, PR2. Timer2 øges fra 00h til den matcher PR2 og nulstilles derefter til 00h i den næste trincyklus. PR2 er et læseligt og skrivbart register. PR2 -registret initialiseres til FFh ved nulstilling.

Indstilling af et passende område for PR2 vil gøre det muligt at ændre driftscyklussen for den genererede PWM -bølge

PR2 = 100; // Indstil cyklustiden til 100 for at variere driftscyklussen fra 0-100

For nemheds skyld bruger jeg PR2 = 100 ved at lave CCPR1L = 80; 80% driftscyklus kan opnås.

Trin 5: Konfigurer CCPR1l -modul

Da PR2 = 100 CCPR1l kan konfigureres hvor som helst mellem 0-100 for at få den ønskede driftscyklus.

Trin 6: Skriv skitsen på dig MPLAB X IDE Koden er givet nedenfor

Skriv skitsen på dig MPLAB X IDE Koden er givet nedenfor
Skriv skitsen på dig MPLAB X IDE Koden er givet nedenfor

#omfatte

void delay (int a) // funktion til at generere forsinkelse {

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

{

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

}

}

void main ()

{TRISC = 0; // Rydning af denne bit vil gøre PORTC til output.

CCP1CON = 0x0F; // konfigurering af CCP1CON -register til PWM -tilstand

T2CON = 0x04; // aktiver T2CON uden Prescaler og efterskala konfiguration.

PR2 = 100; // Indstil cyklustiden til 100 for at variere driftscyklussen fra 0-100

mens (1) {

CCPR1L = 75; // genereret 75% forsinkelse i driftscyklus (1);

}

}

Jeg har også foretaget en lille ændring af koden, så frekvensen af den genererede PWM -bølge

Denne kode er simuleret i proteus, og output PWM -bølgen er vist nedenfor For at uploade dette på dine pic -udviklingsbrætter skal du bruge #include med passende konfigurationsbit.

tak skal du have

Anbefalede: