
Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:10



VAD ÄR PWM?
PWM STANDS FÖR PULSBREIDMODULATION är en teknik med vilken pulsbredden varieras.
För att förstå detta koncept tydligt överväga en klockpuls eller någon fyrkantvågssignal, den har 50% arbetscykel vilket betyder att Ton och Toff -perioden är densamma, den totala varaktighet för vilken signalen var hög och varaktigheten för vilken signalen var låg kallas total tidsperiod.
För bilden som visas ovan har denna våg en arbetscykel på 50%
Driftcykel = (PÅ -tid / total tid)*100
ON -tid - tid för vilken signal var hög
AV -tid - tid fiende som var låg signal Total tid -Total tidsperiod för pulsen (både PÅ och AV -tid)
Steg 1: Välja mikrokontroller

Att välja lämplig mikrokontroller för projektet är detta den väsentliga delen av projektet PWM -signaler kan genereras i mikrokontroller med PWM -kanaler (CCP -register). För detta projekt planerar jag att hålla mig till pic16f877. du kan ladda ner databladlänken nedan
PIC16F877a datablad klicka här
CCP -modulen är ansvarig för att producera PWM -signal. CCP1 och CCP2 är multiplexerade med PORTC. PORTC är en 8-bitars bred dubbelriktad port. Motsvarande datariktningsregister är TRISC. Att ställa in TRISC -bit (= 1) kommer att ta motsvarande PORTC -stift som en ingång. Om du rensar en TRISC -bit (= 0) kommer motsvarande PORTC -stift att bli en utgång.
TRISC = 0; // Om du rensar denna bit kommer PORTC att bli utdata
Steg 2: KONFIGURERA CCP -MODUL


CCP - Fånga/Jämför/PWM -MODULER
Varje Capture/Compare/PWM (CCP) -modul innehåller ett 16-bitars register som kan fungera som:
• 16-bitars registreringsregister
• 16-bitars Jämför register
• PWM Master/Slave Duty Cycle -register
Konfigurera CCP1CON -registret till PWM -läge
Registrera beskrivning
CCPxCON Detta register används för att konfigurera CCP -modulen för Capture/Compare/PWM -drift.
CCPRxL Detta register innehåller 8-Msb-bitarna i PWM, de lägre 2-bitarna kommer att ingå i CCPxCON-registret.
TMR2 Free running counter som jämförs med CCPR1L och PR2 för att generera PWM -utgången.
Nu kommer jag att använda binärt för att representera bitarna för att konfigurera CCP1CON -registret.
se bilden ovan.
CCP1CON = 0b00001111;
Du kan också du hex -format
CCP1CON = 0x0F; // konfigurera CCP1CON -register för PWM -läge
Steg 3: Konfigurera Timer2 -modul (TMR2 -register)

Timer2 är en 8-bitars timer med en förskalare och en postskalare. Den kan användas som PWM -tidsbas för PWM -läget för CCP -modulerna. TMR2 -registret är läsbart och skrivbart och rensas på alla enheter som återställs.
T2CON -register visas
Förskalningen och efterskalningen justerar utmatningsfrekvensen för den genererade PWM -vågen.
Frekvens = klockfrekvens/(4*förskalare*(PR2-TMR2)*Postskalare*antal)
Var Tout = 1/frekvens
T2CON = 0b00000100;
Detta kommer att generera 2,5 KHz @ 1Mhz eller 100KHz @ 4MHz kristall (praktiskt taget finns det en begränsning för denna PWM -frekvens, se särskilt datablad för mer information)
hex -representation
T2CON = 0x04; // aktivera T2CON utan förskalare och efterskalningskonfiguration
Steg 4: Konfigurera PR2 (Timer2 Period Register)
Timer2-modulen har ett 8-bitars periodregister, PR2. Timer2 ökar från 00h tills den matchar PR2 och återställs sedan till 00h i nästa ökningscykel. PR2 är ett läsbart och skrivbart register. PR2 -registret initieras till FFh vid återställning.
Om du ställer in ett lämpligt intervall för PR2 kan du ändra arbetscykeln för den genererade PWM -vågen
PR2 = 100; // Ställ in cykeltiden till 100 för att variera arbetscykeln från 0-100
För enkelhetens skull använder jag PR2 = 100 genom att göra CCPR1L = 80; 80% arbetscykel kan uppnås.
Steg 5: Konfigurera CCPR1l -modulen
Eftersom PR2 = 100 CCPR1l kan konfigureras var som helst mellan 0-100 för att få önskad driftscykel.
Steg 6: Skriv skissen på dig MPLAB X IDE Koden ges nedan

#omfatta
void delay (int a) // funktion för att generera fördröjning {
för (int i = 0; i <a; i ++)
{
för (int j = 0; j <144; j ++);
}
}
void main ()
{TRISC = 0; // Om du rensar denna bit kommer PORTC att bli utdata.
CCP1CON = 0x0F; // konfigurera CCP1CON -register för PWM -läge
T2CON = 0x04; // aktivera T2CON utan förskalare och efterskalningskonfiguration.
PR2 = 100; // Ställ in cykeltiden till 100 för att variera arbetscykeln från 0-100
medan (1) {
CCPR1L = 75; // genererade 75% fördröjningscykelfördröjning (1);
}
}
Jag har också gjort en liten ändring av koden så att frekvensen för den genererade PWM -vågen
Detta är koden simuleras i proteus och utmatningen PWM -våg visas nedan För att ladda upp detta på dina bildutvecklingskort använder #include med lämpliga konfigurationsbitar.
Tack
Rekommenderad:
Generera olika ljud från filmer med endast Arduino: 3 steg

Generera olika ljud från filmer som endast använder Arduino: As-salamu alaykum! Jag ville generera olika ljud som rovdjur, optimus prime & humla från transformatorfilm. Egentligen såg jag " hacksmeden " video om hur man gör rovdjurshjälm
Generera konst från kommentarer: 5 steg (med bilder)

Generera konst från kommentarer: Detta projekt är ett ambitiöst projekt där vi vill använda några av de mest tvivelaktiga delarna av internet, kommentarsektioner och chattrum för att skapa konst. Vi vill också göra projektet lättillgängligt så att vem som helst kan försöka skapa
Generera toner av olika slag med matematiska ekvationer (MathsMusic) Arduino: 5 steg

Generera toner av olika slag med matematiska ekvationer (MathsMusic) Arduino: Projektbeskrivning: Ny resa har börjat där idéer enkelt kan implementeras med hjälp av öppen källkod (tack vare Arduino). Så här är ett sätt · Se dig omkring och observera din omgivning · Upptäck problem som måste
Gör en NE555 -krets för att generera sinusvåg: 6 steg

Gör en NE555 -krets för att generera sinusvåg: Denna handledning lär dig hur du gör en NE555 -krets för att generera sinusvåg. Dessa prisvärda DIY -kit är till stor hjälp för dig att förstå hur kan kondensatorerna arbeta med motstånd för att kontrollera laddnings- och urladdningstiden
Generera spänning med en ergometercykel: 9 steg (med bilder)

Generera spänning med en ergometercykel: Projektets utarbetande bestod i montering av ett "spel" med målet att trampa i en ergometercykel ansluten till en generator och ett torn av lampor som aktiveras när motorvarvtalet ökar - vilket sker enligt cykeln