Pulzně šířková modulace ve spojení s 8051

Pulzně šířková modulace - co to je a k čemu se používá

Pulzně šířková modulace (dále jen PŠM; angl. Pulse Width Modulation - zkr.PWM) je způsob kódování dat, která se přenášejí z vysílajícího zařízení k přijímacímu zařízení zvolenou přenosovou cestou. Přenosovou cestou může být pevné drátové spojení nebo bezdrátové spojení, kdy se data přenášejí vzduchem např. při IR komunikaci. Nás bude zajímat samotná pulzně šířková modulace, která reprezentuje sled bitů přenášeného rámce dat - jak ji generovat na straně vysílacího zařízení, příp. zpracovávat na straně přijímacího zařízení.

A jak takový signál kódovaný pulzně šířkovou modulací vypadá?

Jde tedy o signál s konstantní periodou T, kde se mění střída napětí (tj. poměr délky impulzu ku délce mezery uvažovaný v jedné periodě). Střída se uvádí někdy jako poměr (1:1,2:1,1:5 atd.), kdy je nutné uvést které číslo představuje impulz a které mezeru. Někdy se střída vyjadřuje procentuálně (100%,50%,0.1% atd.), kde 100% představuje ideální poměr 1:0, 50% poměr 1:1 atd. Poměr délky impulzu ku délce mezery bývá v zahraniční literatuře nazýván Duty Cycle.

Obr.č. 1


Aplikaci pulzně šířkové modulace si ukážeme na těchto, myslím si, nejčastějších případech použití ve spojení s mikroprocesorem 8051:
Pulzně šířková modulace se využívá i v konvenčním řízení otáček stejnosměrných motorů (nemusí zde být k řízení použit mikroprocesor), stejně tak i ve frekvenčních měničích pro řízení střídavých asynchronních motorů. Energetická úspora oproti řízení otáček změnou velikosti nap.napětí může být u velkých motorů značná. Také se tato modulace používá ve spínaných napájecích zdrojích.


Generování pulzně šířkově modulovaného signálu na výstupu 8051

Pokud budeme ve vyvíjeném zařízení potřebovat generovat PŠM signál (uvažujme příklad pro ovládání ss motorku), je vhodné se hned na začátku rozhodnout, jestli použijeme standardní typ mikroprocesoru a PŠM signál budeme vytvářet softwarově, nebo použijeme mikroprocesor, který má už v sobě integrován obvod PŠM.Přehled mikroprocesorů obsahujících hardwarově obvod PŠM najdete na stránce Výrobců.... Použitím takovéhoto procesoru si můžete práci usnadnit, ale např. nyní hodně rozšířené mikroprocesory ATMEL AT89Cxxxx obvod PŠM nemají a pak nezbývá než generování PŠM signálu zajistit čistě softwarově.
Obvod PŠM integrovaný v mikroprocesoru funguje podle obr.č. 2.

Obr.č. 2   Obecná struktura obvodu PŠM
Obecná struktura obvodu PŠM

Do frekvenční děličky se přivádí hodinový signál fosc, který se může ponechat nezměněn nebo se vydělí nějakou dělící konstantou. Dělící konstantu lze obvykle zvolit nastavením příslušného řídícího registru. Místo vnitřního hod.signálu lze u některých mikroprocesorů použít i extení zdroj hod.signálu. Čítač PWM je volně běžící čítač, který čítá hodinový signál z frekvenční děličky. Obsah tohoto čítače je komparátorem porovnáván s obsahem registru PWM, do kterého programově nastavíme požadovanou hodnotu. Na výstupu komparátoru dostáváme PŠM signál - jsou-li obsahy čítače a registru stejné, je na výstupu log.0; jsou-li různé, je na výstupu log.1. Střída výstupního signálu je tedy úměrná hodnotě zapsané v registru PWM (přibližně podle obr.č.3). Perioda výstupního signálu je pevná a je dána čítaným signálem a modem čítače PWM.

Obr.č. 3


Popíšeme si ještě obvod PŠM u mikroprocesoru Dallas DC87C550, kde je tento obvod řešen trošku odlišně:
mikroprocesor obsahuje 4 výstupy s 8-bitovou pulzně šířkovou modulací. Obvod PŠM sestává se 3 částí: frekvenční děličky, hodinového generátoru a pulzního generátoru. Do frekvenční děličky přivádíme hodinový signál (můžeme použít i signál z externího zdroje). Nastavením bitů PWxS2,PWxS1,PWxS0 (v tabulce symbolicky PWxS2:0), kde x představuje číslo jednoho ze čtyř možných výstupů (0-3), se zvolí dělící konstanta dle tabulky níže.
Výstup z děličky se přivádí na všechny čyři přítomné hodinové generátory. Hodinovým generátorem je zde 8-bitový čítač s automatickým přednastavováním, který udává periodu výst.signálu. Pulzní generátor představuje 8-bitový časovač časovaný signálem z 8-bitového čítače. Procesor umožňuje kaskádové spojení dvou PŠM obvodů, čímž dostaneme 16-bitový PŠM signál. To nám umožní dosáhnout většího rozlišení (např. při řízení otáček ss motorku jemnější nastavení). Jinými slovy - když budeme mít k dispozici 8-bitový pulzně šířkový modulátor, můžeme měnit rychlost otáčení motorku maximálně v 255 krocích (rozlišení 0,4%).
Výstupní frekvence děličky Nastavení
PWxS2:0
Machine Cycle_Clock / 1 000
Machine Cycle_Clock / 4 001
Machine Cycle_Clock / 16 010
Machine Cycle_Clock / 64 011
PWMCx (externí) 1xx



Řízení stejnosměrného motoru mikroprocesorem ATMEL AT89C2051

Ukážeme si konkrétní případ řízení malého ss motorku pomocí mikroprocesoru ATMEL AT89C2051. Ten neobsahuje žádný obvod PŠM, generování PŠM signálu tedy musíme zajistit sami čistě softwarově. V zapojení použijeme levný motorek od výrobce MEZ Náchod, typ P4HC423, napájecí napětí 12V, 0,7A, 4W, 10000 otáček/min.

Přestože některé malé ss motorky pracují již při napájecím napětí 5V nebo i menším, samotný mikroprocesor není schopen dodat potřebný proud k tomu, aby mohl mikroprocesor motorek řídit přímo. Ani minimální proud, který motorek k rozběhu potřebuje není sám mikroprocesor schopen poskytnout - musíme v závislosti na velikosti a odběru motorku připojit k mikroprocesoru vhodný budič, který bude schopen zpracovat řídící signály z mikroprocesoru a zajistit potřebné napětí a proud k řízení motorku.

Každý budič motorku je navržen pro max. napájecí napětí a proud, který je schopen motorku dodat. Je třeba brát v úvahu zvětšení odběru proudu při rozběhu motorku nebo nebo jeho reverzaci (změně smyslu otáčení).
V našem případě použijeme budič ve formě integrovaného obvodu s označením L293B od výrobce SGS-Thomson.
Tento budič obsahuje 4 výstupní kanály - můžete tedy řídit buď 4 motorky bez reverzace nebo 2 motorky s možností reverzace. Budič zvládne dodávat proud 1A na kanál, krátkodobě i špičkový proud až 2A, maximální napájecí napětí motorku až 36V. Budič má samostatný napájecí vstup pro vnitřní logiku budiče, lze tak dosáhnout nízké spotřeby obvodu. Každý kanál se ovládá logickým vstupem úrovně TTL. Budič má dva povolovací vstupy (zap/vyp) pro každý "most" (tj.spojené 2 kanály pro řízení s reverzací). Budič má vysokou šumovou imunitu a tepelnou ochranu.
Existuje i verze L293D, u které již IO obsahuje i ochranné diody.
Místo budiče ve formě IO můžete samozřejmě použít i jednoduchý budič z diskrétních součástek - můstkové zapojení 4 tranzistorů (nejlépe MOSFET) + ochranné diody. Řešení s L293 ale většinou vyjde levněji.

Zpět na hlavní stránku povídání

Copyright © Michal Fuksa 2001