Simulácia KiCAD a Spice: Rozdiel medzi revíziami
Zo stránky SensorWiki
(10 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 2: | Riadok 2: | ||
V tomto materiáli sa stručne oboznámite so základnými príkazmi simulačného programu SPICE (<span>'''S'''</span>imulation <span>'''P'''</span>rogram with <span>'''I'''</span>ntegrated <span>'''C'''</span>ircuits <span>'''E'''</span>mphasis). Tento program je jedným z najrozšírenejších na svete a má za sebou pomerne dlhú históriu. Vznikol r.1975 (!) na University of California v Berkeley. Umožňuje simulovať obvody v ustálenom stave (metódou uzlových napätí), prechodovú analýzu, frekvenčnú analýzu, citlivostnú analýzu (aj teplotnú) a mnoho ďalších. Samotný program je ovládaný príkazovo, užívateľské rozhranie je veľmi strohé, vidno, že pôvod programu je v UNIXe. Dnes však existuje veľa nastavbových programov - posledným z nich je kompletný vývojový balík bežiaci pod W95 obsahujúci schematický editor, systém na návrh plošných spojov, na návrh programovateľných (PLD) obvodov a samozrejme aj simuláciu. | V tomto materiáli sa stručne oboznámite so základnými príkazmi simulačného programu SPICE (<span>'''S'''</span>imulation <span>'''P'''</span>rogram with <span>'''I'''</span>ntegrated <span>'''C'''</span>ircuits <span>'''E'''</span>mphasis). Tento program je jedným z najrozšírenejších na svete a má za sebou pomerne dlhú históriu. Vznikol r.1975 (!) na University of California v Berkeley. Umožňuje simulovať obvody v ustálenom stave (metódou uzlových napätí), prechodovú analýzu, frekvenčnú analýzu, citlivostnú analýzu (aj teplotnú) a mnoho ďalších. Samotný program je ovládaný príkazovo, užívateľské rozhranie je veľmi strohé, vidno, že pôvod programu je v UNIXe. Dnes však existuje veľa nastavbových programov - posledným z nich je kompletný vývojový balík bežiaci pod W95 obsahujúci schematický editor, systém na návrh plošných spojov, na návrh programovateľných (PLD) obvodov a samozrejme aj simuláciu. | ||
Budeme používať program LT Spice od výrobcu polovodičov Linear Technology. Program si môžete nainštalovať odtiaľto: http://www.linear.com/designtools/software/ | |||
Program obsahuje aj editor schém, ale my budeme poižívať KiCAD a jeho export do .cir netlistu. | |||
== Výpočet pomerov v ustálenom stave - odporový delič == | == Výpočet pomerov v ustálenom stave - odporový delič == | ||
Riadok 9: | Riadok 12: | ||
[[Súbor:SpiceSim01.png|300px]] | [[Súbor:SpiceSim01.png|300px]] | ||
Vygenerujeme netlist (.cir) pre program Spice a zavoláme simulátor. | Vygenerujeme netlist (.cir) pre program Spice a zavoláme simulátor. Príkaz pre spustenie simulátora by mal vyzerať takto: | ||
C:\PROGRA~1\LTC\LTspiceXVII\XVIIx64.exe -- verzia pre 64-bit Windows | |||
C:\PROGRA~1\LTC\LTspiceXVII\XVIIx86.exe -- verzia pre 32-bit Windows | |||
[[Súbor:SpiceSettings.png]] | |||
Vygenerovaný netlist by mal vyzerať podobne ako tento: | Vygenerovaný netlist by mal vyzerať podobne ako tento: | ||
Riadok 30: | Riadok 37: | ||
odporu neudáme ako číslo, ale ako zatiaľ neznámu hodnotu Rz, ktorú potom budeme meniť príkazom pre Spice. | odporu neudáme ako číslo, ale ako zatiaľ neznámu hodnotu Rz, ktorú potom budeme meniť príkazom pre Spice. | ||
[[Súbor:SpiceSim02.png| | [[Súbor:SpiceSim02.png|600px]] | ||
<source lang="lisp"> | <source lang="lisp"> | ||
Riadok 52: | Riadok 59: | ||
[[Súbor:Spice01.png|400px]] | [[Súbor:Spice01.png|400px]] | ||
Na prvom riadku je vždy názov simulovaného obvodu: | Na prvom riadku je vždy názov simulovaného obvodu: | ||
< | <source lang="lisp"> | ||
Simulacia linearneho obvodu - Jozko Mrkvicka | Simulacia linearneho obvodu - Jozko Mrkvicka | ||
</ | </source> | ||
Potom nasledujú jednotlivé prvky, začneme odpormi: | Potom nasledujú jednotlivé prvky, začneme odpormi: | ||
<source lang="lisp"> | <source lang="lisp"> | ||
R1 1 2 1k ;za bodkociarkou moze byt komentar | R1 1 2 1k ;za bodkociarkou moze byt komentar | ||
Riadok 62: | Riadok 69: | ||
</source> | </source> | ||
Prvé je označenie prvku, potom prvý uzol a druhý uzol a napokon hodnota. Označenie i uzly môžu byť ľubovolné, ale aspoň jeden z uzlov sa musí volať <span>0</span>. Potom vložíme napäťový zdroj:<br> | Prvé je označenie prvku, potom prvý uzol a druhý uzol a napokon hodnota. Označenie i uzly môžu byť ľubovolné, ale aspoň jeden z uzlov sa musí volať <span>0</span>. Potom vložíme napäťový zdroj:<br> | ||
< | <source lang="lisp"> | ||
Vin 1 0 10V ;kladný pól 1, záporný 0, veľkosť 10V | Vin 1 0 10V ;kladný pól 1, záporný 0, veľkosť 10V | ||
</ | </source> | ||
A napokon vložime riadiace príkazy (začínajú bodkou):<br /> | A napokon vložime riadiace príkazy (začínajú bodkou):<br /> | ||
< | <source lang="lisp"> | ||
.OP | .OP | ||
.END | .END | ||
</ | </source> | ||
To znamená, že chceme len vypočítať veľkosti napätí v obvode (.OP - operating point) a skončiť (.END) | To znamená, že chceme len vypočítať veľkosti napätí v obvode (.OP - operating point) a skončiť (.END) | ||
Riadok 84: | Riadok 91: | ||
[[Súbor:SpiceSim03.png]] | |||
Na vstupe bude meniteľný zdroj V1: | |||
<source lang="lisp"> | |||
V1 2 0 ;veľkosť určíme neskôr | |||
</source> | |||
Pretože PSpice používa pri výpočte metódu uzlových napätí, nedostaneme vo výsledku priamo veľkosti prúdov. Program vie vypočítať len veľkosti prúdov cez ideálne napäťové zdroje. Preto si pomôžeme zaradením zdroja napätia 0V: | |||
<source lang="lisp"> | |||
Vd 2 1 0 | |||
</source> | |||
Diódu zadáme podobne ako ostatné prvky, ale pretože je to nelineárny prvok, musíme zadať aj jej správanie a parametre. Tie udáva príslušný model. Niektorí výrobcovia poskytujú konštruktérom modely konkrétnych typov súčiastok, takže program nemusí pracovať len s ideálnymi prvkami. V našom prípade: | |||
<source lang="lisp"> | |||
D1 1 0 KZZ74 | |||
.model KZZ74 D (Is=0.1uA N=1 Rs=12 Bv=9.7 Ibv=5mA) | |||
</source> | |||
Nakreslíme si charakteristiku od -12 po 1V, v krokoch po 0,1V. Musíme teda povedať, že jednosmerný (DC) zdroj V1 sa má meniť v tomto rozsahu: | |||
<source lang="lisp"> | |||
.DC V1 -12 1 0.1 | |||
</source> | |||
Nasledujúce dva príkazy vypíšu hodnoty zo simulácie do tabuľky (<span>.print</span>) a “vykreslia” charakteristiku v pseudografike do súboru <span>priklad2.out</span> (<span>.plot</span>). | |||
<source lang="lisp"> | |||
.print DC I(Vd) | |||
.plot DC I(Vd) | |||
</source> | |||
Posledný príkaz zapíše výsledky v binárnom tvare vhodnom pre grafický postprocesor:<br /> | |||
<source lang="lisp"> | |||
.probe I(Vd) | |||
.end | |||
</source> | |||
Po uložení súboru spustíme simuláciu a po nej grafický postprocesor (ak sa nespustí sám): | |||
probe.exe priklad2 | |||
Príkazom <span><code>Add_trace</code></span> pridáme do (zatiaľ prázdneho) grafu našu charakteristiku: stlačíme a zo zoznamu vyberieme I(Vd). Ak nám nevyhovuje mierka, môžeme ju zmeniť buď <span><code>X_axis</code></span> alebo <span><code>Y_axis</code></span>. Ak vyberieme <span>Cursor</span> môžeme zmerať hodnoty v jednotlivých bodoch. | Príkazom <span><code>Add_trace</code></span> pridáme do (zatiaľ prázdneho) grafu našu charakteristiku: stlačíme a zo zoznamu vyberieme I(Vd). Ak nám nevyhovuje mierka, môžeme ju zmeniť buď <span><code>X_axis</code></span> alebo <span><code>Y_axis</code></span>. Ak vyberieme <span>Cursor</span> môžeme zmerať hodnoty v jednotlivých bodoch. | ||
Riadok 113: | Riadok 132: | ||
Použijeme zapojenie podľa obrázku, parametre podľa vašej domácej úlohy. | Použijeme zapojenie podľa obrázku, parametre podľa vašej domácej úlohy. | ||
Ak budeme schému kresliť v programe KiCAD tak ako zdroj môžeme použiť ľubovoľnú schematickú značku, | |||
podstatné je označenie a hodnota, z ktorej si simulátor vezme potrebné parametre. Obrázok samotný | |||
pre simuláciu nie je podstatný. V našom prípade sme použili značku voltmetra. | |||
Pozor, dióda môže mať v KiCADe prehodené poradie vývodov a potom na výstupe uvidíte len napätie 0,7 V | |||
(t.j. dióda v priepustnom smere). V takom prípade treba buď prekresliť symbol, alebo súčiastke priradiť | |||
nové (User Field) pole s názvom [Spice_Node_Sequence] and define sequence: 2,1,0 | |||
[[Súbor: | [[Súbor:SpiceSim04.png]] | ||
Kolísanie napätia na vstupe nasimulujeme pomocou zdroja harmonického napätia s offsetom: <math>U_{in} = 18 + 2 \cdot sin (2 \pi 50 ) \qquad [V]</math> t.j. 18<math>\pm</math>2V s frekvenciou 50Hz.<br /> | Kolísanie napätia na vstupe nasimulujeme pomocou zdroja harmonického napätia s offsetom: <math>U_{in} = 18 + 2 \cdot sin (2 \pi 50 ) \qquad [V]</math> t.j. 18<math>\pm</math>2V s frekvenciou 50Hz.<br /> | ||
Riadok 135: | Riadok 161: | ||
.end</pre> | .end</pre> | ||
<span>''Úloha:''</span> Aké je maximálne zvlnenie výstupného napätia (v %) pre najhorší možný prípad? (t.j. max povolený rozptyl vstupného napätia a najhorší prípad zo simulovaných záťaží). | <span>''Úloha:''</span> Aké je maximálne zvlnenie výstupného napätia (v %) pre najhorší možný prípad? (t.j. max povolený rozptyl vstupného napätia a najhorší prípad zo simulovaných záťaží). | ||
== <span>Príklad č.4:</span> Operačný zosilňovač. == | |||
Použijeme zapojenie a parametre podľa obrázku. | |||
[[Súbor:SpiceSim07.png]] | |||
Medzi príkazmi pre simulátor je viacero analýz súčasne, preto treba niektorú z nich zakomentovať napr. znakom * | |||
Aby vám to fungovalo, musíte si vytvoriť vlastnú značku pre operačný zosilňvač, takú, ktorá bude korešpondovať s poradím vývodov v modeli. | |||
Model operačného zosilňovača nájdete na stránkach výrobcu, alebo si ho stiahnete dočasne tu [[Médiá:TL074.mod]] | |||
== Literatúra: == | == Literatúra: == |
Aktuálna revízia z 12:39, 30. apríl 2018
PSPICE - simulácia obvodov.
V tomto materiáli sa stručne oboznámite so základnými príkazmi simulačného programu SPICE (Simulation Program with Integrated Circuits Emphasis). Tento program je jedným z najrozšírenejších na svete a má za sebou pomerne dlhú históriu. Vznikol r.1975 (!) na University of California v Berkeley. Umožňuje simulovať obvody v ustálenom stave (metódou uzlových napätí), prechodovú analýzu, frekvenčnú analýzu, citlivostnú analýzu (aj teplotnú) a mnoho ďalších. Samotný program je ovládaný príkazovo, užívateľské rozhranie je veľmi strohé, vidno, že pôvod programu je v UNIXe. Dnes však existuje veľa nastavbových programov - posledným z nich je kompletný vývojový balík bežiaci pod W95 obsahujúci schematický editor, systém na návrh plošných spojov, na návrh programovateľných (PLD) obvodov a samozrejme aj simuláciu.
Budeme používať program LT Spice od výrobcu polovodičov Linear Technology. Program si môžete nainštalovať odtiaľto: http://www.linear.com/designtools/software/ Program obsahuje aj editor schém, ale my budeme poižívať KiCAD a jeho export do .cir netlistu.
Výpočet pomerov v ustálenom stave - odporový delič
Nakreslíme jednoduchú schému odporového deliča podľa obr.
Vygenerujeme netlist (.cir) pre program Spice a zavoláme simulátor. Príkaz pre spustenie simulátora by mal vyzerať takto:
C:\PROGRA~1\LTC\LTspiceXVII\XVIIx64.exe -- verzia pre 64-bit Windows C:\PROGRA~1\LTC\LTspiceXVII\XVIIx86.exe -- verzia pre 32-bit Windows
Vygenerovaný netlist by mal vyzerať podobne ako tento:
* Sheet Name: Odporovy delic
V1 /1 0 10V
R1 Vystup /1 1k0
R2 0 Vystup 3k0
.OP
.END
Ak je všetko v poriadku, tak sa simulátor spustí automaticky a hľadané výstupné napätie nájdeme vypísané v okne programu.
V nasledujúcom príklade si ukážeme, aký vplyv na odporový delič (jeho výstupné napätie) má zaťaženie meracím prístrojom s reálnym vstupným odporom (teda nie nekonečným).
Schému zapojenia doplníme o odpor Rz. Mohli by sme simuláciu spustiť niekoľkokrát za sebou pre rozličné hodnoty Rz, ale dá sa to spraviť aj automaticky. Preto hodnotu
odporu neudáme ako číslo, ale ako zatiaľ neznámu hodnotu Rz, ktorú potom budeme meniť príkazom pre Spice.
* Sheet Name: Odporovy delic so zatazou
V1 /1 0 10V
R1 Vystup /1 1k0
R2 0 Vystup 3k0
R3 0 Vystup {X}
.STEP PARAM X list 1k 2k 3k 5k 10k 50k 100k
.STEP PARAM X 1k 50k 5k
.PRINT V(Vystup)
.OP
.END
Úloha č.1. Lineárny obvod
Na prvom riadku je vždy názov simulovaného obvodu:
Simulacia linearneho obvodu - Jozko Mrkvicka
Potom nasledujú jednotlivé prvky, začneme odpormi:
R1 1 2 1k ;za bodkociarkou moze byt komentar
R2 2 0 4k7
Prvé je označenie prvku, potom prvý uzol a druhý uzol a napokon hodnota. Označenie i uzly môžu byť ľubovolné, ale aspoň jeden z uzlov sa musí volať 0. Potom vložíme napäťový zdroj:
Vin 1 0 10V ;kladný pól 1, záporný 0, veľkosť 10V
A napokon vložime riadiace príkazy (začínajú bodkou):
.OP
.END
To znamená, že chceme len vypočítať veľkosti napätí v obvode (.OP - operating point) a skončiť (.END)
Súbor uložíme napr. pod názvom priklad1.cir a spustíme program PSpice s parametrom:
pspice.exe priklad1
Ak je všetko v poriadku, vytvorí sa súbor priklad1.out, v ktorom sú výsledky simulácie.
Úloha: Určte veľkosti napätí v obvode podľa obrázku.
Príklad č.2: V-A charakteristika diódy.
Ukážeme si, ako sa simulujú zložitejšie prvky a ako zobraziť výsledky simulácie graficky. Pre meranie charakteristiky musímer diódu zapojiť podľa obrázku, princíp je podobný ako pri zobrazení charakteristiky na osciloskope.
Na vstupe bude meniteľný zdroj V1:
V1 2 0 ;veľkosť určíme neskôr
Pretože PSpice používa pri výpočte metódu uzlových napätí, nedostaneme vo výsledku priamo veľkosti prúdov. Program vie vypočítať len veľkosti prúdov cez ideálne napäťové zdroje. Preto si pomôžeme zaradením zdroja napätia 0V:
Vd 2 1 0
Diódu zadáme podobne ako ostatné prvky, ale pretože je to nelineárny prvok, musíme zadať aj jej správanie a parametre. Tie udáva príslušný model. Niektorí výrobcovia poskytujú konštruktérom modely konkrétnych typov súčiastok, takže program nemusí pracovať len s ideálnymi prvkami. V našom prípade:
D1 1 0 KZZ74
.model KZZ74 D (Is=0.1uA N=1 Rs=12 Bv=9.7 Ibv=5mA)
Nakreslíme si charakteristiku od -12 po 1V, v krokoch po 0,1V. Musíme teda povedať, že jednosmerný (DC) zdroj V1 sa má meniť v tomto rozsahu:
.DC V1 -12 1 0.1
Nasledujúce dva príkazy vypíšu hodnoty zo simulácie do tabuľky (.print) a “vykreslia” charakteristiku v pseudografike do súboru priklad2.out (.plot).
.print DC I(Vd)
.plot DC I(Vd)
Posledný príkaz zapíše výsledky v binárnom tvare vhodnom pre grafický postprocesor:
.probe I(Vd)
.end
Po uložení súboru spustíme simuláciu a po nej grafický postprocesor (ak sa nespustí sám):
probe.exe priklad2
Príkazom Add_trace
pridáme do (zatiaľ prázdneho) grafu našu charakteristiku: stlačíme a zo zoznamu vyberieme I(Vd). Ak nám nevyhovuje mierka, môžeme ju zmeniť buď X_axis
alebo Y_axis
. Ak vyberieme Cursor môžeme zmerať hodnoty v jednotlivých bodoch.
Úloha: nasimulujte diódu z cvičení a zmerjate veľkosť Zenerovho napätia a prúd If pri Uf=0.5V.
Príklad č.3: Stabilizátor so Zenerovou diódou.
Použijeme zapojenie podľa obrázku, parametre podľa vašej domácej úlohy. Ak budeme schému kresliť v programe KiCAD tak ako zdroj môžeme použiť ľubovoľnú schematickú značku, podstatné je označenie a hodnota, z ktorej si simulátor vezme potrebné parametre. Obrázok samotný pre simuláciu nie je podstatný. V našom prípade sme použili značku voltmetra.
Pozor, dióda môže mať v KiCADe prehodené poradie vývodov a potom na výstupe uvidíte len napätie 0,7 V (t.j. dióda v priepustnom smere). V takom prípade treba buď prekresliť symbol, alebo súčiastke priradiť nové (User Field) pole s názvom [Spice_Node_Sequence] and define sequence: 2,1,0
Kolísanie napätia na vstupe nasimulujeme pomocou zdroja harmonického napätia s offsetom: t.j. 182V s frekvenciou 50Hz.
Stabilizator so zenerovou diodou - Jozko Mrkvicka Vin 1 0 sin (18 2 50) R0 1 2 500 D1 0 2 KZZ74 ;v zavernom smere! .model KZZ74 D (Is=0.1uA N=1 Rs=12 Bv=9.7 Ibv=5mA)
Záťaž predstavuje rezistor Rz s hodnotou, ktorá sa mení od 1k až po 10k. To zadáme nsaledovne:
Rz 2 0 {R} .param R=1k ;inicializacna hodnota .step param (R) 1k 10k 2.5k ;skokom od 1 po 10k po 2.5
Zaujíma nás časový priebeh výstupného napätia, preto zadáme typ analýzy .TRAN (transient - prechodová) a zavoláme grafický postprocesor:
.tran 1ms 0.1s ;od 0 po 0.1s po 1ms .probe .end
Úloha: Aké je maximálne zvlnenie výstupného napätia (v %) pre najhorší možný prípad? (t.j. max povolený rozptyl vstupného napätia a najhorší prípad zo simulovaných záťaží).
Príklad č.4: Operačný zosilňovač.
Použijeme zapojenie a parametre podľa obrázku.
Medzi príkazmi pre simulátor je viacero analýz súčasne, preto treba niektorú z nich zakomentovať napr. znakom *
Aby vám to fungovalo, musíte si vytvoriť vlastnú značku pre operačný zosilňvač, takú, ktorá bude korešpondovať s poradím vývodov v modeli. Model operačného zosilňovača nájdete na stránkach výrobcu, alebo si ho stiahnete dočasne tu Médiá:TL074.mod
Literatúra:
Návod pre začiatočníkov aj s príkladmi nájdete napr. na počítači University of Pennsylvania na adrese
http://www.seas.upenn.edu/ jan/spice/spice.overview.html
Alebo na http://www.coe.uncc.edu/project_posaic/mosaic_help/ecad/pspice
Samotný program si môžete nahrať na ftp://ftp.microsim.com/
alebo http://www.microsim.com/
Existujú aj tlačené učebnice, tie si ale treba kúpiť:
P.Tuinenga: SPICE. A Guide to Circuit Simulation and Analysis Using PSpice, 3rd Ed., Prentice Hall, Upper Saddle River, NJ, 1995
F.Monssen: MicroSim PSpice with Circuit Analysis, 2nd Ed., Prentice Hall, Upper Saddle River, NJ, 1998
Az potialto to bol text z cviceni ES, dalej nove odkazy:
Spice a KiCAD: