MATLAB® ( LTSpice s příklady použití a srovnání výsledků s matlabovskými výpočty)
Řešení obvodů pomocí LTspice a srovnání s výpočtem v Matlabu Co je program LTspice ? Je to freeware-program dostupný na adrese: http://ltspice.linear.com/software/LTspiceIV.exe Jedná se o program firmy Linear Technology pro simulaci elektrických obvodů (Simulated Program with Integrated Circuit Emphasis) . LTspice sestává z: Editor schémat Procesor LTspice Modul pro zpraco- vání průběhů
LTspice obsahuje 6 druhů analýz elektrických obvodů: (.op) – analýza pracovního bodu (.dc) – stejnosměrná analýza (.ac) – střídavá analýza (.noise) – šumová analýza (.tran) – analýza přechodových jevů .op … slouží k výpočtustejnosměrného ustáleného stavu obvodu .tran … simulace přechodných dějů od času t=0 do času tstop
Základní ovládání programu: Vytvoření nového / použití existujícího obvodu z menu File vyberte položku New Schematic (u nového) / z menu File vyberte Open a nabrowsujte patřičný soubor s příponou .asc Výběr a rozmístění součástek: Z menu edit vyberte položku Components (F2) ( ) a v okně Select Component Symbol najděte vhodný prvek. (Nejužívanější symboly najdete také přímo na liště) Pro otočení součástky o 90° použite CTRL+R , pro zrcadlení součástky použijte CTRL+E , nebo symboly na liště. Stisknutím pravého tlačítka myši ukončíte umisťování součástky. Propojení součástek Z menu Edit vyberte položku Draw Wire (nebo tušku na liště), klikněte na první přípojný bod jedné součástky a posuňte kurzor na přípojný bod druhé součástky a klikněte. Pokud chcete čáru zalomit o 90°, musíte v místě zalomení opět kliknout. Chcete-li drátu přiřadit název, klikněte na vodivý spoj a zvolte Label
Uzemnění obvodu ( nebo G) V každém schématu musí být alespoň jeden bod uzeměn. LTspice ho bere jako referenční bod vůči kterému počítá všechna napětí v nezávislých uzlech. Editace součástek V každém Po kliknutí pravým tlačítkem na vybranou součástku se vždy objeví dialogový box, kde je možné nastavit parametry a vlastnosti součástky. POZOR ! Kliknout se musí na tělo součástky, nikoliv na její popis ! Chceme-li naopak změnit název součástky, musíme kliknout na tento název. Mazání součástek Chceme-li smazat součástku,vybereme z menu Edit volbu Delete , nebo stiskneme klávesu Delete. Poté se objeví symbol nůžek. A po najetí na patřičnou součástku a kliknutí levým tlačítkem myši se tato součástka smaže. Lze mazat i drátové propojení.
Orientace součástek ve schematu Každá součástka má očíslované svoje vývody. Pořadí vývodů definuje orientaci proudu při průchodu součástkou. Proud teče od vývodu s nižším číslem vývodu směrem k vývodu s vyšším číslem. Orientaci součástky lze ověřit dokud není zapojena do obvodu. Umístíme kurzor nad nezapojený přívod součástky a dole ve stavovém řádku se objeví číslo uzlu. Potřebné přetočení součástky realizujeme vybráním součásky (rukou ) a pak jejím dvojím přetočením o 90° (Pomocí (CTRL-R) Číslování součástek Při vložení více než 1 stejné součástky se součástky v názvu číslují (tj. např. první odpor bude R1,druhý bude R2 atd.) Tyto automatické názvy součástek lze samozřejmě dodatečně změnit klikem na název součástky. Standardní předpony LTspice pro psaní číselných konstant Předpony jsou uvedeny v následující tabulce: T (tera) … 1012 K (kilo) … 103 n (nano) … 10-9 G (giga) … 109 M (mili) … 10-3 p (piko) … 10-12 Meg (mega) 106 u (mikro). 10-6 f (femto)… 10-15 ( viz. Předpony: konvertor )
Řešení jednoduchého ss obvodu s LTspice: R1=10 Ω Podle 2. Kirchhofova zákona: R1 . i + R2 . i = V1 10 . i + 10 . i = 10 i = 10 / ( 10 +10) = 0,5 A UR1= R1 . i = 10 . 0,5 = 5 V UR2= R2 . i = 10 . 0,5 = 5 V R2=10 Ω V1= 10 V
Řešení ss obvodů: a)Matlabem Kirchhoffovými zákony Zadání: U0=50V R1=15.3Ω R2=9.9Ω R3=16.5Ω R4=2.6Ω R5=7.5Ω R6=12.1Ω R7=1.5Ω R8=9.0Ω R9=11.6Ω R10=9.2Ω R11=14.8Ω R12=12.1Ω Výsledky: I1 = -0.55439 I2 = 1.3467 I3=-1.9011 I4 = 3.045 I5 = -0.79823 I6 = -0.24384 I7 = 0.90008 I8 = -1.1439
S2: S3: S4: kde Kirchhoffův zákon: A: B: C: D: S1: Program v Matlabu U0=50; R1=15.3; R2=9.9; R3=16.5; R4=2.6; R5=7.5; R6=12.1; R7=1.5; R8=9.0; R9=11.6; R10=9.2; R11=14.8; R12=12.1; R67=(R6*R7)/(R6+R7); A=[1,-1,-1,0,0,0,0,0; 0,0,1,1,0,0,0,1; -1,0,0,0,1,-1,0,0; 0,0,0,0,0,1,-1,-1; (R1+R2),R3,0,0,(R67+R8),0,0,0; 0,-R3,R4,-R5,0,0,0,0; 0,0,0,0,-(R67+R8),-(R9+R10),-R11,0; 0,0,0,R5,0,0,R11,-R12]; b=[0;0;0;0;0;-U0;0;U0]; proudy=A\b % spocteni soustavy linearnich rovnic
b) Řešení ss obvodů pomocí LTspice: Simulační karta (ss obvod): I1 = IR2 = -0.554389 I2 = IR3 = -1.34666 I3 = IR4 = 1.90105 I4 = IR5 = 3.04498 I5 = IR8 = -0.798229 I6 = IR10 =-0.24384 I7 = IR11 = 0.900083 I8 = IR12 = -1.14392
Řešení přechodových jevů: Přechodový jev u RL-obvodu: a) Matlabem pomocí diferenc.rovnic Sériový RL - obvod Zadání: R = 200 Ω L = 0,5 H U0 = 100 V Spočtěte proud tekoucí výše udaným obvodem během přechodového děje při sepnutí spínače v čase t=0.
Postup výpočtu: Podle 2. Kirchhoffova zákona: [ Součet úbytků napětí na spotřebičích se v uzavřené smyčce rovna součtu napětí zdrojů ] - napíšeme rovnici takto: uR + uL = U0 [úbytek napětí na odporu + úbytek napětí na cívce = napětí zdroje ] Protože proud tekoucí cívkou je časově závislý, vyjádříme ho časovou derivací di/dt a oznacime jako i' Rovnice tedy nabude tvaru: R . i + L . i' = UO Z výše uvedené rovnice vyjádříme hodnotu derivace proudu tekoucího obvodem i' = ( UO – R . i ) / L ( což je obyčejná diferenciální rovnice 1. řádu (vyskytuje se v ní derivace nezávisle proměnné prvního řádu ) )
function didt = RLobvod(t,i) V MATLABu označíme: proud …………………………. jako i časovou derivaci proudu i' … jako didt , Takže výsledná diferencialní rovnice pro matlabovskou funkci má pak tvar: didt = (Uo-R*i)/L Matlabovská funkce – m-file RLobvod.m je tedy ve tvaru: function didt = RLobvod(t,i) R = 200; % R=200 Ohm L = 0.5; % L=0,5 H Uo = 100; % Uo=100V didt = ( Uo – R * i ) / L; % resena diferencialni rovnice Diferenciální rovnici řešíme řešičem-diferenciálních rovnic ode45: ode45( @nazev_funkce , cas_interval , pocatecni_podmínka) [ t , i ] = ode45( @RLobvod , [ 0 , 0.1 ] , 0 ) Časový interval je: 0 až 1 sec. Počáteční podmínka je: i(0) = 0
Script pro vyvolání řešiče diferenciální rovníce je: function RL_reseni [ t , i ] = ode45( @RLobvod , [ 0 , 0.1 ] , 0 ) % výsledkem je čas.vektor t a i plot(t,i) % vykresleni dvourozmerneho grafu grid on xlabel('t') % popis osy x ylabel('i [A]') % popis osy y Výsledný graf přechodového jevu na RL obvodu je:
b) Programem LTspice Tabulka zdroje (Advanced): Schéma v programu LTspice: Tabulka simulace:
Časování zdroje: Vinitial …. Počáteční hodnota pulzu Von …. Koncová hodnota pulzu Tdelay…. Zpoždění náběžné hrany pulzu Trise …. Doba trvání náběžné hrany Tfall …. Doba trvnání doběžné hrany Ton …. Doba trvání pulzu Tperiod… Interval mezi dvěma pulzy Ncykles… Počet cyklů
Tabulka zdroje:
Volíme přechodovou analýzu – záložku transient – funkci (.trans) Tabulka simulace: Volíme přechodovou analýzu – záložku transient – funkci (.trans)
Výsledný proud tekoucí obvodem
Přechodový jev u RLC-obvodu: a) Matlabem pomocí diferenc.rovnic Sériový RLC - obvod Zadání: R = 200 Ω L = 0,5 H C = 5 μF U0 = 100 V Spočtěte proud tekoucí výše udaným obvodem během přechodového děje při sepnutí spínače v čase t=0.
Postup výpočtu: Podle 2. Kirchhoffova zákona: [ Součet úbytků napětí na spotřebičích se v uzavřené smyčce rovna součtu napětí zdrojů ] - napíšeme rovnici takto: uR + uL + uC = U0 [ úbytek napětí na odporu + úbytek napětí na cívce + + úbytek napětí na kondenzátoru = napětí zdroje ] Protože proud tekoucí cívkou je časově závislý, vyjádříme ho časovou deriv. úbytek napětí na cívce di/dt a oznacime jako i ' Proud tekoucí kondenzátorem vyjádříme jako integrál + uC(0) Rovnici tedy musíme ještě zderivovat a poté nabude tvaru: R . i ' + L . i ' ' + ( 1 / C ) . i = 0 Z výše uvedené rovnice vyjádříme hodnotu druhé derivace proudu tekoucího obvodem : i1 ' ' = (- 1/C . i1 – R . i1 ' ) / L ( což je obyčejná diferenciální rovnice 2. řádu (vyskytuje se v ní 2. derivace nezávisle proměnné ) )
Pro řešitelnost v Matlabu musíme diferenciální rovnici 2 Pro řešitelnost v Matlabu musíme diferenciální rovnici 2.řádu převést na soustavu 2 diferenciálních rovnic 1.řádu. Toho dosáhneme zavedením substituce (dosazením) za i1 ' = i2 . Dosazením máme tedy soustavu dvou diferenciálních rovnic prvního řádu se dvěma proměnnými i1 a i2 : i1 ' = i2 i2 ' = (- 1/C . i1 – R . i2 ) / L Vyjádřeno v Matlabu bude vypadat podprogram ze soustavou diferenciálních rovnic takto: function didt=RLCobv(t,proud) dproud=zeros(2,1); % dvouprvkovy sloupcovy vektor s nulovymi prvky didt(1)=i(2); % 1.prvek vektoru:1.dif.rovnice 1.radu didt(2)=( -i(1) / C – R * i(2) ) / L; % 2.prvek vektoru:2.dif.rovnice 1.radu Výše uvedenou funkci lze napsat i jako sloupcový vektor se dvěma prvky: [ i(1) ; i(2) ] didt=[ i(2) ; ( -i(1) / C - R*i(2) ) / L ];
function RLC_res % Reseni serioveho obvodu R,L,C R=200; % R=200 Ohm L=0.5; % L=0,5 H C=5e-6; % C=5 mikroF disp([ '-1/C= ' num2str(-1/C,'%8.1e') ' -R/L=' num2str(-R/L,'%8.1e\n')]) pause [t,i]=ode45(@RLCobv,[0,0.1],[0,100/0.5]); % ode45(@nazev, casovy interval, pocatecni podminky) % resi soustavu diferencialnich rovnic danou v m-file RLC_dif_rov.m % v cas.intervalu od 0 do 0.1 % s poc.podminkami i(0)=0 , % i'(0) = Uo/L = 100/0.5;
% vysledkem je [t,i] , t je sloupcovy vektor % tj. pro kazdy cas z casoveho intërvalu je vypocten proud a jeho derivace % proud je matice se 2 sloupci, % v 1. sloupci je hledany proud, v 2.sloupci jeho derivace % Vykreslení grafu: subplot(2,1,1) % rozdeleni graf.okna na 2 casti (nasledujici graf v 1. casti) plot(t , i( : , 1) ) % vykresleni proudu (1.sloupec matice i ) xlabel('t [s]') % popis osy x ylabel('i [A]') % popis osy y legend('proud i [A]') % popis krivky (legenda) subplot(2,1,2) % rozdeleni graf.okna na 2 casti (nasledujici graf v 2. casti) plot( t , i( : , 2) ,'g') % vykresleni derivace proudu, g - zvolena zelena barva % (2.sloupec matice i ) ylabel(' i´ ') % popis osy y legend(' derivace proudu i ´ ') % popis krivky (legenda)
Výsledný proud tekoucí obvodem a jeho derivace:
b) Programem LTspice
Tabulka zdroje:
Volíme přechodovou analýzu – záložku transient – funkci (.trans) Tabulka simulace: Volíme přechodovou analýzu – záložku transient – funkci (.trans)
Výsledný proud tekoucí obvodem