Vad är det här ”PWM” för något?

Vid det här laget borde vi ha lagt all energi på Speed Weekend 2015-filmen, men istället vandrar tankarna iväg åt andra håll.

För säkert två år sedan började jag konstruera en spänningsregulator för att kunna stabilisera spänningen till bränslepumparna. Detta projekt blir mer aktuellt nu av två anledningar:

  1. Med en större motor så kommer vi antagligen behöva köra pumparna på högre spänning än 12 V för att få tillräckligt bränsleflöde. Vi kommer alltså behöva seriekoppla två batterier till 24 V och sedan reglera ner spänningen till lagom nivå.
  2. Som ni såg i förra inlägget så har vi funderat på att montera ett par pulsjetar på ett gocart-chassi. Då vore det förstås väldigt fränt att kunna koppla gaspedalen till dessa, och då krävs det också någon elektronik som kan reglera spänningen till pumparna.

Jag tänkte försöka ge mig på att förklara lite kring hur detta fungerar. Det finns en möjlighet att jag tar mig vatten över huvudet, och rätta mig gärna ifall ni hittar några grövre fel. Jag har medvetet valt en lite förenklad terminologi då jag inte ser någon vits med att slänga mig med svåra tekniska termer hela tiden. Detta är bara tänkt som en lite ytlig beskrivning av hur saker fungerar.

Hur reglerar man spänning?

Seriemotstånd

Den gamla metoden är att ”bränna” bort oönskad energi, d.v.s. omvandla den till värme. Tänk er att man har ett batteri på t.ex. 12 V och har en motor som man vill driva på 6 V. Då skulle man kunna sätta ett effektmotstånd i serie med motorn. Anpassar man effektmotståndets resistans så att spänningsfallet blir 6 V så blir det 6 V kvar till motorn.

shunt

(L-E påpekade att ”shuntmotstånd” nog är en lite felaktig beteckning i detta sammanhang. Därför kallar vi härmed R1 för seriemotstånd).

Det finns såklart kompletta regulatorer som levererar en stabil utspänning oavsett inspänning genom att helt sonika omvandla ”överflödet” till värme. Några populära heter 7805 (5 volt utspänning) och 7812 (12 volt utspänning). Dessa fungerar bra för strömmar i storleksordningen 1 A, men för 45-50 A som vi är ute efter blir det inte så vettigt.

7805

En 7805 spänningsregulator

Detta fungerar men är opraktiskt av flera skäl:

  1. Taskig verkningsgrad. I exemplet ovan så går ju hälften av energin från batteriet upp i rök (blir värme).
  2. Hög effektutveckling (hör ju ihop med den dåliga verkningsgraden). Metoden som beskrivs används fortfarande (i ungefär samma form) i applikationer där man behöver ta ut väldigt låg ström (t.ex. spänningsreferenser), men behöver man ta ut större effekter så kommer detta kräva väldigt stora seriemotstånd.

PWM – Pulsbreddsmodulering

Detta är nog den vanligaste tekniken som används idag för att reglera en spänning. Jag tänkte ge mig på ett försök till att förklara ungefär hur detta funkar. Det kan bli lite långdraget, och för den som tröttnar på mitt babbel så är det väl bara att gå vidare.

PWM betyder Pulse Width Modulation (pulsbreddsmodulering på svenska). Tänk er att man har en vanlig ficklampa. Om denna är konstant tänd så lyser den med en viss styrka.  Låt säga att lampans ljusstyrka när den är tänd är 100 cd (Candela).
Låt säga att vi blinkar jättesnabbt med ficklampan. Typ 10 000 gånger i sekunden. Ögat kommer inte att märka blinkingarna, men där emot kommer man att uppleva att lampan lyser svagare. Om lampan vid varje blink är tänd lika länge som den är släckt så kommer ljusstyrkan att vara ungefär 50 cd.

Om lampan där emot är avstängd tre gånger längre tid än den är tillslagen så blir ljusstyrkan 25 cd. Vad är det fina med detta då? Jo en sak som är finfin är att vi inte bränner bort en massa energi i onödan, som i exemplet med shunten.

Pulsbreddsmodulering fungerar på samma sätt, och jag tänkte försöka förklara ungefär hur allt hänger ihop.

Lite matematik

Inom matematikkursen om transformteori (i högskolan) fick man lära sig att alla icke ändliga signaler, oavsett form, går att beskriva som summan av ett antal (eller oändligt antal) sinusformade signaler.

De flesta av er vet säkert hur en sinusvåg ser ut:

sinus

Denna man man t.ex. titta på (som ni gjorde med bilden ovan), eller så kan man lyssna på den:

Detta är en så ren ton man kan få. Den innehåller inga övertoner utan endast en enda grundton. I detta fallet med en frekvens på 440 Hz. Detta får vi bekräftat om vi gör en frekvensanalys av tonen (ni som arbetar med ljud känner igen er här):

sinusFFT

En fyrkantvåg då? Jo, så här låter en sådan (också 440 Hz):

och så här ser den ut:

square

Som ni hör så låter denna inte alls lika rent. Detta beror på att fyrkantvågen inte bara består av en grundton på 440 Hz, utan även av en massa övertoner av varierande frekvens och amplitud. Om vi gör en frekvensanalys av fyrkantvågen så kan vi se detta:

squareFFT

Och precis som jag tidigare nämnde så går det faktiskt att bryta ner denna fyrkantvåg i ett antal sinusformade signaler med varierande frekvens och amplitud. Faktum är att en fyrkantvåg har oändligt antal övertoner, vilket med andra ord innebär att det krävs ett oändligt antal sinusvågor för att ”konstruera” en fyrkantvåg.

I bilden nedan ser ni grundtonen samt de tre första övertonerna för en fyrkantvåg. Eller snarare, ni ser hur en ”fyrkantvåg” konstruerad av de fyra första sinuskomponenterna kommer att se ut (fyrkantvågen är överst).

squareComponents

Som ni ser så är det ingen perfekt fyrkantvåg som ligger överst. Detta beror helt enkelt på att det krävs ett oändligt antal övertoner för att skapa denna perfekta våg.

Lågpassfilter

Ett lågpassfilter är en matematisk funktion, som kan implementeras i allt från mjukvara till hårdvara. Som filtret antyder så släpper det igenom (pass) låga frekvenser medan högra frekvenser filtreras bort. Filtret ställs in till att filtrera bort frekvenser över ett visst värde. Detta värde kallas för brytfrekvens.

Låt säga att vi skickar in en perfekt fyrkantvåg i ett lågpassfilter och ställer in brytfrekvensen till ungefär 8 gånger fyrkantvågens grundfrekvens. Detta innebär då att de högsta övertonerna kommer att filtreras bort. Fyrkantvågen kommer då att se ut som i bilden ovan.

Ställer vi brytfrekvensen lägre, säg strax över fyrkantvågens grundfrekvens, så filtreras alla övertoner bort.

I bilden nedan så ser ni den ofiltrerade fyrkantvågen överst. De tre undre signalerna är fyrkantvågen efter att den passerat genom ett lågpassfilter. Den andra vågformen är resultatet av att använda ett lågpassfilter med ”låg effekt”, d.v.s som inte fullt ut filtrerar bort alla övertoner. Nästa vågform är resultatet av ett lite effektivare lågpassfilter, och i den sista vågformen är filtret ännu effektivare.

squareLP

Vad händer om vi ställer brytfrekvensen lägre än grundtonens frekvens då? Jo, det enda som blir kvar då är en eventuell konstant. Nedan ser ni detta. Med ett lågpassfilter som inte är så kraftfullt så blir inte resultatet helt och hållet konstant, men med ett kraftfullt filter och en låg brytfrekvens så är det enda som återstår en konstant – i det här fallet är denna 0.

squareLP1

Vad har detta med PWM att göra?

Massor faktiskt!

Vi återgår till ficklampsexemplet. Istället för att manuellt slå en strömbrytare till och från så låter vi en mikrokontroller slå till och från strömmen med hjälp av en effekttransistor.

pwmGen

Vi genererar då en fyrkantvåg som går mellan 0 volt till den spänning som är kopplad till effekttransistorn (ex. 12 volt). Ska vi bryta ner denna fyrkantvåg i komponenter så kommer vi att få ett oändligt antal sinusvågor, samt en konstant signal. Denna kallas för likspänningskomponenten (DC-komponenten), och när man snackar PWM så är det denna vi vill åt.
För att få ut DC-komponenten kör denna fyrkantvåg genom ett lågpassfilter med lägre brytfrekvens än switchfrekvensen (består i sin enklaste form av en resistor och en kondensator). Se bilden nedan; kvar blir endast en likspänning. Fyrkantvågen är till (12 V) lika länge som den är från (0 V) så blir likspänningskomponenten 6 V.

squareLP2

Spänningen på DC-komponenten kommer att vara helt proportionerlig mot fyrkantsvågens duty cycle.

Duty cycle?

För att beskriva hur länge fyrkantvågen är ”till” i förhållande till ”från” använder man begreppet duty cycle. Duty cycle anges i procent och anger förhållandet mellan den tid som fyrkantvågen är ”till” mot dess periodtid (summan av till och från).
I exemplet ovan är duty cycle 50%, d.v.s. fyrkantvågen är ”till” precis halva periodtiden.

Nedan ser vi fyrkantvågor med duty cycle 50%, 25% och 90%.

duty

Som ni kanske lade märke till i exemplet så är det så pass smidigt att med 50% duty cycle så blir DC-komponentens nivå 50% av inspänningen. Med 90% duty cycle så blir alltså DC-komponenten 90% av 12 V, d.v.s. 10.8 V.

”Filtret då, var sitter det”?

Faktum är att i många fall så krävs inget dedikerat filter. När man t.ex. styr en elmotor med PWM så hjälper motorlindningens induktans och motorns tröghetsmoment till med att filtrera bort allt utom DC-komponenten. Tänk er själva: Ni har en elmotor kopplad över en strömbrytare. Slå till och från strömbrytaren med en periodtid på 10 sekunder, d.v.s. 5 sekunder till, 5 sekunder från. Motorn kommer nu att starta, stanna, starta, stanna.
Om ni där emot gör detta flera gånger per sekund så kommer motorn aldrig att hinna stanna. Den kommer kanske inte ens att variera märkbart i hastighet. Så genom att låta switchfrekvensen vara hög nog slipper vi bygga extra filter som tar en massa plats.

Och?…

Insåg under tiden som jag skrev att detta kanske inte alls blev så informativt och lättförståeligt som jag tänkt mig. Dock så kändes det kul att svamla igenom det hela lite, och helt åt skogen är nog inte mina förklaringar. Jag tar ett exempel som jag tillämpar på vår jetskoter.

  1. Våra bränslepumpar ska drivas på 14 V för att vi ska få tillräckligt med soppa till nya motorn.
  2. Vi har 24 V batterispänning.
  3. 14 V är (14 / 24) * 100 = ~58.3% av 24 V. Vi väljer alltså en duty cycle på 58.3%.
  4. Vi väljer en switchfrekvens som är hög nog för att inte pumparna ska variera i hastighet. När man pysslar med PWM-styrning så man ofta utan vidare gå upp till flera tiotals kHz (kilohertz). Detta beror på vilka transistorer man använder etc.
  5. För att kompensera för att batteriernas spänning sjunker allt eftersom de laddas ur så låter vi dessutom mikrokontrollern som genererar PWM-signalen mäta den faktiska utspänningen till pumparna och korrigera duty cycle därefter. Denna ”mätning” kallas återkoppling och är något som används av alla former av spänningsregulatorer som ger en konstant utspänning oberoende av inspänning och/eller belastning.

pwmPump

För att åstadkomma detta började jag för ett par år sedan utveckla ett PWM-kort. Detta kort innehåller ett antal effekttransistorer samt den elektronik som krävs för att driva dessa.

pwmkort

Systemet är modulärt, så man ska kunna använda ett eller flera kort beroende på hur mycket effekt man vill ta ut.

I vanlig ordning blev jag lite överambitiös och började implementera en massa mer eller mindre nödvändiga funktioner som endast i vissa fall kunde vara av nytta. Allt fungerade jättebra i min provisoriska uppkoppling på skrivbordet, men inte på kretskortet. Misstänker att detta beror på att jag använt en annan typ av effekttransistorer på kretskortet. Blir till att börja undersöka detta vidare nu…

På tal om ljud…

På senare år har det dykt upp sk. ”digitala” förstärkare. Dessa är små, lätta, har hög verkningsgrad och kan leverera gott om effekt i förhållande till sin storlek. Dock så är ordet ”digital” rätt missvisande. Audioförstärkare klassificeras enligt vilken grundprincip de arbetar (Wikipedia-artikel). ”Digitala” förstärkare är i regel av typen klass D, och de bygger faktiskt på samma principer som vi beskrivit ovan, d.v.s. pulsbreddsmodulering.

Att få detta att fungera bra är uppenbarligen ingen enkel uppgift. Idag sitter det klass D-förstärkare nästan överallt, men inom HiFi går det lite trögt. De som låter väldigt bra kostar i regel därefter.

Det här inlägget postades i Faktarutor/Guider. Bokmärk permalänken.

2 kommentarer till Vad är det här ”PWM” för något?

  1. Anders Johansson skriver:

    Du borde bli pedagog du Linus, det där begrep ju till och med jag! 🙂

    Mycket bra skrivet, fortsätt gärna med såna här teoripass.

  2. Olov skriver:

    Dock tappade du mig nånstans vid alla övertoner 😉 Dock kommer jag intervjua dig eller LE angående återkopplingen. Ska bli loggning på sparken till nästa år och då vill även jag kunna mäta spänningen över pumparna. Men vi tar det vid ett senare skede 🙂

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *