www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

LTspice/SwitcherCAD III za začetnike
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Mar 23, 2008 3:32 pm    Naslov sporočila:  LTspice/SwitcherCAD III za začetnike Odgovori s citatom

Namen tega pisanja je predstavit program popolnim začetnikom, zato "stari mački" ne boste tukaj izvedeli kaj novega. Seveda so komentarji/popravki dobrodošli.

Uvod

Tisti, ki nameravate tekmovati na kakem kvizu, si lahko zapomnite tole kratico: SPICE - "Simulation Program with Integrated Circuit Emphasis". Za vse ostale bo dovolj, da veste, kaj SPICE počne: simulacijo analognih vezij namreč. Za ne-elektronike naj ostane spice še naprej začimba. Smile

Začetki programa SPICE segajo v sredino sedemdesetih let, torej je stvar že spoštljivo stara. Kljub temu je program nepogrešljiv pri razvijanju analognih vezij, saj precej točno lahko izračuna obnašanje vezja v različnih situacijah. Na ta način lahko pred dejansko izdelavo vezja simuliramo na primer disipacijo na izhodnih tranzistorjih usmernika in preprečimo kakšen izpust dima ali opečene prste.

Takoj na začetku bi rad opozoril na eno pomembno malenkost, ki zna preprečit kasnejše razbijanje glave: SPICE ne loči med malimi in velikimi črkami. Tako je vseeno, če napišemo mV ali MV - oboje bo interpretiral kot "mili". Za predpono "mega" napišemo "meg", torej 10meg ali 10MEG.

Obstaja precej vrst različnih verzij SPICE, od profesionalnih z profesionalno ceno (nočete vedet, koliko), do povsem zastonjskih. Ena izmed teh je "LT spice/Switcher CAD III" firme Linear Technology. Program si lahko prenesete iz www.linear.com.

Omenil bi še eno malenkost, ki jo je pametno vklopit takoj na začetku: prepoznavanje zapisa v stilu "4k7" ali "3u3". To storimo v "tools->control panel", tab "SPICE". Spodaj damo kljukico pri "accept 3k4 as 3.4K", potreben bo tudi ponoven zagon programa.

Risanje vezja

Narisali bomo enostaven ojačevalnik. En tranzistor, par uporov in kondenzatorjev, nič kompliciranega. Pri risanju si lahko pomagamo z bližnjicami na tipkovnici:
r - upor
c - kondenzator
l - tuljava
d - dioda
F2 - ostale komponente (tranzistorji, napetostni in tokovni generatorji, itd)
F3 - povezave med komponentami
g - masa (GND)

Na vezju mora obvezno biti masa, to je referenčna točka za vse napetosti v vozliščih.

Na začetku vezja bo generator vhodnega signala (v tem primeru sinusen signal 1mV, frekvence 1kHz), torej pritisnemo F2 in izberemo "voltage":

Z levim klikom položimo simbol na shemo, z desnim klikom nanj pa določimo parametre:

V kolikor potrebujemo generator konstantne napetosti (=napajanje), tule samo vpišemo željeno napetost. Za ostale funkcije pa kliknemo na "advanced":

Izberemo SINE, DC offset je lahko 0, amplituda 1mV ter frekvenca 1k.

Na podoben način namečemo na shemo tudi ostale elemente in dobimo nekaj takega:

Elemente rotiramo z ctrl+r, zrcalimo z ctrl+e. Narišemo še povezave (F3) in dobimo:

Sedaj z desnim klikom določimo vrednosti vseh komponent. Pri tranzistorju kliknemo "pick new transistor" in izberemo iz tabele, na primer 2n2222:

Vozliščem lahko določimo tudi imena (F4):

Tako, shema je končana. Sedaj lahko počnemo kaj bolj pametnega, recimo simulacijo vezja.

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Mar 23, 2008 3:50 pm    Naslov sporočila:   Odgovori s citatom

Simulacija vezja

SPICE pozna cel kup različnih simulacij, za začetek si bomo ogledali dve:
tansient (simulacija po času) - tule bomo lahko pogledali obliko tokov in napetosti v vezju.
AC (simulacija po frekvenci) - pri tej simulaciji vidimo frekvenčni odziv vezja (uporabno predvsem za audio in razne filtre)

Najprej naredimo TRAN (transient) analizo. Iz menija izberemo "simulate->edit simulation cmd" in vpišemo parametre za simulacijo:

Stop time pomeni čas, pri katerem se simulacija konča. V tem primeru je to 5 period.
Naslednji parameter lahko vedno pustimo na 0. Določa sicer čas, od katerega naprej bo program beležil rezultate. Bolj pomemben je naslednji parameter, "maximum timestep". Ta določa časovni interval med dvema točkama na grafu. Bolj podroben graf pomeni več časa za simulacijo vezja. V tem primeru bo program izračunal 500 točk (5m/10u). Poženemo simulacijo, odprlo se bo novo okno (graf). Sedaj na vezju poklikamo vozlišča, kjer bi radi videli obliko napetosti. V tem primeru nas zanima izhodna napetost, torej vozlišče med R4 in C2. Kurzor se bo tule spremenil iz križca v testno konico. Kliknemo z levo tipko in izrisal se bo graf:

Za odčitavanje točnih vrednosti kliknemo z desno na ime grafa, v tem primeru V(out) in izberemo "1st" pri "attached cursor":

Pojavilo se bo novo okno, kjer lahko točno odčitamo vrednosti grafa. Mesto odčitavanja lahko pomikamo levo-desno z levo tipko na miški (kurzor se spremeni v "1").
Vidimo, da je max izhodna napetost 158mV, tolikšno je tudi ojačanje vezja (ker je vhodna napetost 1mV). Če nas zanima tok v bazo tranzistorja, se z kurzorjem zapeljemo tja in ta bo spremenil obliko v tokovne klešče. Merimo lahko tok v bazo in tok v kolektor. Kliknemo Ib in v oknu se pojavi nova krivulja. Za odčitavanje disipacije (moči) na komponentah pritisnemo tipko "alt", kurzor se bo spremenil v termometer. Za prikaz moči na bremenu kliknemo na R4. Sedaj imamo tri krivulje in tudi tri skale na levi/desni strani grafa (moč, napetost, tok). Za izračun povprečne moči na R4 pritisnemo ctrl in kliknemo na V(out)*I(R4). Odpre se novo okno, kjer vidimo povprečno moč malce čez 1uW.

Sedaj bomo pogledali še AC analizo. Najprej bo treba določiti vir vhodnega signala, v našem primeru je to V1. Desni klik na V1, na desni strani v polje "AC amplitude" vpišemo 1. Nato iz menija spet izberemo "simulate->edit simulation cmd" in določimo parametre za AC analizo (drug tab):

Type damo dekado (ta je še najlažja za predstavljat). Number of points je podobna stvar, kot pri TRAN analizi: več točk pomeni daljšo in bolj podrobno simulacijo. Start in stop frequency upam, da ne rabim razlagat. Poženemo simulacijo in dobimo en kup novih krivulj. Najboljše bo, da yaenkrat izbrišemo tok in moč (desni klik na ime, "delete this trace"). Sedaj nam ostane samo izhodna napetost:

Polna krivulja predstavlja ojačanje v decibelih, črtkana fazni potek v stopinjah. Tule se stvar malce zakomplicira za tiste, ki se še niste učili logaritmov pri matematiki.
Za določitev frekvenčnega obsega vključimo oba kurzorja in poiščemo točko, kjer ojačanje pade za 3dB:

Ojačanje pri 1kHz je 43,61dB ali 151x. To je malce manj, kot 158x pri TRAN analizi. AC analiza namreč poenostavi par stvari, zato ni tako točna, kot TRAN.

Toliko za začetek

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
markc
Član
Član



Pridružen-a: Čet 21 Feb 2008 18:02
Prispevkov: 77
Aktiv.: 0.39
Kraj: Dobropolje

PrispevekObjavljeno: Tor Mar 25, 2008 8:05 pm    Naslov sporočila:   Odgovori s citatom

Super tema...ker se ravno okoli LT-ja matram.

Zanima me recimo če izberem triodo....nimam na izbero tabelo tako kot napr pri tranzistorjih Sad

Kako to vsposobim da bo simulacija zalaufala?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Sre Mar 26, 2008 12:40 am    Naslov sporočila:   Odgovori s citatom

SPICE ne pozna triode. V knižnici je narisan samo simbol, v opisu pa piše "This symbol is for use with a subcircuit macromodel that you supply".
Torej je treba najprej naredit model triode, in tega simulirat kot "subcircuit".

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Mar 30, 2008 3:52 pm    Naslov sporočila:   Odgovori s citatom

Podvezja (subcircuit) in modeli

Knjižnica LTSpice vsebuje kar nekaj elementov, vendar praktično nobenih pri nas "popularnih". To sicer ni nek velik problem, ker lahko nove modele enostavno dodamo v vezje. To lahko naredimo na več načinov. Za hitra testiranja lahko model kar prilepimo na shemo v obliki SPICE direktive (gumb ".op" na orodni vrstici). Bolj elegantno je, da model dodamo v ustrezno datoteko. Na ta način se bo element pojavil na spisku, ko desno kliknemo nanj v vezju. Ogledali si bomo oba načina.

Najprej seveda potrebujemo sam model, tega ponavadi google najde brez problemov. Precej modelov se najde tudi na straneh proizvajalcev, recimo OnSemi (Motorola), NXP (Philips) in Fairchild, če jih omenim nekaj. Za primer bomo poiskali BC817-40 (SMD, SOT23 ohišje) - vpišemo "bc817-40 spice model" v google in med prvimi linki je že stran na nxp.com
Sam model zgleda takole:
Koda:
*
.MODEL QBC817-40 NPN(
+    IS = 6.286E-14
+    NF = 0.9917
+    ISE = 4.53E-15
+    NE = 1.774
+    BF = 416.3
+    IKF = 0.4913
+    VAF = 98.08
+    NR = 0.9895
+    ISC = 1.877E-13
+    NC = 1.3
+    BR = 24.49
+    IKR = 0.203
+    VAR = 25
+    RB = 1
+    IRB = 1000
+    RBM = 1
+    RE = 0.2256
+    RC = 0.143
+    XTB = 0
+    EG = 1.11
+    XTI = 3
+    CJE = 3.568E-11
+    VJE = 0.726
+    MJE = 0.3721
+    TF = 4.826E-10
+    XTF = 120
+    VTF = 3.654
+    ITF = 5.104
+    PTF = 0
+    CJC = 1.296E-11
+    VJC = 0.3241
+    MJC = 0.3742
+    XCJC = 0.455
+    TR = 7E-11
+    CJS = 0
+    VJS = 0.75
+    MJS = 0.333
+    FC = 0.8662)
*

Vidimo, da gre za navaden tekst, ki predstavlja en kup parametrov. Stvar lahko malce preuredimo, da ne bo tako raztegnjena (kozmetični popravki, tole ni nujno počet):
Koda:
*
.MODEL BC817-40 NPN
+ IS = 6.286E-14 NF = 0.9917 ISE = 4.53E-15 NE = 1.774 BF = 416.3 IKF = 0.4913
+ VAF = 98.08 NR = 0.9895 ISC = 1.877E-13 NC = 1.3 BR = 24.49 IKR = 0.203
+ VAR = 25 RB = 1 IRB = 1000 RBM = 1 RE = 0.2256 RC = 0.143 XTB = 0 EG = 1.11
+ XTI = 3 CJE = 3.568E-11 VJE = 0.726 MJE = 0.3721 TF = 4.826E-10 XTF = 120
+ VTF = 3.654 ITF = 5.104 PTF = 0 CJC = 1.296E-11 VJC = 0.3241 MJC = 0.3742
+ XCJC = 0.455 TR = 7E-11 CJS = 0 VJS = 0.75 MJS = 0.333 FC = 0.8662
*

"*" pomeni komentar, SPICE ignorira to vrstico.
"+" pomeni nadaljevanje prejšnje vrstice.
Oklepaje lahko izpustimo, prav tako lahko izbrišemo Q v imenu modela. V bistvu lahko izbrišemo tudi tisti dve zvezdici.

Klik na ".op" gumb in kopiramo tale tekst v okno, nato spremenimo model tranzistorja (desni klik na "2N2222"):

Vidimo, da izhodni signal pade na ubogih 7mV. Vzrok je drugačen model in nepravilna nastavitev delovne točke tranzistorja. Vrednost R2 popravimo na 3k5 in dobimo takoj približno 160mV. Kot vidimo, je vrednost R2 zelo kritična (vezje sem risal na pamet, zato je daleč od optimalnega - izračun delovne točke in podobno ni namen tega pisanja).

Drug, bolj eleganten način, je dodajanje modela v datoteko "c:\Program Files\LTC\SwCADIII\lib\cmp\standard.bjt". Uporabimo lahko poljuben urejevalnik besedila, tudi notepad. Kot pri vsakem podobnem opravilu je pametno najprej narediti varnostno kopijo te datoteke. Model lahko dodamo na poljubno mesto, zaporedje izpisa modelov v programu bo enako, kot v tej datoteki.

LTSpice pozna tudi tri nestandardne parametre, ki jih lahko dodamo v model. Tile se izpišejo v tabeli pri izbiri tranzistorja in nimajo nobenega vpliva na računanje:
icrating - stolpec "Ic[mA]" (max tok v kolektor)
vceo - stolpec "Vceo[V]" (max napetost med C in E) in
mfg - stolpec "Manufacturer" (proizvajalec)

Za BC817 torej dodamo vrstico (podatki iz datasheeta):
+ icrating=500m vceo=45 mfg=NXP

Podobno naredimo lahko za komplementaren tip BC807-40. Datoteko shranimo in ponovno zaženemo LTSpice. Pravkar dodan model bi se moral pojaviti na spisku tranzistorjev:

Model v tekst obliki na shemi sedaj lahko izbrišemo.
Postopek za diode in ostale elemente je povsem enak, le datoteka je druga.

Podoben postopek je tudi za elemente, ki jih SPICE direktno ne pozna, na primer operacijski ojačevalnik, darlington tranzistor, triak, elektronke in podobno. Par postov nazaj je markc spraševal po triodi, poglejmo potem to za primer.
Prvi korak je spet iskanje ustreznega modela. Google:"triode spice model" najde spet cel kup strani, ena izmed teh je tale. Na strani najdemo med drugim nekaj modelov triod, tetrod, pentod, transformatorjev, itd. V tem arhivu je datoteka "tube.lib", v njej pa med drugim model triode 12AT7:
Koda:
.SUBCKT 12AT7 1 2 3  ; P G C; NEW MODEL
+ PARAMS: MU=60 EX=1.35 KG1=460 KP=300 KVB=300 RGI=2000
+ CCG=2.3P  CGP=2.2P CCP=1.0P  ; ADD .7PF TO ADJACENT PINS; .5 TO OTHERS.
E1 7 0 VALUE=
+{V(1,3)/KP*LOG(1+EXP(KP*(1/MU+V(2,3)/SQRT(KVB+V(1,3)*V(1,3)))))}
RE1 7 0 1G
G1 1 3 VALUE={(PWR(V(7),EX)+PWRS(V(7),EX))/KG1}
RCP 1 3 1G    ; TO AVOID FLOATING NODES IN MU-FOLLOWER
C1 2 3 {CCG}  ; CATHODE-GRID; WAS 1.6P
C2 2 1 {CGP}  ; GRID-PLATE; WAS 1.5P
C3 1 3 {CCP}  ; CATHODE-PLATE; WAS 0.5P
D3 5 3 DX     ; FOR GRID CURRENT
R1 2 5 {RGI}  ; FOR GRID CURRENT
.MODEL DX D(IS=1N RS=1 CJO=10PF TT=1N)
.ENDS


Kot vidimo, model vsebuje en napetostno odvisen napetostni vir (E1), en napetostno odvisen tokovni vir (G1), diodo, par uporov in kondenzatorjev. Tole vezje lahko spet direktno vključimo v shemo, kot smo prej model tranzistorja.
Simbol za triodo najdemo v direktoriju "misc":

Simbol položimo na shemo, z desnim klikom na "triode" speremenimo model v "12AT7". Dodamo še napetosti za mrežo in anodo (grid, plate), ter dobimo nekaj takega:


Pozorni moramo biti na zaporedje priključkov v modelu in simbolu. V tem primeru se ujemata (P, G, C pri obeh), drugače bi morali popraviti ali model ali simbol.
Zanima nas tok v anodo:


Modeli, ki vsebujejo svoje vire, znajo včasih dat povsem nerealne rezultate - megavolti, kiloamperi in podobne enote niso redke. Sem videl že modele 741, ki brez problemov zmorejo nekaj amperov toka na izhodu. Uporabnost takih modelov je seveda zgolj za zabavo. Nekaj zdrave logike in občutka za enote je treba imet...

Za 741 ima LTSpice že narejen model na nivoju tranzistorjev, nahaja se med primeri (LM741.asc):

To vezje bomo uporabili za izdelavo modela 741. Najprej odstranimo zunanje elemente, ki ne spadajo v model in z F4 uredimo/popravimo imena priključkov (v tem primeru so to kar številke pinov v klasičnem 8-pinskem ohišju):


To shemo shranimo pod drugim imenom, recimo "741.asc". Nato narišemo simbol operacijskega ojačevalnika. V meniju izberemo "hierarchy->create new symbol", odprlo se bo novo okno. Orodja za risanje so v meniju "draw", za naš simbol rabimo samo črte (line). Na simbol dodamo tudi priključke (meni "edit->add pin/port"), imena morajo bit spet enaka, kot na shemi. "Pin label" lahko pustimo na "none(not visible)", da nas ne bodo motile oznake pinov na shemi. Dodamo še oznaki "InstName" ter "Type", to storimo z "edit->attributes->attribute window" ali ctrl-w. Končan simbol zgleda takole:


Z "edit->attributes->edit attributes" ali ctrl-a lahko nastavljamo razne parametre modela, zaenkrat pustimo vse prazno razen polja "description", kjer vpišemo naprimer "tranzistorski model 741". Za "symbol type" izberemo "block".
Polja "prefix", "spicemodel" in ostala morajo za naš primer obvezno ostati prazna. Drugače bo SPICE iskal model 741 v knjižnicah, kjer ga (zaenkrat) ni.
Simbol shranimo pod enakim imenom in na isto mesto, kot shemo, torej "741.asy".
Sedaj bi tale model morali imeti na voljo v oknu "component", spremeniti moramo le "top directory" v zgornjem delu okna, da bo kazal na mesto, kamor smo shranili shemo in simbol.

Dodamo še nekaj uporov, kondenzator in napajanje:


Kot vidimo, vezje ne zaniha takoj, zato mu lahko malce pomagamo z nastavitvijo začetnih pogojev - z ".op" dodamo ukaz ".ic v(int)=5". Ta ukaz pomeni, da bo na začetku simulacije napetost v vozlišču "int" enaka 5V, kar bo povzročilo, da vezje takoj zaniha.
Lahko opazujemo tudi signale znotraj 741. Z desnim klikom na simbol bi morali dobiti tole okno:

"open schematic" prikaže notranjost vezja, kjer lahko kliknemo na željen signal.

Nadaljevanje prihodnjič Wink

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
GregorN
Član
Član



Pridružen-a: Tor 20 Nov 2007 7:48
Prispevkov: 1162
Aktiv.: 5.84
Kraj: Maribor

PrispevekObjavljeno: Ned Mar 30, 2008 5:43 pm    Naslov sporočila:   Odgovori s citatom

Gumby, hvala za tole, vsako nadaljevanje dobrodošlo!
_________________
LP! Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Mar 30, 2008 9:08 pm    Naslov sporočila:   Odgovori s citatom

Usmernik pri 28VDC + 5VAC napajanja Wink

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
markc
Član
Član



Pridružen-a: Čet 21 Feb 2008 18:02
Prispevkov: 77
Aktiv.: 0.39
Kraj: Dobropolje

PrispevekObjavljeno: Ned Mar 30, 2008 10:50 pm    Naslov sporočila:   Odgovori s citatom

Hvala da si prikazal na mojem primeru! Applause


Če se mi kaj zatakne, ali pa če bodo nejasnosti se bom pa na ZS oglasil.

Hvala še enkrat!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Apr 06, 2008 8:24 pm    Naslov sporočila:   Odgovori s citatom

Nekaj malega o SPICE sintaksi
SPICE je načeloma tekstna zadeva, zato lahko vezje opišemo tudi brez grafičnega urejevalnika. Grafični urejevalnik je v bistvu vmesnik, ki iz narisane sheme generira tekstno datoteko, kjer je opisano vezje (netlist). To datoteko potrebuje simulator, ki iz nje izračuna kar pač mora. Rezultat simulacije je spet en kup datotek, iz katerih grafični vmesnik nariše grafe.
Kot preprost primer si poglejmo delilnik napetosti, sestavljen iz dveh uporov in napajalne napetosti:

Koda:
prva vrstica je vedno komentar, SPICE bo tole ignoriral
Vnap 1 0 10V
R1 1 2 1k
R2 2 0 1kohm

Prva črka določa tip elementa: "V" je napetostni vir, "R" upor, "Q" bipolarni tranzistor, itd (v help-u so lepo opisani vsi elementi). Takoj za tem sledi oznaka elementa, to je lahko karkoli. Za oznako elementa sledijo oznake vozlišč. Te oznake so spet lahko poljubne, zahtevano je pa vsaj eno vozlišče z oznako "0" (to je referenca za vse ostale napetosti - masa). Število vozlišč je seveda odvisno od samega elementa - upor ima dve, tranzistor tri, itd.
Sledijo parametri, na primer za upore je to kar upornost v ohmih. Same enote se lahko dodajo na konec številčne vrednosti (brez presledka) zaradi preglednosti, vendar bo SPICE ignoriral vse, kar sledi eksponentu. Tako je popolnoma vseeno, če zapišemo "1k", "1kohm" ali "1krompir", za SPICE bo vse pomenilo "1000".
Vezij sicer ne "rišemo" na ta način, vendar je dobro poznati sintakso. Veliko modelov je podanih na ta način, brez sheme. Veliko modelov je tudi podanih za druge simulatorje, ki imajo drugačen grafični urejevalnik...

Primer izdelave modela: potenciometer
LTSpice ne pozna potenciometra (kot na primer multisim), vendar to ne pomeni, da ga ni mogoče simulirat. Za vajo bomo izdelali model potenciometra, narisali ustrezen simbol, ter ga vključili v knjižnico.
Model je precej preprost, saj lahko potenciometer predstavimo, kot dva zaporedno vezana upora, katerih skupna točka predstavlja drsnik. Seveda mora biti skupna upornost obeh uporov ves čas enaka. Levo na sliki imamo 5k potenciometer nastavljen na 40%, desno na 80%:

Ta način je precej neuporaben, saj ne moremo med simulacijo spreminjati pozicije drsnika. Upore bo treba nadomestit z nečim, kar lahko spreminja vrednost med samo simulacijo. Najbolj očitna izbira je napetostno voden napetostni vir (E) - potrebno je najti le formulo, ki bo simulirala obnašanje potenciometra.
Padec napetosti na uporu je enak produktu upornosti in toka skozi upor. Za merjenje toka se načeloma uporablja napetostni vir z napetostjo 0 (ne vpliva na delovanje vezja), vendar pri LTSpice tega ni potrebno dodajat, ker se lahko tok direktno meri praktično na vseh elementih.
Za krmilno napetost je najenostavneje uporabit območje 0-1V, kar ustreza nastavitvi potenciometra na 0-100%.
Upornost R2 potem lahko zapišemo kot Ukrm*5000.
Upornost R1 bo pa (1-Ukrm)*5000.
Padec na uporu R1 je enak (1-Ukrm)*5000*I(R1), na R2 pa Ukrm*5000*I(R2). Ti dve formuli bomo uporabili za napetost obeh krmiljenih virov.
Za test delovanja dodamo še napajalno napetost:

Upor je potreben, ker SPICE nima rad vzporedno vezanih napetostnih virov (v tem primeru so sicer trije vezani v zanko, ampak problem je enak).
Prav tako je potrebno definirat en potencial na krmilni napetosti, ker SPICE nima rad plavajočih vozlišč.
CCW, CW in W so kontakti potenciometra, oznake so okrajšave iz angleških nazivov (so precej standardne, nočem izumljat tople vode):
ccw=counter-clockwise (kontakt na začetku, torej ko os obračamo v nasprotni smeri urinega kazalca, proti 0%),
cw=clockwise (kontakt na koncu, ko os obračamo proti 100%),
w=wiper (drsnik)
Za simulacijo premikanja pozicije drsnika lahko uporabimo poljubno funkcijo, mogoče bo še najbolj priročna PWL (piece-wise linear). Pri tej funkciji enostavno določimo točke, med katerimi se napetost linearno spreminja s časom.

Pri tem modelu se pojavi problem, ko vežemo drsnik direktno na en konec potenciometra. Taka vezava je nekaj povsem običajnega v realnem svetu, tule pa bomo imeli lep kratek stik.
Rešitev tega problema je precej enostavna, pač dodamo dva majhna upora v serijo obeh napetostnih virov. Upornost teh mora biti dovolj majhna, da ne vpliva na skupno upornost potenciometra. Recimo 2 ohm pri 5k se ne bo kaj dosti poznalo:


LTSpice-help je napisal/a:
Note: It is better to use a G source shunted with a resistance to approximate an E source than to use an E source. A voltage controlled current source shunted with a resistance will compute faster and cause fewer convergence problems than a voltage controlled voltage source. Also, the resultant nonzero output impedance is more representative of a practical circuit.

Povzetek za tiste, ki ne obvladate angleščine: namesto napetostnega vira je boljše uporabit tokovni vir, ki ima vzporedno vezan upor (shunt). Pri simulaciji se tak vir hitreje izračuna in tudi povzroča manj problemov pri samih izračunih.
Bomo upoštevali tale nasvet in malce predelali vezje. Dodani upori morajo spet imeti precej manjšo upornost od samega potenciometra. Sedaj bomo potrebovali tudi dva vira napetosti 0V za meritev toka.
Tok, ki ga mora vir generirat, je enak napetosti iz prejšnjega primera deljeno z upornostjo shunt-a:

Tole vezje bi že lahko uporabili v knjižnici, ima samo še eno pomanjkljivost: upornosti so fiksne, torej bi za vsako vrednost potrebovali svoj model. Tudi za ta problem obstaja zdravilo, in sicer v obliki parametrov:

Tako, tole bo kar končno vezje našega modela. Sedaj potrebujemo samo še simbol. Za razliko od prejšnjega primera (operacijski ojačevalnik), bomo tale model opisali tekstno in ga dali v knjižnico.
Pri simbolu dodamo še dva kontakta za krmilno napetost:

Kontakte oštevilčimo takole: 1-ccw 2-w 3-cw 4-k1 5-k2. Enako zaporedje priključkov uporabimo tudi v modelu:
Koda:
* test knjiznica

* potenciometer
* 1=ccw 3=w 5=cw 6=+ 7=-
.subckt POT 1 3 5 6 7
V1 5 4 0
G1 3 4 value={(1-V(6,7))*{Rpot}*I(V1)/{Rsh}}
R1 4 3 {Rsh}
R2 3 2 {Rsh}
G2 2 3 value={V(6,7)*{Rpot}*I(V2)/{Rsh}}
V2 2 1 0
.ends

Tole shranimo kot test.lib.
Sedaj samo še nastavimo parametre v simbolu (ctrl+a):

Privzeta nastavitev bo 1k za skupno upornost in 1 ohm za shunt. Te vrednosti seveda lahko spremenimo za vsak potenciometer posebej.

Še kratek test, če se pravilno upošteva upornost potenciometra:


Krmilna napetost izven območja 0-1V bo povzročila nenormalno obnašanje, na primer ojačanje in obračanje faze:

Malce previdnosti torej ne bo škodilo, malce kreativnosti tudi ne Very Happy

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Apr 27, 2008 7:10 pm    Naslov sporočila:   Odgovori s citatom

Večkratne analize z različnimi parametri in Monte-Carlo analiza
V realnem svetu se elementi z isto oznako precej razlikujejo med seboj. Recimo upornost 1k 5% upora naj bi bila v območju 950-1050 ohm. Pri kondenzatorjih (sploh elektrolitih) so ta odstopanja še precej večja (20% in več so povsem običajne cifre). Podobno je tudi pri tranzistorjih, predvsem ojačanje tranzistorja (beta, hfe) zna imet zelo velik razpon. Na primer BC547 ima glede na datasheet vrednosti od 125 do 900, zato so že vnaprej razdeljeni v tri skupine: A(125-260), B(240-500) in C(450-900). Kljub temu so odstopanja v posameznih skupinah še vedno dobrih 50% srednje vrednosti.
Vsa ta odstopanja seveda vplivajo na delovanje vezja, včasih tudi v taki meri, da vezje neha delovat.

Za take analize pozna SPICE ukaz ".step". Nastavljamo lahko praktično vsak parameter v vezju, tudi znotraj modelov. Nekaj primerov uporabe tega ukaza:
.step V2 1 10 2
napetost V2 se spreminja v območju 1-10V v korakih po 2V - za vsako vrednost se zažene druga simulacija, torej skupaj 6 (1, 3, 5, 7, 9 in 10V)
.step npn 2n2222 bf list 100 300 800
parameter "bf" v modelu npn tranzistorja 2n2222 bo imel tri vrednosti, 100, 300 in 800
.step param x 1 20 1
globalni parameter x bo zavzel vrednosti od 1 do 20 (skupaj 20 simulacij)
.step temp -30 30 30
tri simulacije pri različni temperaturi, -30, 0 in 30ºC

Navedemo lahko več step ukazov, skupno število simulacij bo produkt števila zank v posameznem step ukazu - v zgornjem primeru bi imeli 1080 simulacij, če bi navedli vse štiri.
Poglejmo en preprost primer uporabe step ukaza:


Dobimo tri grafe, po enega za vsako vrednost napetosti V2:


Dodamo še dva step ukaza za hfe in temperaturo:



Sedaj imamo že 27 grafov, zato je slika zelo nepregledna. Vidimo pa, da je vezje precej občutljivo.
Izberemo lako tudi, katere grafe bi radi pogledali (desni klik na okno grafa in izberemo "select steps"):



Drug način spreminjanja parametrov je uporaba naključnih vrednosti. Določimo nazivno vrednost in toleranco, v vsaki simulaciji bo vrednost parametra drugačna. Ta princip se imenuje "monte-carlo", pojma nimam zakaj. LTSpice ima nekoliko drugačno sintakso za tole analizo od ostalih simulatorjev, ampak princip je enak. Poglejmo si kar primer iz začetka, tokrat z uporabo MC:




Funkcija mc(v,t) vsakič vrne naključno število v območju od v*(1-t) do v*(1+t), razporeditev je enakomerna. Za določitev števila simulacij uporabimo step ukaz, z katerim spreminjamo vrednost nekega parametra. V tem primeru je to parameter x, ki sicer ni nikjer v uporabi.
Funkcijo mc() lahko uporabimo tudi v modelu tranzistorja, vendar je tole bolj elegantno počet z step ukazom, kot v prejšnjem primeru:



Kot vidimo, je tole vezje zanič, saj je odziv precej podoben loteriji. Risano je "od oka", temu primerno se tudi obnaša.

Možnosti za igranje z vrednostmi je precej. Za iskanje "krivca" lahko na primer nekatere vrednosti fiksiramo, ostale pa spreminjamo. Lahko fiksiramo vse razen ene in takoj vidimo odziv vezja na ta element. Dokler graf takole "zacveti" je vsekakor nekaj narobe z vezjem...

Kaos
Tole vezje je precej zabavno:


Desna stran vezja predstavlja negativno upornost, leva stran pa nek LCR člen z resonančno frekvenco okoli 5kHz. Vezje zaradi negativne upornosti lepo zaniha:


Pri večji vrednosti C1 (5n) se nihanje zaduši:


Pri "pravi" vrednosti (3.3n) se pa vezje začne obnašat precej čudno:


Če pogledamo X-Y graf napetosti v točkah a in b, dobimo še bolj čudno sliko:


X-Y graf dobimo tako, da kliknemo na vrednosti na X-osi (kurzor se spremeni v ravnilo). V oknu vnesemo "V(a)" namesto "time".
Osciliranje tega vezja lahko tudi poslušamo, za to uporabimo ukaz ".wave":
.wave kaos.wav 16 44.1k v(b)

Delovanje vezja ni enostavno razložiti, sploh brez hude matematike (sistem treh nelinearnih diferencialnih enačb). Tisti, ki vas zanima, lahko najdete več informacij tule in tule (ali kar google)

Vezje je zelo zelo občutljivo na vrednosti C1 in R8 (tudi ostalih), zato je pri izdelavi potrebna precejšnja mera potrpežljivosti. En kup koristnih nasvetov za izdelavo najdete tule

Kje najti modele?
Precej proizvajalcev ponuja na svojih straneh modele za svoje izdelke, tule je nekaj povezav:
Linear Technology
ON Semiconductor (Motorola)
International Rectifier
NXP Semiconductors (Philips)
Fairchild Semiconductor
ST Microelectronics

Precej modelov najde tudi google, "<oznaka elementa> spice model" ponavadi vrne uporaben link.
Z modeli osnovnih elementov načeloma ni težav, zna se pa zakomplicirat pri bolj kompleksnih vezjih. Ti modeli so večinoma napisani za PSpice ali kak drug simulator, zato v LTSpice ne delujejo pravilno ali ne delujejo sploh.


Tako, toliko sem imel v mislih za predstavitev programa LTSpice (in simulatorja SPICE naslpoh). Če koga še kaj zanima, naj kar pogumno vpraša Wink

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Apr 27, 2008 7:17 pm    Naslov sporočila:   Odgovori s citatom

Rezultat .wave ukaza iz prejšnjega primera (zmanjšajte glasnost za vsak slučaj)


kaos.wav.txt
 Opis:
spremeni končnico v .wav

Download
 Ime datoteke:  kaos.wav.txt
 Velikost datoteke:  172.31 KB
 Downloadano:  14 krat


_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 25.14

PrispevekObjavljeno: Ned Apr 27, 2008 11:04 pm    Naslov sporočila:   Odgovori s citatom

gumby je napisal/a:
Drug način spreminjanja parametrov je uporaba naključnih vrednosti. Določimo nazivno vrednost in toleranco, v vsaki simulaciji bo vrednost parametra drugačna. Ta princip se imenuje "monte-carlo", pojma nimam zakaj.


Monte Carlo = Igralniska meka.

Metoda Monte Carlo je ravno to - simualcija s (psevdo)nakljucnimi stevili, tako kot metanje kocke ali vrtenje rulete ali kaj tretjega dovolj dolgo casa, da dobis precej ralno porazdelitev vseh moznih izidov.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Tor Maj 20, 2008 10:35 pm    Naslov sporočila:   Odgovori s citatom

A je čas simulacije ltspica omejen na 100.000 sekund, meni ga ne uspe podaljšati?
_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Sre Maj 21, 2008 5:52 pm    Naslov sporočila:   Odgovori s citatom

Pri meni gre brez problema v terasekunde...
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
trot
Član
Član



Pridružen-a: Čet 18 Jan 2007 20:25
Prispevkov: 1270
Aktiv.: 6.07
Kraj: glej fogl

PrispevekObjavljeno: Sre Jun 18, 2008 12:48 pm    Naslov sporočila:   Odgovori s citatom

Katero verzijo pa imaš, jaz imam LTspice/SwitcherCAD III, version 2.24i, pa na grafu kliknem spodaj na merilo. Če vpišem čas manjši od 100Ks, mi izriše, za več kot 100Ks, pa ne, enostavno izriše samo do 100Ks. Kje si ti vnesel daljši čas?

Pa še tole me zanima:
Mogoče kdo ve, kako podatke iz grafa izpišem v tekstovno obliko (npr. excel fajl)?

Mogoče kdo ve, kako v simulaciji nastavim neke začetne pogoje, npr. napetost na nekem kondenzatorju?

_________________
lp, Klemen
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group