Hvad er PWM?

Nov 11, 2025

Læg en besked

PWM står for Pulse Width Modulation. Du tænder og slukker for spænding ved en fast frekvens og ændrer forholdet mellem tændt-tid og slukketid- for at kontrollere den gennemsnitlige strømforsyning. Det er det. Resten er bare at håndtere konsekvenserne.

Den grundlæggende mekanisme

 

Tag en 12V-forsyning, der driver en LED, der har brug for 3V. Normalt ville du bruge en modstand eller lineær regulator, brænde 9V af som varme. Dumt spild. Med PWM tænder og slukker du for hele 12V hurtigt nok til, at LED'ens termiske masse udligner den i gennemsnit . 25% duty cycle giver dig ca. 3V ækvivalent. LED'en ser 12V → 0V → 12V → 0V ved måske 1kHz, men den kan ikke køle ned og varme op så hurtigt, så lysstyrken forbliver konstant.

Hyppighed betyder noget. For langsomt (under 100Hz), og du får synligt flimmer. Nogle mennesker ser flimmer op til 200Hz. Jeg plejer at køre LED-dæmpning ved 20 kHz bare for en sikkerheds skyld-holder det også uden for det hørbare område, hvis der er nogen mekanisk kobling. Skifthastighed påvirker også tab, men vi kommer til det.

Matematikken: Hvis din menstruation er T og tændt-tiden er t, arbejdscyklus D=t/T. Enkel. Den leverede strøm er omtrent D × V_forsyning × I_belastning, minus tab. Disse tab er, hvor tingene bliver interessante.

 

Hvorfor folk bruger det - rigtige grunde

 

Første grund: effektivitet. MOSFET i mætning falder måske 0,1-0,2V ved rimelige strømme. MOSFET off trækker mikroampere. Så du enten spreder (0,1V × strøm) eller stort set ingenting. Sammenlign det med en lineær regulator, der konstant falder 9V ved fuld strøm. Forskellen i batterilevetiden er 40-50x i nogle tilfælde, ikke at overdrive.

For det andet: du kan bruge billigere strømforsyninger. Skal du køre en 48V motor med variabel hastighed? Med analog styring har du brug for en dyr variabel 0-48V forsyning. Med PWM bruger du en fast 48V forsyning (billig) og en MOSFET (også billig). Færdig.

Tredje grund, ingen taler om: indkøb. Prøv at finde en god variabel analog forsyning i volumen. Leveringstiden er minimum 26 uger fra anstændige producenter. MOSFET'er? Alt er på lager hos Digikey. Når produktionen skriger på dig, betyder dette mere end styklisten koster.

 

PWM

 

Reelle implementeringsproblemer

 

EMI vil snyde dig. Første gang jeg lavede et PWM-kort med-høj strøm (120A til en jævnstrømsmotor), dræbte det CAN-bussen på det samme køretøj. Ikke beskadigede pakker-helt døde. Det viste sig, at min gate-drevringing var koblet gennem chassisets jord, hvilket inducerede 40V-spidser på CAN-differentialparret. Tilføjede ferritperler, flyttede jorden rundt, havde stadig problemer. Var til sidst nødt til at tilføje et pi-filter på motorforsyningen og adskille jordplanerne med en enkelt-punktsforbindelse. Tog tre brætomdrejninger.

Gate-drev er sværere end det ser ud. Du har brug for lav impedans fra din driver til MOSFET-porten-sporer induktansen ved høj di/dt. Jeg har set 10nH sporinduktans forårsage 50V spændingsspidser under skift (V=L × di/dt). Det er nok til at slå igennem en 60V-klassificeret MOSFET. Folk skændes om matematikken, men jeg har set det på scopet: 3A/ns skifter strøm til 10nH giver dig 30V spike. Tilføj forsyningsspændingen, og du er over den absolutte maksimale rating.

Så er der skyd-gennem i H-broer. Du SKAL have en deadtime mellem at slukke for den lave-side-FET og at slå den til den høje-side (og omvendt). Nul dødtid betyder, at begge FET'er leder samtidigt-direkte kortslutning fra forsyning til jord gennem FET-kanalmodstandene. 50A til 0,01Ω to gange er stadig 1000A i mikrosekunderne, før tingene eksploderer. Fejltilstanden er spektakulær: lille krater i silicium, FET går permanent kort, fjerner alt andet i kæden.

Men for meget dødtid og kropsdioden leder i den døde periode. Kropsdioder er forfærdelige-højt fremadgående fald (1-2V), langsom genopretning. Du mister effektivitet og genererer mere varme. Afvejning er normalt 100-500 ns dødtid afhængigt af din FET's switching-karakteristika.

 

Valg af frekvens er ikke indlysende

 

Alles første instinkt: højere frekvens=mindre induktorer/kondensatorer=billigere. Nogle gange sandt. Men skiftetab stiger med frekvensen-du mister energi, hver gang FET'en skifter. ESwitching ≈ 0,5 × Vforsyning × Iload × (trise + tfald) × fsw. Fordoble frekvensen, fordoble koblingstabet.

For motordrev er 20kHz almindelig. Over hørbare, mekaniske tidskonstanter er ligeglade. Men i en bærbar strømforsyning ser du 300kHz-1MHz. Hvorfor? Mindre magnetik. En 1MHz induktor er fysisk 1/50 af størrelsen af ​​en 20kHz en med samme induktans. Det er enormt for bærbare enheder. Afvejning er, at du har brug for hurtigere FET'er (lavere Qg), bedre layout, mere omhyggeligt driverdesign.

Lyd (Klasse D-forstærkere) kører 250kHz-1MHz. Under 200 kHz, og du kan høre bærefrekvensen som en høj-hvin. Over 1MHz og du begynder at kæmpe med AM-radiointerferens. De fleste designs sætter sig ved 400-500 kHz, lavpasfilter på måske 50 kHz for at fjerne bæreren.

Rigtigt eksempel: lavede en 500kHz buck-konverter en gang, prøvede at gå til 1MHz for at krympe kortet. Effektiviteten faldt 4 % (88 % til 84 %). Det er 8W ekstra varme i en 200W forsyning. Havde brug for en større heatsink, mistede al pladsbesparelsen fra den mindre induktor. Opholdt sig på 500kHz.

 

PWM

 

Opløsningsgrænser

 

8-bit PWM (256 trin) lyder fint, indtil du forsøger at dæmpe en LED jævnt fra 100 % til 0 %. Under 10 % duty cycle får du synlige trin i lysstyrken. Menneskets øje er logaritmisk - meget mere følsomt over for ændringer ved lave lysniveauer. Behøver minimum 12-bit (4096 trin) for jævn dæmpning over hele området.

Men her er fangsten: 12-bit ved 20kHz betyder, at du har brug for 20kHz × 4096=81.92MHz timerur. Ikke alle mikroer kan gøre det. Og hvis du har brug for flere uafhængige PWM-kanaler på 12-bit, ser du på dedikerede timer-ydre enheder eller en FPGA.

Løsning: Brug 8-bit PWM, men juster frekvensen dynamisk. Ved høj lysstyrke køre 20kHz, ved lav lysstyrke fald til 100Hz. Giver dig finere trin, hvor du har brug for dem. Men nu har du variabel-frekvens EMI at håndtere. Intet er gratis.

 

Når tingene bliver store

 

Industrielle VFD'er (drev med variabel frekvens) skifter hundredvis af ampere ved 480VAC. Styrestrategien er mere kompleks-rumvektormodulation, felt-orienteret kontrol, uanset-men nedenunder er det stadig PWM, der skifter seks IGBT'er i en tre-fasebro.

Forskelle på denne skala:

Gatedrivere har brug for 15V isolerede forsyninger. Det er 6 isolerede forsyninger, der flyder ved forskellige potentialer op til 680VDC (rettet 480VAC). Hver driver har brug for sin egen strøm, sin egen gate-modstand (typisk 0,5-2Ω), sin egen overstrømsbeskyttelse.

Dødtiden øges til 2-5µs, fordi IGBT'er er langsommere end MOSFET'er

dv/dt-filtre på udgangen, fordi motorkabelkapacitans plus hurtige koblingskanter forårsager enorme almindelige-tilstandsstrømme. Jeg har målt 20A almindelig-tilstandsstrøm på et 5HP motorkabel, fuldstændig adskilt fra motorstrømmen. Derfor har du brug for skærmede kabler og ordentlig jording.

Termisk: selv 2 % tab ved 50 kW er 1 kW varme. Vandkøling med flowkontakter og temperaturspærringer. Hvis kølevæskeflowet falder til under tærskelværdien, deaktiverer controlleren udgangene med det samme. Set systemer brænde op, fordi nogen glemte at tjekke kølevæskeniveauet.

Komponentvalg bliver mærkeligt. En IGBT, der er klassificeret til 100A kontinuerlig, kan kun håndtere 80A ved 50 graders omgivelsestemperatur, 60A ved 70 grader. Men at starte en stor motor trækker 6x nominel strøm i flere sekunder. Så du dimensionerer for peak, ikke stabil-tilstand, og nedsætter derefter for temperatur. Ender med en 300A IGBT til en "100A" applikation. Styklisteomkostningerne gør indkøb meget ulykkelige.

 

Mikrocontroller specifikationer

 

STM32-timere: de fleste har 16-bit PWM, nogle modeller går til 32-bit, men du har sjældent brug for det. Det, der betyder mere, er antallet af sammenligningskanaler og komplementære udgange. TIM1 og TIM8 på F4-serien har fire sammenligningskanaler hver med komplementære udgange og programmerbar dødtidsindsættelse. Perfekt til motorstyring.

Problem: alle PWM-kanalerne på en timer er synkroniseret til den samme tæller. Hvis du har brug for uafhængige frekvenser, har du brug for separate timere. Og der er kun så mange timere med avancerede funktioner. På STM32F4 får du TIM1, TIM8 til avanceret styring. TIM2-5 til grundlæggende PWM. TIM9-14 er 16-bit uden dødtidsgenerering. Du løber hurtigt tør, hvis applikationen har brug for flere isolerede PWM-signaler.

Set design, hvor de bider-bang PWM i software, fordi de løb tør for timerkanaler. Forfærdelig idé. Jitter, CPU overhead, prioritetsinvertering, når andre afbryder brand. Bare betal de ekstra $2 for en mikro med flere timere eller brug en ekstern PWM IC (som PCA9685). Dit fremtidige jeg vil takke dig.

ESP32 har 16 PWM kanaler ved hjælp af LED PWM periferiudstyr. Lyder godt, bortset fra at de alle er afledt af ét 80MHz APB-ur og deler divisorer i grupper. Vil du have forskellige frekvenser? Håber de er heltalsforhold. Også opløsningen falder, når frekvensen stiger, fordi den bruger det samme basisur. Ved 20kHz får du 12-bit, ved 40kHz er du nede på 11-bit osv. Datasheet gør dette ikke indlysende.

 

Mere eksotiske ting

 

Spread-spektrum PWM: I stedet for fast frekvens ryster du den ±10 % tilfældigt. Spreder EMI over et bredere frekvensområde, reducerer peak-emissioner. Hjælper med at bestå FCC/CE-test uden så meget filtreringshardware. De fleste moderne SMPS-chips har dette indbygget. Cypress PSoC lader dig endda styre dithering-mønsteret-savtand, trekantet, pseudo-tilfældigt.

Interleaved PWM: Kør flere konvertere ud af fase. To konvertere ved 180 graders faseskift betyder, at indgangskondensatoren ser halvdelen af ​​bølgestrømmen. Fire omformere ved 90 graders faseforskydning-kvartaler krusningen. Men nu har du brug for præcis fasesynkronisering mellem kanaler og belastningsbalancering, så de deler strøm ligeligt. Har normalt brug for en dedikeret controller IC, medmindre din mikro har nok ressourcer.

GaN FET'er kan skifte på under 10 ns. Åbner 10MHz+ PWM-frekvenser-induktorer bliver små, næsten kun PCB-spor. Men: bordlayout er kritisk, gate-drev kræver seriøs opmærksomhed, enhver induktans forårsager massiv overskridelse. Ikke for begyndere. Set en GaN design ring til 2x VDD, fordi nogen brugte en standard gate driver med 5 cm sporlængde. FET overlevede ikke.

 

PWM

 

Hvad jeg egentlig laver

 

Til de fleste ting: 20kHz, hardware-timer PWM, 10-bit opløsning. Masser til motorstyring og LED-dæmpning. Tilføj en gate driver IC (2A spidsstrøm minimum), lav-ESR keramiske hætter lige ved FET drænet, fedt jordplan. Tjek omskiftningsbølgeformerne med et omfang på den første prototype, forvent at gentage én gang.

For alt over 10A kontinuerlig, termisk simulering før layout. Jeg bruger ANSYS, men selv grundlæggende FEA fanger de fleste problemer. Eksporter kobberlagene med tab som varmekilder, sæt grænsebetingelser, tjek om noget rammer 125 graders overgangstemperatur ved maks. omgivelsestemperatur. Har normalt brug for køleplader eller tvungen luft, hvis du skifter mere end 50W.

Og test det ved temperatur. Test af rumtemperatur fanger måske 60 % af problemerne. Varm-boks ved 70 graders omgivelsestemperatur i 8 timer finder resten-termal runaway, gate threshold shift, kondensator ESR-stigning. Det kostede mig en uge en gang, da et design fungerede fint ved 25 grader, men FET'en låste sig ved 65 grader, fordi jeg ikke tog højde for tærskelspændingstemperaturkoefficienten.

Det er PWM. Enkelt koncept, uendelige detaljer.

 

Det er PWM. Enkelt koncept, uendelige detaljer.

Sidste ting: Hvis du laver batteridrevne-PWM-ting, skal du ikke bruge penge på celler. Prøvede nogle no-name lithium-pakker en gang-, der ikke kunne håndtere krusningsstrømmen, spændingen faldt under belastning, hele systemet blev brunet ud. Skiftet til korrektionisk lithium batterimoduler med en anstændig C-rating, problemet forsvandt. De ekstra $15 per pakke reddede mig fra tre supportopkald om ugen.

Send forespørgsel