Indholdsfortegnelse:
- Trin 1: Vælg mikrokontroller
- Trin 2: KONFIGURER CCP -MODUL
- Trin 3: Konfiguration af Timer2 -modul (TMR2 -register)
- Trin 4: Konfiguration af PR2 (Timer2 Perioderegister)
- Trin 5: Konfigurer CCPR1l -modul
- Trin 6: Skriv skitsen på dig MPLAB X IDE Koden er givet nedenfor
Video: Generer PWM Wave med PIC -mikrokontroller: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
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 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
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)
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
#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:
PWM Med ESP32 - Dæmpning LED med PWM på ESP 32 Med Arduino IDE: 6 trin
PWM Med ESP32 | Dæmpning af LED med PWM på ESP 32 Med Arduino IDE: I denne instruktion vil vi se, hvordan man genererer PWM -signaler med ESP32 ved hjælp af Arduino IDE & PWM bruges dybest set til at generere analog output fra enhver MCU, og den analoge output kan være alt mellem 0V til 3,3V (i tilfælde af esp32) & fra
Mozilla IoT Gateway Med ESP8266 og Z-Wave: 7 trin
Mozilla IoT Gateway Med ESP8266 og Z-Wave: Magt til folkene! Mozilla ønsker at frigøre IoT -protokollen Omfanget af dette projekt er at "sikre, at Internettet er en global offentlig ressource, åben og tilgængelig for alle." Internet of Things (IoT) er en ny æra af Internettet. Og ligesom praktikanten
DIY Wave Tank/flume Brug af Arduino og V-slot: 11 trin (med billeder)
DIY Wave Tank/flume Brug af Arduino og V-slot: En bølgetank er et laboratorieopsætning til at observere overfladebølgeres adfærd. Den typiske bølgetank er en kasse fyldt med væske, normalt vand, der efterlader et åbent eller luftfyldt rum ovenpå. I den ene ende af tanken genererer en aktuator bølger; den anden e
WAVE - verdens enkleste DIY loddevise! (PCB Helping Hands): 6 trin (med billeder)
WAVE - verdens enkleste DIY loddevise! (PCB Helping Hands): WAVE er nok den mærkeligste Helping Hands -enhed, du nogensinde har set. Hvorfor hedder det " WAVE "? Fordi det er en Helping-Hands-enhed, der blev bygget af dele i mikrobølgeovnen! Men det faktum, at WAVE ser underligt ud, betyder ikke, at det ikke kan være
Wave Lamp - Vejr og advarsler: 7 trin (med billeder)
Wave Lamp - Weather and Alerts: Mens jeg kiggede gennem thingiverse, så jeg denne helt fantastiske Wave Lamp og jeg var nødt til at bygge den. https://www.thingiverse.com/thing:774456 Lampen er meget godt designet og udskriver uden understøttelse (skal udskrives på siden) Der er også