Colpittsův oscilátor (s bipolárním tranzistorem v zapojení SE)
© Jiří Hospodka
Naším úkolem bude určit velikost induktoru a převodní vodivosti tranzistoru (klidový kolektorový proud) pro Colpittsův oscilátor v zapojení SE. Kmitočet oscilací ja zadán kHz. Ostatní velikosti prvků budeme vhodně volit. Schéma oscilátoru je nakresleno na následujícím obrázku. a jsou oddělovací kapacitory (pro oscilační kmitočet můžeme jejich impedanci zanedbat).
Načtení knihovny Syrup.
> | with(Syrup); |
Jeikož se jedná o zpětnovazební soustavu, bude pro odvození nejvýhodnější použít Nyquistovo kritérum. Nakreslíme tedy linearizovaný náhradní obvod oscilátoru pro malé změny obvodových veličin a rozpojíme zpětnovazební (ZV) smyčku. Pro její rozpojení je nejvýhodnější místo řízení proudového zdroje. Vstup budeme budit z nezávislého zdroje napětí . Odpor představuje paralelní spojení vstupního diferenciálního odporu tranzistoru a odporů a .
Zadání obvodu otevřené ZV smyčky.
> | bA:=TEXT(`oscilator`, `V 1 0`, `Gm 2 0 1 0 gm`, `Rc 2 0`, `C1 2 0`, `L 2 3`, `C2 3 0`, `Rp 3 0`, `.end`): |
Analýza obvodu (sestavení a řešení obvodových rovnic).
> | napeti:=syrup(bA, ac, 'curr_ac'): |
Syrup/parsedeck: Analyzing SPICE deck "oscilator" (ignoring this line)
syrup: There may be an unconnected component.
The following component(s) have zero current: {V}.
Přenos otevřené ZV smyčky.
> | Pos:=collect(subs(napeti,v[3])/V,s); |
Substituce úhlového kmitočtu ( ) místo Laplaceova operátoru .
> | PosI:=subs(s=I*omega,Pos); |
Výpočet úhlového kmitočtu oscilací řešením rovnice . V našem případě stačí řešit tuto rovnici pouze pro jemnovatel přenosu (čitatel je reálný).
> | reseni1:=solve(evalc(Im(denom(PosI)))=0,omega); |
První řešení je pro stejnosměrný signál, kdy se však jedná o ZZV ( ). Jelikož kmitočet musí vyjít kladný, vybereme jediné možné řešení - druhé. Pokud vyjádříme jeho kvadrát, dostaneme již poměrně jednoduchý vztah.
> | om0:=reseni1[2]: expand(om0^2); |
Vyřešíme-li nyní rovnici pro proměnnou , dostaneme minimální "zesílení", resp. transkonduktanci nutnou pro rozkmitání soustavy.
> | gm_min:=expand(simplify(solve(subs(omega=om0,PosI)=1,gm))); |
Pokud zvolíme velikost proudového zesilovacího činitele tranzistoru , můžeme zavést ještě vztah mezi a . Dále zvolíme velikost kolektorového odporu a dostaneme pro minimální transkonduktanci následující vztah:
> | beta:=100; |
> | reseni2:=solve(subs({Rc=5000,Rp=beta/gm},gm_min)=gm,gm): |
> | gm_min2:=reseni2[2]; |
Ve skutečnosti má daná rovnice dvě řešení, přičemž obě jsou reálná. Vybrali jsme to, které povede na nižší kolektorový proud. V tom případě je, jak se dále ukáže, vliv rezistoru zanedbatelný, narozdíl od druhého řešení.
Pokud tyto vztahy ( a ) dosadíme do vztahu pro úhlový kmitočet, můžeme pro zadaný kmitočet ( kHz) vypočítat velikost indukčnosti, při volených hodnotách kapacitorů.
> | Lv:=solve(subs({C1=1e-8,C2=1e-6,Rc=5000,Rp=beta/subs({C1=1e-8,C2=1e-6},gm_min2)},om0)=2*Pi*1e5); |
Dosadíme-li zpětně do vztahu pro , dostaneme jeho numerickou hodnotu, resp. hodnotu minimálního kolektorového proudu. Ten, prostřednictvím transkonduktance tranzistoru a při zvolené velikosti kolektorového odporu , udává minimální zesílení, nutné pro rozkmitání soustavy. Dále můžeme určit i odpovídající hodnotu odporu .
> | gm_min2_num:=subs({C1=1e-8,C2=1e-6,L=Lv},gm_min2); |
> | Ic_min:=gm_min2_num/40; |
> | Rp_num:=beta/gm_min2_num; |
Druhé řešení
Pokud bychom vybrali druhé (v posloupnosti reseni2 první) z možných řešení , dostaneme následující výsledky.
> | Lv2:=solve(subs({C1=1e-8,C2=1e-6,Rc=5000,Rp=beta/subs({C1=1e-8,C2=1e-6},reseni2[1])},om0)=2*Pi*1e5); |
> | gm_min2_num2:=subs({C1=1e-8,C2=1e-6,L=Lv2},reseni2[1]); |
> | Ic_min2:=gm_min2_num2/40; |
> | Ic_min2^2*5000; |
> | Rp_num:=beta/gm_min2_num2; |
V tomto případě se jedná sice o reálné řešení, ale vzhledem k výdeldkům prakticky nerealizovatelné. Proud kolektoru v pracovním bodě totiž vyjde téměř 50A! (výkonová ztráta na kolektorovém odporu vyjde 1,2MW!!!). Vstupní diferenciální odpor tranzistoru v tom případě vyjde (velmi teoreticky) 50 m , tudíž jeho vliv rozhodně nelze zanedbat. Na tom je založeno toto řešení - nehledá se , ale právě , což je pravý opak prvního řešení. Hodnota je potom "vedlejší produkt řešení" a na její velikosti nebude příliž záležet.
Nyní můžeme dokázat, že pro první řešení, lze při vhodně zvolených hodnotách ostatních součástek zanedbat vliv rezistoru .
Přibližný výpočet
Při námi zvolených hodnotách (zejména poměru hodnot kapacitotrů ), můžeme výše uvedené vztahy zjednodušit. Pokud zanedbáme vliv druhého členu ve vztahu pro kvadrát kmitočtu , tak se vztah pro tento kmitočet dále zjednodušší (všimněte si ve vztahu výrazu, udávajícíto výslednou kapacitu dvou sériově zapojených kapacitorů).
> | om0_pribl:=sqrt(simplify(limit(om0,Rp=infinity)^2)); |
Numerickým dosazením si můžeme ověřit, že způsobená chyba je skutečně minimální (5e-3 %).
> | evalf(subs({C1=1e-8,C2=1e-6,L=Lv},om0_pribl/2/Pi)); |
> | evalf(subs({C1=1e-8,C2=1e-6,L=Lv,Rc=5000,Rp=beta/gm_min2_num},om0/2/Pi)); |
> | rel_chyba1:=(%%-%)/%%*100; |
Díky vhodně volenému poměru hodnot kapacitotrů , můžeme ve vztahu pro zanedbat všechny členy obsahující odpor . Chyba je opět zanedbatelná.
> | gm_min_pribl:=limit(gm_min,Rp=infinity); |
> | gm_min_pribl_num:=subs({C1=1e-8,C2=1e-6,Rc=5000},gm_min_pribl); |
> | rel_chyba2:=(gm_min_pribl_num-gm_min2_num)/gm_min2_num; |
Podle těchto vztahů lze tedy velmi jednoduše (i "ručně") uskutečnit návrh daného oscilátoru.
Vypočtená minimální hodnota kolektorového proudu vyšla 0,5 mA, tudíž budeme volit např. 0,6 mA. Velikost rezistoru vyjde potom cca 4k , ale jak vyplývá z předchzí úvahy, jsou výsledné vztahy na jeho prakticky nezávislé. To je i důkaz toho, že v odvození lze zanedbat vliv "bázového děliče" (rezistorů a ).
> | Rp_num:=beta/(40*0.6e-3); |
Zpět na začátek začátek sekce.
Ověření funkčnosti (podmínek oscilací)
Nyní opět spojíme ZV a budeme analyzovat vlastnosti takovéhoto obvodu.
Zadání zapojení lineárního náhradního obvodu oscilátoru. Pokud budeme chtít tento obvod analyzovat střídavou (AC) analýzou, pak je nutné obvod budit z nějakého nezávislého pomocného zdroje, přičemž tento zdroj nesmí narušit impedanční poměry v obvodu. To vede na proudový zdroj (v našem případě označen ). Pokud budeme navíc požadovat přechodovou analýzu, je pro rozkmitání nutné buď ponechat v obvodu zapojen tento budící zdroj nebo lépe, zadat nějakou nenulovou počáteční podmínku (např. napětí na kapacitoru jako v našem případě: V). Jinak by vyšly všechny uzlová napětí nulová.
> | osc:= " oscilator Ip 3 0 Gm 2 0 3 0 0.0006*40 Rc 2 0 5e3 C1 2 0 1e-8 L 2 3 0.000256 C2 3 0 1e-6 ic=0.1 Rp 3 0 4e3 .end": |
Střídavá analýza pro malé změny obvodových veličin (AC analýza).
> | napeti_osc:=syrup(osc, ac); |
Syrup/parsedeck: Analyzing SPICE deck " oscilator" (ignoring this line)
Napěťový přenos obvodu má póly v pravé polorovině, tj. KMITÁ.
> | poly:=evalf(solve(denom(subs(napeti_osc,v[3])))); |
Kmitočet odpovídá zvolené hodnotě (chyba je dána vyšší hodnotou , resp. kolektorového porudu ).
> | evalf(Im(poly[3])/2/Pi); |
Nestabilitu lze dokázat i zmíněnou přechodovou analýzou.
> | osc_tran:=syrup(osc, tran); |
Syrup/parsedeck: Analyzing SPICE deck " oscilator" (ignoring this line)
Obecné řešení této soustavy diferenciálních rovnic bude asi chvilku trvat.
> | res_osc:=dsolve(osc_tran): |
Ze vztahu pro výstupní napětí je evidentní, že obvod kmitá a kmitočet (úhlových) oscilací odpovídá imaginární složce pólu "přenosu" obvodu (nelze mluvit o přenosu, protože obvod je nestabilní).
> | u_out:=combine(evalf(subs(Ip=0,subs(res_osc,v[C1](t))))); |
Následuje vykreslení výstupního napětí pro různá měřítka času.
> | plot(u_out,t=0..1e-4); |
> | plot(u_out,t=0.945e-4..1.046e-4); |
Dále lze funkčnost ověřit na konkrétním zapojení se skutečným tranzistorem při správně nastaveném pracovním bodu pomocí programu WINSPICE. Tam už není nutné zadávat ani počáteční podmínky na kondenzátorech, ani nějaký "budící" pulz, protože počáteční podmínky jsou implicitně nulové a v nulovém čase je přivedeno nenulové napájecí napětí. To znamená, že nastane přechodový děj, obvod je vychýlen ze svého počátečního stavu a rozkmitá se (pokud jsou správně nasveny podmínky oscilací).
Zpět na začátek sekce.
Zpět na začátek.