Na začiatok je dobré si pripomenúť, že PWM je skratka pre pulzne šírkovú moduláciu. Výkon, alebo stupeň PWM regulácie sa udáva v percentách, vzorec na výpočet je jednoduchý : ( t_aktiv / T ) * 100 [%]. t_aktiv je dĺžka aktívnej časti impulzu, T je perióda signálu. V tomto článku budem uvažovať s frekvenciou signálu 200Hz, jeho perióda je 0.005s.
74HCT151 je 8-bitový multiplexor, ktorý umožní v zapojení spolu s čítačom a DIP prepínačom 9 stupňovú reguláciu. Prvý stupeň je 0%, kedy je signál, bez aktívnej časti. Opačne, 9 stupeň je 100%, kedy je signál bez neaktívnej časti. A ostatných 7 stupňov uvidíte v obrázku. Všimnite si dĺžku aktívnej časti ( červená ) voči celkovej perióde ( červená + modrá ).

Celá perióda je rozdelená na 8 častí. Ak je nastavený stupeň pwm regulácie 0, 8 z 8 častí je neaktívnych. Ak je stupeň 1, 1 z 8 častí je aktívna. Dĺžka 1/8 períody je 0.000625s, dĺžka celej periódy je 0.005s. Preto je výkon prvého stupňa v percentách ( (1 * 0.000625) / 0.005) * 100 = 12.5%. Ostatné stupne si jednoducho dopočítate. Napríklad 6 stupeň je (( 6 * 0.000625) / 0.005 ) * 100 = 75%.
Podstatou multiplexora je prepínanie vstupov. Multiplexor má jeden výstup ( plus jeden negovaný, ale ten ma nezaujíma ), osem vstupov a 3 vstupy pre nastavenie smeru. Nastavenie smeru v tomto prípade znamená, že z ktorého vstupu prejde signál na výstup. Pozrite si tento animovaný obrázok, ktorý ukazuje princíp multiplexora:

Nasledujúca tabuľka popisuje to, čo ukazuje obrázok. Na vstupy S0, S1, S2 sú v BCD kóde privádzané čísla od 0 do 7 a podľa toho je prepínaný aj tok signálu.
| Pin S0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
| Pin S1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| Pin S2 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| S | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Smer | I0 » Y | I1 » Y | I2 » Y | I3 » Y | I4 » Y | I5 » Y | I6 » Y | I7 » Y |
Podľa privádzaných čísel na vstupy S0. S1 a S2 prepína multiplexor vstupy. Ak na vstup I1 privediem úroveň logickej 1, bude táto jednotka aj na výstupe Y, ale len keď bude na vstupe S číslo 1. Toto sa bude diať len raz za periodu a bude to trvať 0.000625s. Zvyšok z periódy, t.j. 0.004375s bude na výstupe Y úroveň logickej 0. Ináč povedané, aktívna časť bude na výstupe Y 0.000625s, neaktívna časť 0.004375s. Použijem vzorec na výpočet PWM : ( t_aktiv / T ) * 100 = ( 0.000625 / (0.000625+0.004375 )) * 100 = ( 0.000625/0.005 )*100 = 12.5%
Tým som sa dopočítal k celému princípu PWM s 74HCT151. Podľa toho, na koľko z 8 vstupov ( pri správnom načasovaní prepínania vstupov ) privediem úroveň logickej 1, určím stupeň PWM. Je nutné dodržať postupnosť pinov! Ak chcem priviesť úroveň logickej 1 na dva vstupy, privádzam na I0, I1. Ak na tri, tak na I0, I1 a I2. Postupne, nevynechávam vstupy!
Pre správne fungovanie PWM je dôležité správne načasovanie. Potrebujem postupne privádzať čísla 0 až 7 na vstup S. Správne napísané, čísla 0 až 7 v BCD formáte na piny S0, S1 a S2. Na to poslúži čítač 74HCT90. Pri správnom zapojení, čítač neustále dookola počíta impulzy privádzané na jeho vstup. Ak napočíta 7 impulzov, pri ďalšom sa resetne a počíta znova od nuly. Tu je zapojenie:

Pri tomto zapojení čítač počíta od 0 po 7, potom sa resetne na nulu. Impulzy sú privádzané na vstup A ( pin č. 14. ), výstup je na pinoch č. 12., 9., 8. Keďže čítač musí za sekundu 200 krát napočítať od 0 do 7, musí byť na jeho vstup za sekundu privedených 200 * 8 = 1600 impulzov, čo je aj frekvencia vstupných impulzov v Hz. Takýto oscilátor najjednoduchšie vyrobím pomocou NE555. Tu je schéma:

Keď som ho meral, frekvencia na F_out bola 1521Hz, čo je veľmi blízko požadovaných 1600Hz.
Výsledné zapojenie 8 stupňovej PWM regulácie pozostáva zo 4 častí. NE555 ako oscilátor, 7490 ako čítač, 74151 ako multiplexor a DIP prepínač, ktorý volí stupeň PWM. Tu je schéma ( Kliknite na obrázok, aby sa zobrazilv v plnom rozlíšení ):
DIP prepínač určuje stupeň PWM. V praxi je dobré ho nahradiť nejakou logikou, ktorá sa bude starať o prepínanie. Napríklad kombinácia čítača 7490 a dekodéra 7442, alebo komparátormi a tlačidlami. Ale to niekedy nabudúce…
