Hvis du har fulgt med i Curious Scientists blogserie om CH32V003F4P6-mikrocontrolleren, ved du, at det begyndte enkelt: skift af GPIO'er, kommunikation via USART og den sædvanlige MCU-opvarmning. Men i det seneste indlæg skruer forfatteren op og introducerer en af de stærkeste – og måske sejeste – funktioner i en mikrocontroller: timere og PWM.
PWM, pulsbreddemodulation, lyder måske som et tørt lærebogsudtryk, men det er grundlæggende mikrocontrollerens svar på at slå på tromme med præcis den rette rytme og styrke – hurtigt nok til at få dine ører, motorer eller LED'er til at opleve et jævnt signal. På CH32V003F4P6 er dette trommesæt Advanced-Control Timer Module (ADTM), en 16-bit tryllekunstner, der tæller op, ned eller begge dele, mens den leverer pulser, PWM-signaler eller endda kommunikerer med encodere.
Bloggen gennemgår, hvordan timeren hænger sammen med mikrocontrollerens 48 MHz-clock – en takt på 20,83 ns, ja nanosekunder – og hvordan registre som Auto-Reload Register (ARR) og Capture-Compare Register (CCR) fastlægger PWM-frekvens og duty cycle. I praksis: Vil du have et 10 Hz PWM-signal med 50% duty cycle? Justér prescaler, ARR og CCR, indtil regnestykket passer. Konfigurér derefter din GPIO som push-pull med alternativ funktion, og så har du en firkantbølge til en LED-timerdemonstration. Ved 10 Hz må du forvente synligt flimmer. Disse indstillinger er ikke en kommando til en hobbyservo: Brug den pulsbredde og rammetid, servomodellen kræver. Konventionelle modeller bruger ofte cirka 1–2 ms pulser i en ramme på cirka 20 ms, men det er ikke universelt.
Men før vi bliver alt for fortrolige med koden, zoomer vi ud. PWM opstod nemlig ikke bare med moderne MCU'er – teknikken har været på en rejse.
En kort, kaotisk historie om PWM
Idéen om at hakke noget op i pulser og kalde det regulering er ældre end halvlederne selv. Tilbage i 1849patenterede George Corliss sin legendariske dampmaskine, der – tro det eller ej – brugte et PWM-lignende trick til at regulere ventiltimingen. Ingen mikrocontrollere, intet silicium, bare støbejern og industriel stædighed.
Spol et århundrede frem, og PWM fandt vej til telekommunikation og rumtelemetri. NASA's Explorer I sendte i 1950'erne analoge sensordata tilbage til Jorden ved at kode dem som variable pulsbredder. Forestil dig hele satellittens tilstandsrapport presset ind i noget, der ligner en urolig firkantbølge.
I 1960'erne og 70'erneindså ingeniørerne, at PWM ikke kun var godt til kommunikation, men også til at spare energi. I stedet for at spilde effekt med klodsede reostater kunne man tænde og slukke så hurtigt, at motorer og forstærkere oplevede en jævn tilførsel. Det indledte æraen med switch-mode-strømforsyninger (SMPS). Og festen tog for alvor fart i 1976, da Silicon General lancerede SG1524– den første PWM-controller på én chip. Pludselig kunne man bruge en lille IC i stedet for at forbinde en halv laboratoriebænk for at bygge en regulator.
Da ingeniørerne først fik fingrene i dette legetøj, gik udviklingen hurtigt. I 1980'erneproducerede virksomheder som Motorola og TI PWM-controllere på stribe – hej TL494 – og Unitrode introducerede endda strømstyret PWM, som både reagerede hurtigere og tilføjede indbygget strømbegrænsning. Oversat: færre afbrændte transistorer og flere glade ingeniører.
Folkene inden for motorstyring ville selvfølgelig også være med. Teknikker som sinus-trekant-PWM dukkede op og fik motorer til at køre mere jævnt. Og i 1982præsenterede den kloge trio Pfaff, Weschta og Wick Space Vector Modulation (SVM)– en PWM-metode, der stadig lyder futuristisk. I dag er SVM grundlæggende hemmeligheden bag din stille og effektive elbilmotor.
På det tidspunkt var PWM gået fra telemetritrick til industriel rockstjerne. Frekvensomformere (VFD'er), som blev udviklet i Finland i 1960'erne, begyndte at drive alt fra metrotog til fabriksmaskiner. Og nu? PWM er overalt: din telefonoplader, din smarte LED-pære og selv klasse D-forstærkeren i Bluetooth-højttaleren, der spiller fredagens playliste.