Pulse Width Modulation (PWM) je jednou z nejdůležitějších technik používaných v elektronice a automatizačních projektech Raspberry Pi. Umožňuje digitálním GPIO pinům simulovat analogové řízení úpravou časování signálu místo výstupního napětí.

Přehled Raspberry Pi PWM
Pulse Width Modulation (PWM) je metoda, která umožňuje pinům Raspberry Pi GPIO ovládat výstupní výkon rychlým přepínáním digitálního signálu ZAPNOUT a VYPNOUT. Místo vytvoření skutečného analogového napětí PWM mění dobu, po kterou signál zůstává VYSOKÝ během každého cyklu. Toto procento včasného zapnutí se nazývá duty cycle.
Jak PWM funguje na Raspberry Pi

PWM signál opakovaně přepíná pin Raspberry Pi GPIO mezi stavem VYSOKÝ a NÍZKÝ. Signál zůstává digitální, ale připojená zařízení reagují na průměrný efekt přepínání.
Dva hlavní parametry řídí provoz PWM:
| PWM parametr | Význam |
|---|---|
| Frekvence | Kolikrát se signál za sekundu opakuje |
| Pracovní cyklus | Jak dlouho signál zůstává zapnutý během každého cyklu |
Na GPIO pinech Raspberry Pi je HIGH přibližně 3,3V. 50% pracovní cyklus znamená, že signál zůstává VYSOKÝ polovinu času a NÍZKÝ polovinu času. To může způsobit, že LED bude vypadat polojasně nebo snížit průměrný výkon dodaný motoru.
Pracovní cyklus se počítá přízí:
Pracovní cyklus = ON time / Celkové období × 100 %
| Pracovní cyklus | Chování signálu | Praktický dopad |
|---|---|---|
| 0 % | Vždy VYPNUTÉ | Žádný výstup |
| 25 % | ZAPNUTO po čtvrtinu cyklu | Nízký výstup |
| 50 % | ZAPNUTO pro polovinu cyklu | Střední výstup |
| 75 % | ZAPNUTO po tři čtvrtiny cyklu | Vysoký výstup |
| 100 % | Vždy ZAPNUTÉ | Plný výstup |
Zvýšení pracovního cyklu zvyšuje průměrný výkon, zatímco jeho snížení jej snižuje.
Frekvence PWM je počet cyklů PWM za sekundu. Měří se v hertzech (Hz).
Frekvence se počítá příčetně:
f=1/T
| Zařízení | Typická frekvence PWM |
|---|---|
| LED diody | Stovky Hz nebo více |
| DC motory | Stovky Hz až několik kHz |
| Serva | Kolem 50 Hz |
| Zvukový výstup | Mnohem vyšší frekvence |
Špatná frekvence může způsobit blikající LED, hlučné motory, nestabilní serva nebo špatnou kvalitu zvuku.
Hardwarové PWM vs softwarové PWM na Raspberry Pi

| Téma | Hardware PWM | Software PWM |
|---|---|---|
| Definice | Používá dedikovaný PWM hardware uvnitř procesoru Raspberry Pi | Používá softwarově řízené GPIO přepínání k vytváření PWM pulzů |
| Časové řízení | Řízeno hardwarem | Ovládáno softwarem a operačním systémem Linux |
| Přesnost načasování | Vysoké | Střední |
| Stabilita signálu | Velmi stabilní s menším jitterem | Může se třást, zvlášť při vysoké zátěži CPU |
| Využití CPU | Nízké využití CPU | Vyšší využití CPU |
| GPIO Flexibilita | Omezeno na vybrané GPIO piny | Může fungovat na mnoha GPIO pinech |
| Frekvenční řízení | Přesnější a stabilnější | Závisí na zatížení systému |
| Výkon při zátěži | Udržuje stabilní výstup lépe během pozadí | Může se stát nestabilním, když Linuxové úlohy na pozadí přeruší časování pulzů |
| Nejlepší aplikace | Serva, motorové ovladače, ventilátory, audio výstup, přesné řídicí systémy | Stmívání LED, projekty pro začátečníky, řízení při nízkých rychlostech, indikátory stavu |
| Hlavní výhoda | Plynulý a přesný výstup PWM | Snadné nastavení a více GPIO možností |
| Hlavní omezení | Dostupné pouze na vybraných pinech | Méně přesné časování |
| Doporučené použití | Použití, když záleží na přesnosti načasování | Použití pro jednoduché projekty, kde jsou malé časové chyby přijatelné |
Raspberry Pi PWM GPIO piny a konfigurace

Číslování GPIO a hardwarové PWM piny
Raspberry Pi používá více GPIO číselných systémů. Většina moderních Python knihoven používá číslování BCM, zatímco fyzické číslování označuje skutečná umístění pinů v hlavičce.
| Typ číslování | Význam |
|---|---|
| Číslování BCM | Broadcom GPIO číslování se používá interně |
| Fyzické číslování pinů | Skutečné pozice hlavičkových pinů |
| Číslování WiringPi | Starší zastaralý číselný systém |
Vždy si ověřte GPIO číslování před zapojením hardwaru.
Běžné hardwarové PWM piny
| BCM GPIO | Fyzický odznak | PWM kanál | Běžné použití |
|---|---|---|---|
| GPIO12 | Pin 32 | PWM0 | LED, motory, serva |
| GPIO13 | Pin 33 | PWM1 | LED, motory, serva |
| GPIO18 | Pin 12 | PWM0 | Audio, serva, řízení motoru |
| GPIO19 | Pin 35 | PWM1 | Audio, serva, řízení motoru |
GPIO18 se běžně používá, protože podporuje hardwarové PWM a je široce podporován v PWM tutoriálech a knihovnách.
Knihovny PWM a konfigurace
Běžné PWM knihovny Raspberry Pi
| Knihovna | Hlavní účel | Poznámky |
|---|---|---|
| RPi.GPIO | Základní řízení GPIO a PWM | Přátelské pro začátečníky |
| gpiozero | Zjednodušené řízení zařízení | Vysokoúrovňové rozhraní |
| pigpio | Přesné načasování a pokročilé PWM | Podporuje časování DMA |
| lgpio | Moderní GPIO řízení | Přístup na nižší úrovni |
Typické parametry konfigurace PWM
| Parametr | Popis |
|---|---|
| Frekvence | Rychlost přepínání PWM |
| Pracovní cyklus | Procento času ON |
| GPIO Pin | Vybraný výstupní pin PWM |
| PWM režim | Hardwarový PWM nebo softwarový PWM |
Omezení PWM a bezpečnost zapojení
Hardware PWM pro Raspberry Pi má několik omezení, která se stávají důležitými v robotice, motorickém řízení, audio systémech a průmyslových aplikacích.
| Omezení | Vysvětlení |
|---|---|
| Omezené PWM kanály | K dispozici je pouze malý počet hardwarových PWM výstupů |
| Sdílené funkce | Některé GPIO piny sdílejí periferie |
| Zvukové konflikty | PWM může kolidovat s integrovaným zvukem |
| Omezení počtu odznaků | Ne všechny GPIO piny podporují hardwarové PWM |
| Sdílení frekvencí | Některé PWM kanály sdílejí zdroje hodin |
| Závislost DMA | Pokročilé metody PWM mohou využívat DMA zdroje |
Mnoho problémů s PWM je způsobeno spíše chybami v zapojení než softwarovými problémy.
| Chyba v zapojení | Proč na tom záleží |
|---|---|
| Kombinace BCM a fyzického číslování | Ovládá špatný GPIO pin |
| Přímé připojení motorů k GPIO | Může poškodit Raspberry Pi |
| Chybějící společná půda | Příčiny nestabilních signálů |
| Překročení limitů GPIO proudu | Může trvale poškodit GPIO piny |
| Chybějící zpětná dioda | Napěťové špičky mohou poškodit součástky |
| Špatné napěťové připojení | GPIO piny podporují pouze 3,3V logiku |
| Volné propojovací vodiče | Způsobuje nestabilní PWM signály |
Doporučené ochranné komponenty
| Komponenta | Účel |
|---|---|
| MOSFET | Bezpečně přepíná zátěže s vyšším proudem |
| H-Bridge Driver | Ovládá rychlost a směr motoru |
| Dioda s zpětným proudem | Chrání před indukčními napěťovými špičkami |
| Externí napájení | Bezpečně napájí motory |
| Optocoupler | Zajišťuje elektrickou izolaci |
Aplikace Raspberry Pi PWM
LED stmívací systémy

PWM se široce používá v LED projektech Raspberry Pi, protože dokáže ovládat jas bez nutnosti skutečného analogového výstupního pinu. Změnou pracovního cyklu mohou LED diody působit slaběji nebo jasněji. To je užitečné pro ovládání jasu LED, míchání barev RGB, dekorativní osvětlení, systémy adaptivní jasu a indikátory stavu. Měla by být použita dostatečně vysoká frekvence PWM, aby se zabránilo viditelnému blikání.
Řízení rychlosti motoru

PWM se běžně používá k řízení otáček stejnosměrných motorů v robotických kolech, čerpadlech, ventilátorech, dopravníkových systémech a automatizačních pohonech. Místo přímé změny napájecího napětí PWM upravuje průměrný výkon dodávaný motoru. Vyšší pracovní cykly obvykle zvyšují rychlost motoru, zatímco nižší pracovní cykly ji snižují. Externí ovladače motorů jsou potřeba, protože piny GPIO Raspberry Pi nemohou bezpečně pohánět motory přímo.\
Řízení polohy serva

Servomotory používají opakující se řídicí pulzy, kde šířka pulzu určuje polohu v robotických ramenech, pan-tilt kamerových systémech, RC vozidlech a automatizačních systémech. Malé časovací chyby mohou způsobit třes, bzučení nebo nestabilní pohyb, proto je stabilní časování PWM důležité pro spolehlivé řízení serva.
Generování audio signálu

Raspberry Pi PWM dokáže generovat jednoduché tóny, alarmy, bzučáky a základní zvukové signály přepínáním GPIO pinů na slyšitelných frekvencích. PWM je užitečný pro jednoduchý vstup vloženého zvuku, ale nemůže plně nahradit dedikovaný DAC pro vysoce kvalitní audio aplikace.
Průmyslové a IoT aplikace

PWM je užitečný v průmyslových a IoT systémech Raspberry Pi, protože dokáže ovládat nastavitelné hardwarové výstupy. Mezi běžné aplikace patří chytré zemědělství, monitorování životního prostředí, systémy HVAC, průmyslová automatizace a řídicí systémy IoT. PWM často ovládá ventilátory, čerpadla, ventily, osvětlovací systémy a akční pohony.
Raspberry Pi vs Arduino pro PWM

| Kategorie | Raspberry Pi | Arduino |
|---|---|---|
| Operační systém | Běží na Linux OS | Běží jednoduchý firmware |
| Výpočetní výkon | Vyšší výpočetní výkon pro pokročilé aplikace | Nižší výpočetní výkon, ale optimalizovaný pro řídicí úkoly |
| Časování PWM | Méně předvídatelné kvůli multitaskingu OS | Předvídatelnější chování PWM v reálném čase |
| Latence | Střední latence | Nižší latence s rychlejší odezvou hardwaru |
| Hardwarová kontrola | Nepřímý hardwarový přístup přes operační systém a knihovny | Přímý hardwarový přístup |
| Stabilita PWM | Dobré pro univerzální PWM | Lepší pro stabilní motorické řízení a řídicí smyčky |
| Networking | Vynikající podpora sítí a IoT | Omezené sítě bez dalších modulů |
| Multitasking | Může spouštět servery, skripty, databáze a více aplikací | Omezená schopnost multitaskingu |
| Programování | Snadné programování na vysoké úrovni v Pythonu | Jednoduché nízkoúrovňové programování s Arduino IDE |
| Začátečnická elektronika | Dobré pro začátečníky zaměřené na software | Výborné pro začátečníky v elektronice |
| Chytrá automatizace | Vynikající pro propojené chytré automatizační systémy | Dobré pro samostatnou automatizaci |
| Řízení motoru v reálném čase | Střední výkon | Vynikající výkon |
| Přesné časování | Střední přesnost načasování | Výborná přesnost načasování |
| Nejlepší případy použití | IoT systémy, chytrá automatizace, vzdálený monitoring, projekty založené na Linuxu | Motory, serva, robotika, vestavěné řízení, PWM v reálném čase |
| Hlavní výhoda | Kombinuje PWM s pokročilým softwarem a sítí | Poskytuje přesné a stabilní řízení PWM v reálném čase |
Řešení problémů s Raspberry Pi PWM
| Problém | Možná příčina | Doporučené řešení |
|---|---|---|
| Signál nefunguje | Špatné číslování GPIO | Zkontrolujte, zda kód používá BCM, fyzický nebo jiný číselný systém. |
| Signál nefunguje | Nesprávné zapojení | Znovu zkontrolujte GPIO připojení, umístění rezistoru a sdílenou zem. |
| Signál nefunguje | Nepodporovaný pin | Ověřte, zda vybraný pin podporuje hardwarové nebo softwarové PWM. |
| Signál nefunguje | Problém s knihovnou nebo povolením | Ověřte instalaci, oprávnění a příkazy pro instalaci GPIO knihovny. |
| Servo jitter | Slabý zdroj napájení | Použijte samostatný zdroj pro servo. |
| Servo jitter | Chybějící společná půda | Připojte zem Raspberry Pi k zemnímu zdroji serva. |
| Servo jitter | Softwarová PWM nestabilita | Použijte hardwarový PWM nebo stabilnější knihovnu jako pigpio. |
| Servo jitter | Elektrický šum | Zkraťte vodiče a zlepšete filtrování napájení nebo uspořádání kabelů. |
| LED blikání | Frekvence příliš nízká | Zvyšujte PWM frekvenci, dokud blikání nebude viditelné. |
| LED blikání | Špatné zapojení | Zkontrolujte hodnoty rezistorů, uvolněné spoje a kvalitu zapojení. |
| Hluk motoru nebo nestabilita | Slabý zdroj napájení | Použijte externí zdroj napájení motoru místo napájení z GPIO. |
| Hluk motoru nebo nestabilita | Chybějící ochranné složky | Používejte správný ovladač motoru a podle potřeby přidejte ochranné součástky, například diodu flyback. |
| Hluk motoru nebo nestabilita | Nesprávná frekvence | Nastavte frekvenci PWM tak, aby vyhovovala obvodu motoru a měniče. |
| Chyby PiPia | Daemon neběží | Začněte nebo restartujte pigpio démona. |
| Chyby PiPia | Konflikty GPIO | Zkontrolujte, jestli jiný program už nepoužívá stejný GPIO pin. |
Často kladené otázky [FAQ]
Proč je PWM důležité na Raspberry Pi, i když GPIO piny jsou pouze digitální?
PWM umožňuje pinům Raspberry Pi GPIO simulovat analogové řízení rychlým přepínáním signálů mezi VYSOKÝM a NÍZKÝM stavem. Místo přímé změny napětí PWM mění pracovní cyklus tak, aby reguloval průměrné dodávky energie. To umožňuje ztlumit LED diody, upravovat otáčky motoru, ovládat polohu serva a spravovat ventilátory pomocí standardních digitálních GPIO pinů.
Kdy by se měl na Raspberry Pi používat hardwarový PWM místo softwarového PWM?
Hardwarové PWM je vhodnější pro aplikace vyžadující stabilní časování a přesnou generaci pulzů, jako jsou serva, motorové ovladače, audio výstup a robotika. Protože dedikovaný hardware ovládá signál, vytváří méně jitterů a spotřebovává méně CPU zdrojů. Softwarové PWM obvykle stačí pro jednodušší úkoly, jako je stmívání LED nebo indikátory stavu, kde jsou drobné časové chyby méně patrné.
Proč může nesprávná frekvence PWM způsobovat problémy v projektech Raspberry Pi?
Různá zařízení nejlépe reagují na různé PWM frekvence. Pokud je frekvence příliš nízká, LED diody mohou viditelně blikat, motory mohou produkovat hluk nebo se pohybovat nepravidelně a serva mohou být nestabilní. Velmi vysoké frekvence mohou také snížit rozlišení PWM nebo zvýšit nároky na zpracování. Volba správné frekvence zlepšuje výkon, plynulost a spolehlivost.
Proč by se motory a serva nikdy neměly přímo připojit k GPIO pinům Raspberry Pi?
Piny GPIO Raspberry Pi podporují pouze nízkoproudové 3,3V logické signály a nemohou bezpečně napájet motory nebo serva přímo. Zařízení s vysokým proudem mohou poškodit GPIO piny, způsobit napěťové špičky nebo způsobit nestabilní provoz. Externí ovladače, MOSFETy, H-bridge obvody, flyback diody a samostatné napájecí zdroje pomáhají chránit Raspberry Pi a zvyšovat spolehlivost PWM.
Proč je Arduino často lepší pro přesné ovládání PWM než Raspberry Pi?
Desky Arduino jsou navrženy pro hardwarovou kontrolu v reálném čase a běží na jednoduchém firmwaru bez multitaskingového operačního systému. To umožňuje předvídatelnější načasování PWM, nižší latenci a lepší stabilitu motorů, serv a řídicích smyček. Raspberry Pi je silnější v síťových aplikacích, linuxových aplikacích, IoT systémech a chytré automatizaci, ale aktivita na pozadí Linuxu může ovlivnit přesnost časování PWM.