Jste zde

Návrh elektroniky v programu KiCAD (9 a 10. díl)

V tomto článku trochu odbočím k ostatním simulačním programům, abychom se mohli ke KiCADu v příští kapitole vrátit.
Pro simulaci elektronických zapojení slouží celá řada programů. Tyto programy se většinou nazývají SPICE. Z komerčních je to třeba Pspice [8], který je součástí balíku OrCAD, nebo samostatně stáhnutelný LTSpice [9], který nabízí Linear Technology zdarma. Většina dostupných komerčních software však funguje pod MS Windows a volná verze bývá určitým způsobem omezena (například počtem součástek nebo jejich výběrem). Z volně dostupných programů pak je k dispozici gnucap [10], a ngspice [11], což jsou simulátory z příkazového řádku. Grafické programy umožňující nakreslit a odsimulovat obvod jsou QUCS [12], Oregano [13] a samozřejmě že lze použít i KiCAD. Pokud jste se ještě nesetkali s žádným simulačním programem, doporučuji na začátek použít QUCS nebo Oregano. Samotným metodám simulace se však tato kapitola nevěnuje a lze ji najít v jiné literatuře.

 

9 Simulace

Program QUCS obsahuje v sobě velké množství různých součástek a je ideální pro středoškolské i vysokoškolské laboratorní práce. Problém nastane v případě, že potřebujete do QUCS dostat nějakou součástku, jejíž parametry jsou sice popsány pomocí SPICE [14] (lze stáhnout z webových stránek výrobce). Program QUCS nebudu popisovat, jednak proto, že je jednoduchý a také proto že pro mou práci s použitím specifických součástek už od počátku nevyhovoval.

 

 

Oregano obsahuje mnohem menší počet součástek než QUCS, ale zase umožňuje snadno přidat parametrizované součástky od výrobce. Pokud se však nejedná o součástku, jejíž schématická značka je v knihovně, je třeba modifikovat knihovny vytvořením součástky. Bohužel jsem nenašel program, co umožňuje upravit tyto knihovny a tak je nutno upravit knihovnu ručně. Lze to, ale je to dost časově náročné. Oregano je grafickou nástavbou pro řádkové programy ngspice a gnucap (lze si zvolit druh simulace). Oregano je jednodušší než QUCS.

KiCAD je jen grafickou nástavbou pro tvorbu schématu. Samotnou simulaci neumožňuje. Umožňuje exportovat obvod a spustit simulátor. Pokud je simulátorem řádkový program a výsledek zobrazujeme pomocí programu volaného z příkazového řádku, vystačíme si pomocí dvou kliknutí myši pro spuštění simulace. Bohužel to v tomto případě znamená že veškeré příkazy pro simulaci musíme do KiCADu zadat ručně. Samozřejmě, že existují i grafické nástavby pro simulaci SPICE obvodů kjwaves [15] nebo gSpiceUI [16]. Exportujeme netlist, který otevřeme pomocí grafické nástavby a zde již nastavíme parametry simulace, spustíme simulátor a výsledek zobrazíme v prohlížeči gwave nebo gaw. Výhodou KiCADu je snadná tvorba schématických značek (například není problém vytvořit dvoubázový MOSFET, nebo úplně nový obvod).

9.1 Modely a simulační programy

Pro simulaci existují různé modely pro různé simulační programy. Mezi ně patří PSpice, HSpice, TINA, atd. My budeme využívat modely PSpice a parametrizované PSpice, což jsou jednořádkové modely, nejčastěji se jedná o dvou vývodové součástky:

*SRC=1N4007;1N4007;Diodes;Si; 1.00kV 1.00A 3.00us Diodes, Inc. diode

.MODEL 1N4007 D ( IS=76.9p RS=42.0m BV=1.00k IBV=5.00u

+ CJO=26.5p M=0.333 N=1.45 TT=4.32u )

 

nebo

.MODEL BC327_25 PNP (IS=10.0029F BF=307.467 NF=994.875M VAF=100 IKF=1.02438

+ ISE=2.093469E-020 NE=1.17204 BR=101.222M IKR=1.00524 ISC=1.762216E-020

+ RE=360.928M RC=743.144M CJE=2P MJE=500M CJC=50.3851P VJC=700M MJC=558.066M

+ TF=501.007P XTF=499.987M VTF=10 ITF=10.0724M TR=10N )

 

Pro modely PSpice s více řádky je typické vytváření části obvodu. Například krystal můžeme popsat indukčností, dvěma kondenzátory a jedním rezistorem:

 

* 32768 hertz watch crystal, XY cut, series resonant, Q=81780

*

.subckt QZS32768 1 2

*

lqz 1 11 lmod 4448.72259

.model lmod ind(tc2 = 8.68e-8)

cs 11 12 5.30279780e-015

rqz 12 2 11.2k

cp 1 2 1.84pf

.ends

 

Nebo tranzistor MOSFET tvoří složitější model:

*---------- BSS138 Spice Model ----------

.SUBCKT BSS138 10 20 30

* TERMINALS: D G S

M1 1 2 3 3 NMOS L = 1E-006 W = 1E-006

RD 10 1 0.9338

RS 30 3 0.001

RG 20 2 47

CGS 2 3 1.906E-011

EGD 12 0 2 1 1

VFB 14 0 0

FFB 2 1 VFB 1

CGD 13 14 4.9E-011

R1 0 1

D1 12 13 DLIM

DDG 15 14 DCGD

R2 12 15 1

D2 15 0 DLIM

DSD 3 10 DSUB

.MODEL NMOS NMOS LEVEL = 3 VMAX = 8E+005 ETA = 1E-012 VTO = 1.422

+ TOX = 6E-008 NSUB = 1E+016 KP = 0.5025 U0 = 400 KAPPA = 7.117

.MODEL DCGD D CJO = 9.463E-012 VJ = 6.446 M = 0.9816

.MODEL DSUB D IS = 7.582E-010 N = 1.586 RS = 0.1976

+ BV = 65 CJO = 1.173E-011 VJ = 0.03727 M = 0.2868

.MODEL DLIM D IS = 0.0001

.ENDS

 

Asi je jasné, že hvězdička na začátku znamená komentář a modely jsou 1N4007, BC327_25, QZS32768 a BSS138. Ne všechny modely stažené s webových stránek umí simulační programy použít. Například firma Texas Instruments používá s oblibou v modelech polynomy vyšších řádů, se kterými se neporadí například gnucap. Důležité je, že na parametrické modely se odvoláváme referencí zkratky (D pro diody, Q pro tranzistory, M pro MOSFETy) a na modely tvořené obvodem se odvoláváme referencí U nebo X (X1 pro krystal, ale X_Q1 nebo X_M1 pro MOSFET).

Program ngspice vyžaduje, aby všechny simulační modely byly zkompilovány, aby je snadno mohl zahrnout do simulace. Díky tomu je ngspice velmi rychlý, ale je nutno při každém novém modelu provádět jeho začlenění.

Program gnucap umožňuje jak použití kompilovaných modelů, tak použití přímo modelů stažených z webových stránek výrobce ve formátu PSpice. Nevýhodou je o něco pomalejší simulace. Další nevýhodou je horší simulace tranzistorů MOSFET a gnucap nepodporuje polynomy vyššího řádu a použití tranzistorů JFET. Některé problémy, jako implementaci JFET a další součástky lze doinstalovat pomocí pluginů. Ovšem to vyžaduje stažení vývojové verze, stažení modelů a provedení kompilace celého programu včetně modelů. Sadu modelů je možno kompilovat samostatně a tu poté načíst.

10 Simulace v programu Oregano

Na počátku se rozhodneme, jestli budeme jako simulační program používat gnucap nebo ngspice. Abychom využili všechny možnosti simulace a ukázali si zakomponování stažených modelů bez nutnosti kompilace, použijeme gnucap. To lze nastavit v Upravit/Nastavení/Engine. V levé části okna je lišta knihoven. Zde si vybereme knihovnu a součástky přetáhneme na kreslící plochu. Je možno také použít tlačítko Place. Součástky neotáčíme a vždy je necháme v té poloze jak jsme je přetáhli, i když to komplikuje návrh obvodu. To proto, že program (v 0.69) obsahuje bug, kdy po načtení schématu se špatně načtou přípojné body součástek (zůstanou načtené v původní poloze). A pak to simuluje nesmysly.

Ve schématu je nutno mít alespoň jednu sondu . Ta se připojuje na libovolný vodič ve schématu. Vodiče nakreslíme pomocí spojů dostupných z tlačítka . Při spojení s jiným vodičem se vytváří spojení automaticky. Vyhneme se raději spojování čtyř vodičů do jednoho místa, protože ne vždy to funguje zcela korektně.

Pomocí tlačítka nastavíme parametry simulace. Můžeme zvolit mezi Transient, Fourier, DC a AC sweep. Další volby můžeme nastavit v záložce Analysis options (nejčastěji teplotu a ITL4). Tlačítkem  spustíme simulaci. V okně výsledku si zaškrtneme, které signály chceme vidět.

     

Jistou nevýhodou je omezený rozsah simulací, zobrazování v grafu (zde je ukázka, jak se zobrazilo napětí ticícovkách milivoltů. Velice zajímavou vlastností je přidávání funkcí, zatím se jedná jen o rozdíl a podíl. Další nevýhodou je, že napětí se v grafu zobrazují jako napětí v bodech obvodu, a ne jako napětí na sondách. Síť lze však po simulaci zobrazit pomocí Zobrazení/Node labels. Ale po úpravě schématu se síť změní a je nutno vypnout a zapnout její zobrazení.

10.1 Standardní prvky s modelem

Standardními prvky míním ty, které mají schématickou značku v programu Oregano a jejíž model je stažitelný na Internetu. Program oregano uchovává modely v adresáři /usr/share/oregano/models. Tyto modely jsou pojmenovány jméno.model. Je vhodné, aby každý modelový soubor obsahoval jen jeden model. Je možno použít i více modelů v jiném souboru, ale zde už je nutno umístit do schématu „schématikou značku“ include.

Praktická ukázka jak použít tranzistor BC327. Stáhneme si model tranzistoru BC327 a uložíme ho do adresáře pro modely pod jménem BC327.model.

.MODEL BC327 PNP (IS=10.0029F BF=402.001 NF=994.875M VAF=100 IKF=991.671M

+ ISE=1.218485E-022 NE=2.14585 BR=101.214M IKR=1.00622 ISC=1.218700E-019

+ RE=360.928M RC=743.15M CJE=2P MJE=500M CJC=50.3851P VJC=700M MJC=558.066M

+ TF=501.007P XTF=499.987M VTF=10 ITF=10.0724M TR=10N )

 

Na tranzistor, který chceme změnit dvou-klikneme a upravíme formulář. Jako Model přiřadíme název a v dolním řádku změníme NPN na @model. Klikneme na Close. Nyní když znovu dvou-klikneme na tranzistor objeví se v záložce Model výpis modelu tranzistoru. Nyní má tranzistor přiřazen model BC327.

 

Jinou možností je přímo upravit soubor default.oreglib, který se nachází v adresáři /usr/share/oregano/libraries. Lepší cestou je vytvořit si vlastní knihovnu kopií a upravit tento soubor. Pak restartovat program oregano.

Části původního souboru default.oreglib

Části nového soubor transistors.oreglib

<ogo:symbol>

<ogo:name>N-MOS</ogo:name>

<ogo:objects>

<ogo:line>(0 20)(15 20)</ogo:line>

<ogo:line>(15 10)(15 30)</ogo:line>

<ogo:line>(20 30)(30 30)(30 40)</ogo:line>

<ogo:line>(20 10)(30 10)(30 0)</ogo:line>

<ogo:line>(20 20)(25 24)</ogo:line>

<ogo:line>(25 16)(20 20)(40 20)(40 40)</ogo:line>

<ogo:line>(20 7)(20 13)</ogo:line>

<ogo:line>(20 17)(20 23)</ogo:line>

<ogo:line>(20 27)(20 33)</ogo:line>

</ogo:objects>

<ogo:connections>

<ogo:connection>(30 0 1)</ogo:connection>

<ogo:connection>(0 20 2)</ogo:connection>

<ogo:connection>(30 40 3)</ogo:connection>

<ogo:connection>(40 40 4)</ogo:connection>

</ogo:connections>

</ogo:symbol>

<ogo:symbol>

<ogo:name>MOSFET-N</ogo:name>

<ogo:objects>

<ogo:line>(0 20)(15 20)</ogo:line>

<ogo:line>(15 10)(15 30)</ogo:line>

<ogo:line>(20 30)(30 30)(30 40)</ogo:line>

<ogo:line>(20 10)(30 10)(30 0)</ogo:line>

<ogo:line>(20 20)(25 24)</ogo:line>

<ogo:line>(25 16)(20 20)(30 20)(30 30)</ogo:line>

<ogo:line>(20 7)(20 13)</ogo:line>

<ogo:line>(20 17)(20 23)</ogo:line>

<ogo:line>(20 27)(20 33)</ogo:line>

</ogo:objects>

<ogo:connections>

<ogo:connection>(30 0 1)</ogo:connection>

<ogo:connection>(0 20 2)</ogo:connection>

<ogo:connection>(30 40 3)</ogo:connection>

</ogo:connections>

</ogo:symbol>

<ogo:part>

<ogo:name>N-MOS</ogo:name>

<ogo:symbol>N-MOS</ogo:symbol>

<ogo:description>N MOSFET</ogo:description>

<ogo:labels>

<ogo:label>

<ogo:name>Reference designator</ogo:name>

<ogo:text>@refdes</ogo:text>

<ogo:position>(0 0)</ogo:position>

<ogo:modify>yes</ogo:modify>

</ogo:label>

</ogo:labels>

<ogo:properties>

<ogo:property>

<ogo:name>Refdes</ogo:name>

<ogo:value>M</ogo:value>

</ogo:property>

<ogo:property>

<ogo:name>Template</ogo:name>

<ogo:value>M_@refdes %d %g %s %b nmos</ogo:value>

</ogo:property>

</ogo:properties>

</ogo:part>

<ogo:part>

<ogo:name>MOSFET-N</ogo:name>

<ogo:symbol>MOSFET-N</ogo:symbol>

<ogo:description>N MOSFET</ogo:description>

<ogo:labels>

<ogo:label>

<ogo:name>Reference designator</ogo:name>

<ogo:text>@refdes</ogo:text>

<ogo:position>(0 0)</ogo:position>

<ogo:modify>yes</ogo:modify>

</ogo:label>

<ogo:label>

<ogo:name>Model</ogo:name>

<ogo:text>@model</ogo:text>

<ogo:position>(15 30)</ogo:position>

<ogo:modify>yes</ogo:modify>

</ogo:label>

</ogo:labels>

<ogo:properties>

<ogo:property>

<ogo:name>Refdes</ogo:name>

<ogo:value>M</ogo:value>

</ogo:property>

<ogo:property>

<ogo:name>Model</ogo:name>

<ogo:value>nmos</ogo:value>

</ogo:property>

<ogo:property>

<ogo:name>Template</ogo:name>

<ogo:value>M_@refdes %1 %2 %3 @model</ogo:value>

</ogo:property>

</ogo:properties>

</ogo:part>


A příště se vrátíme k simulaci pomocí KiCADu.

Hodnocení článku: