Výpočet hodnot parametrů pro PWM
Poznámka:
V tomto návodu se počítají hodnoty PWM_Cycle a PWM_Prescale, které používá Mervis. Pokud s mervis nepracujete, potom se v tomto návodu dozvíte pouze o základních principech PWM na Unipi zařízeních.
Výběr frekvence
Jedním z parametrů, který je třeba nastavit, je frekvence PWM, která musí odpovídat Vašemu regulovanému systému. Čím pomalejší Váš systém je, tím nižší musí frekvence být a opačně. Vysvětleno na příkladu bojleru - ohřev velké nádrže s vodou na požadovanou teplotu zabere dlouhý časový úsek, vysoká frekvence regulace proto není potřeba. Zde budou stačit pouhé desetiny či setiny hertzu. Pro regulace LED diody ale budeme potřebovat frekvenci alespoň 100 Hz, nižší frekvence by totiž byly viditelné pouhým okem.
Dalším parametrem ke zvážení je prvek, který je mezi stavy ON a OFF přepínán. Pokud jde o mechanické relé, vysoká frekvence by jej mohla zničit. U SSR relé, MOSFETu či IGBT tranzistoru lze naopak použít kilohertzové až megahertzové frekvence (nezapomeňte důkladně prostudovat technické parametry dané komponenty).
U produktů Unipi je frekvence určována nastavením rozlišení. Viz níže.
Rozlišení PWM
Druhým parametrem PWM je rozlišení. Tato hodnota indikuje, na kolik kroků chceme regulaci rozdělit. Pokud je rozlišení 3, můžeme nastavit tři hodnoty střídy - 0 %, 50 % a 100 %. U rozlišení 11 pak můžeme střídu v rozsahu 0-100 % nastavovat po 10 % krocích.
Maximální možné rozlišení u kontrolérů Unipi činí 65536 kroků.
Střída signálu
Střída signálu, jak bylo řečeno výše, reprezentuje samotnou hodnotu regulace. Nejčastěji se setkáte se střídou vyjádřenou v procentech času ON v souvislosti s jeho periodou. V Mervisu je ale střída signálu vyjádřena hodnotou rozlišení. Ukážeme si, jak tuto hodnotu vypočítat.
rozlišení - 1
Střída [mervis] = ------------------- * střída [%]
100
Upozornění:
Střída v [Mervis] může nabývat pouze hodnot v rozsahu <0 až (rozlišení - 1)>. Tyto hodnoty nastavíte v programu.
Příklad 1
Rozlišení = 101 kroků (0-100% po 1% krocích)
Střída [%] = 34
rozlišení - 1 101 - 1
Střída [mervis] = ------------------- * střída [%] = ------------------- * 34 = 34
100 100
Pro rozlišení 101 kroků a žádanou střídu 34 % je třeba v Mervisu nastavit střídu na hodnotu 34. To bylo poměrně jednoduché, nyní proto zkusíme něco složitějšího.
Příklad 2
Rozlišení = 6 kroků (0-100 % po 20 % krocích)
Střída [%] = 40 %
rozlišení - 1 6 - 1
Střída [mervis] = ------------------- * střída [%] = -------------- * 40 = 2
100 100
Pro rozlišení 6 kroků a žádanou střídu 40 % je třeba v Mervisu nastavit hodnotu střídy na 2.
Výpočet konfiguračních parametrů Mervisu
Frekvenci a rozlišení nelze nastavit přímo v Mervisu. Proměnné pro konfiguraci PWM v Mervisu jsou označeny jako PWM_Cycle a PWM_Prescale, a jejich hodnoty je třeba vypočítat podle žádaného rozlišení a frekvence.
PWM_Cycle = resolution - 2
4.8 * 10^7
PWM_Prescale = ------------------------------- - 1
frekvence * ( rozlišení - 1)
Poznámka:
Proměnné PWM_Cycle a PWM_Prescale jsou vyjádřené 16-bitovými slovy, nastavit lze proto pouze hodnoty 0 - 65535. Pokud je výsledkem Vašeho výpočtu reálné číslo, je třeba jej buď zaokrouhlit nebo změnit parametry frekvence či rozlišení.
Alternativně je možné hodnoty rozlišení a frekvence získat z hodnot PWM_Cycle a PWM_Prescale pomocí následujících rovnic:
Rozlišení = PWM_Cycle + 2
4.8 * 10^7
Frekvence = ----------------------------------------
( PWM_Cycle + 1) * (PWM_Prescale + 1)
Příklad 1
Rozlišení = 11 (střída signálu 0-100 % s 10 % kroky)
Frekvence = 4 kHz
PWM_Cycle = rozlišení - 2 = 11 - 2 = 9
4.8 * 10^7 4.8 * 10^7
PWM_Prescale = ------------------------------- - 1 = --------------------- - 1 = 1199
frekvence * ( rozlišení - 1) 4000 * ( 11 - 1 )
Příklad 2
Rozlišení = 41 (krok 2,5%)
Frekvence = 0.1 Hz
PWM_Cycle = rozlišení - 2 = 41 - 2 = 39
4.8 * 10^7 4.8 * 10^7
PWM_Prescale = ------------------------------- - 1 = ------------------- - 1 = 119999999
frekvence * ( rozlišení - 1) 0.1 * (41 - 1 )
Upozornění:
Jak můžete vidět, při daném rozlišení a frekvenci je hodnota PWM_Prescale větší než možné maximum 65535. Musíme proto zvětšit hodnotu frekvence, rozlišení či oboje.
Příklad 3
Rozlišení = 10001 (krok 0,01 %)
Frekvence = 0.1 Hz
PWM_Cycle = rozlišení - 2 = 10001 - 2 = 9999
4.8 * 10^7 4.8 * 10^7
PWM_Prescale = ------------------------------- - 1 = ------------------------- - 1 = 47999
frekvence * ( rozlišení - 1) 0.1 * (10001 - 1 )
Poznámka:
Při zvýšeném rozlišení získáme nižší frekvenci a obráceně. Pro vysokofrekvenční PWM musíme obětovat část rozlišení.
K čemu je magická konstanta 4,8 x 10^7
Při výpočtech hodnoty PWM_Prescale využíváme konstantu 4,8 x 107. Konstanta představuje 48 MHz zdroj pro interní časovače/čítače, které se společně s PWM_Prescale a PWM_Count starají o nastavení požadované frekvence.