Kérkel segíts, hogy ne maradjon hibás információ az oldalon!
Ha szerinted valami nem fedi a valóságot, kérlek írd meg, hogy javítani tudjam. Ha kérdésed van, fordulj hozzám bizalommal!

A következő címkéjű bejegyzések mutatása: spice. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: spice. Összes bejegyzés megjelenítése

2009. október 29., csütörtök

Improved Eagle Spice ULP

The Advanced Spice features:
Netlist names are the same as in Eagle (better readability)
Can include subckt and models (from files)
On page define own models
Improved processing of schematic
Added Spice Eagle library (with power supply schematic simbol)

Download it from here: aspice.ulp
And here: mspice.lbr

Installation:
Download the files and put them to the corresponding Eagle library. Open the Libraries on the Eagle Control panel, look for the newly copied library. Right click on it and click on Use.

Running the ULP:
Simply type:
RUN aspice.ulp

This will generate the netlist file in the project directory.

Usage:

Spice variables from the base script. You can use this in the value field on the schematic or edit the library you are using, open the simbol you want to use and put these on a new layer.
  • spicename: what you write after this word will be put in front of the device name in the netlist.
  • spiceorder: you can change the pin orders according for eg. to your subckt if it is not the same as in the eagle simbol.
  • spicepostf: more complex value text.
  • spicepref: what you write after this will be between the name and the node in the netlist.


Using Subckts:
First of all: don't forget to put a letter 'X' in front of the device name on the schematic. It is the same if you use spicename X.
Add a SPICEINCLUDE item from the mspice library (using the ADD command).
Name it after the model name (editing eagle NAME tag).
Edit the VALUE tag and add the filename (with complete path).

The script will write a warning into the netlist file if it cannot find the file or the file does not contain the named model.

Include a model from file:
It is just like including a subckt. The only difference is that the script will look for a model definition and not for a subckt.

Define own model on page:
Add a SPICEMODEL item to the page. Name it as the model name and use the VALUE tag to define the model paramters.

Example: diode with 1V forward voltage:
Give VALUE= D_ONEV
Give NAME= D (vj=1V)

The script will generate the following line:
".model D_ONE D (vj=1V)

Please note that the script does not choose the device type, that must be specified by the user (eg. pnp, npn, d etc.)

Supplies:
The script will find the Eagle supply arrows and will generate them as common (ground) referenced voltage supplies. But it is not recommended as it can cause problems in the netlist naming (+5, -40 is not preferred by the spice simulator).

Use the supply given in the mspice.lib instead!
Add a VDC simbol to your schematic. Use values like: DC 34V or DC +5V. (Please note that these simbol will be two pins on the pcb.)

Constant current source:
Add an IDC item to your schematic from the mspice.lib.

Variable voltage sources:
You can use variable sources by giving the VALUE parameters as a Spice variable source parameter.
Example: pulse generator:
VALUE= pulse 0 2 10u 100u 100u 3m 4u

Current measurement:
Just as in command line spice: add a VDC source to your schematic and assign a DC 0V value to it. You can plot its current in spice by:
plot i(VNameOfSource)


I did really like writing this script and really hope this will yield some of you a better time when using Spice with Eagle.

For those who does not know how to Spice:
Spice tutorial:
http://littletux.homelinux.org/knowhow/ngspice.pdf

Ngspice manual:
http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf

2009. október 11., vasárnap

Fejlesztett Eagle Spice ULP

Advanced spice.ulp funkciók:
  • A netlistben az eagleben megadott net nevek jelennek meg.
  • Subckt és model includolható.
  • Egyéni modell megadható.
  • Fejlesztett feldolgozás és generálás.
  • Spice könyvtár spice táppal.
Tölsd le itt: aspice.ulp
És itt: mspice.lbr

Kérlek ellenőrizd letöltés előtt, hogy van-e fent frissebb verzió. Az újabb verziók végéhez dátumot fűzök.

A sztori és haszálat:
A minap a neten keresgélve találtam, hogy az Eagle-hez egy ügyes ember csinált olyan scriptet, amely képes spice netlistet generálni az eagle schematicból. Rögvest tettem is vele egy próbát, mert van egy bevitt LM317-es változtatható CV/CC áramköröm berajzolva, gondoltam elkészítés előtt megismerkedem vele.

Nagyon hamar belefutottam, hogy a spice.ulp azért nincs felruházva mindenféle extra funkcióval és elkezdtem szövegszerkesztővel pofozgatni a netlistet. Ez hamar igen unalmassá vált, mert nem lehetett követni az áramkör változásait és nagyon gyanús kimeneteket kaptam... Úgyhogy nem volt mit tenni, jött a script fejlesztés :)

A teljes használhatósághoz egy pici kis eagle könyvátrt is kellett csinálnom, amiben meg lehet adni az includolandó fájlokat és a modelleket, subckt-kat.
A script annyira ügyes, hogy egy sokezer hosszú fájlból is csak a szükséges modelt veszi ki.

Letöltés után helyezd a fájlokat az eagle megfelelő könyvtáraiba. Ne felejtsd el a kontrol ablakban a könyvátrak között kiválasztani és "Use"-ni az új könyvtárt.

Ez a megoldás alapvetően az eagle Value és Name mezőit használja ki a net-ek mellett. A name legyen az eagle által adott név.

A script futtatásához írd be az eagle parancssorba, hogy:
RUN aspice.ulp

Subckt-k használata:
A subckt alkatrész neve elé írjunk egy X-et, ne felejtsük el. Ez ugyanaz, mintha a value mezőbe, vagy a scriptben leírtaknak megfelelően egy külön layeren, megadnánk, hogy spicename X.
Addjunk hozzá tervhez az mspice könyvtárból egy SPICEINCLUDE elemet. A Name-nek adjuk meg a modell nevét, ahogy a fájl hivatkozik rá. A fájlnevet a VALUE mezőben adhatjuk meg teljes elérési útvonallal.
A script a kimenetben jelzi, ha nem találta mega fájlt, vagy a fájlban a modelt.

Model beemelése fájlból:
Alapvetően megeggyezik az előzővel, a különbség annyi, hogy nem subckt-t keres a script, hanem modelt.

Egyéni modell:
Lehetőség van ott a lapon deklarálni új modeltt, ezt az ADDSPICEMODEL ellemmel tehetjük meg. Hasonlóan az előzőkhöz a NAME a neve amodlelnek és a VALUE sorba kell beírni, a paramétereket. A script a .MODEL kezdetet elé teszi a fájlban.
Példa: 1V nyitófeszültségű dióda modell:
NAME= DEGY
VALUE= D (vj=1V)
Ebből a script a következőt generálja:
.model DEGY D (vj=1V)

Figyeljük meg, hogy nekünk kell gondoskodni az alkatrész típusáról (pnp, npn, d...stb).

Tápforrások:
A script felismeri az eagle táp nyilakat és azokat a földhöz referenciázva generálja le. A tápnyíl neve lesz a forrás neve és az értéke az érték. De ez bajos lehet, mivel a spcie parancssor kevésbé szereti a +5V, -35V és hasonló neteket. Plussz gondot okoz, hogy ha átnevezzük, vagy más értéket teszünk, lehet, hogy a táp generálásakor ugyan a megfelelő megnevezést használja, de a többi netlist sor viszont a net nevét.

Kényelmesebb és egyszerűbb formály a tápforrásoknak a mspice könyvtárban levő VDC szimbólum. Ez a nyákon két pinként jelenik meg, viszont a netlistbe szépen begenerálódik. Adjunk neki nevet és értéket és kössük, ahova csak tetszik :). Az értéknek a következő formájúnak kell lennie: pl DC 35V vagy DC -3V stb.

Lehetőség van konstans áram generátor bekötésére is, ez a IDC alkatrész.

Váltó áramú tápforrás:
Váltóáramú generátorhoz az előzőekben leírt VDC generátort lehet alkalmazni, de az érték mezőbe az adott generátornak megfeleő értéket kell megadni.
Pl egy imp. gen:
VALUE= pulse 0 3 10u 100u 100u 3m 4u

Áram mérő:
Áram mérésre természtesen a spiceban megszokott módon egy DC tápot tudunk behelyezni az áramkörben 0V értékkel. A spice parancssorban:
# plot i(meroneve)


Ez az egész egy jó kis meló volt, tetszett is, remélem, hogy másnak is hasznára lesz! :)

spice simulation using Cadsoft Eagle.

2009. szeptember 20., vasárnap

Linux, SPICE, Geda suite

A nemrég megkezdett traffipax jammer (zavaró) fejlesztési projektem keretében a jobb megértés és gyorsabb kisérletezés érdekében egy picit elmerültem a linux alatt SPICE rejtelmeiben. Ez nem az első ilyen próbálkozásom volt, de a Gschem kezdeti kényelmetlennek tűnő funkciói és az egész Geda suite pl. egy Orcadhoz mért kényelmetlensége mindig könnyedén eltántorított.

A nagy munka megkezdése előtt picit elvonta a figyelmem a Gschem egy-egy fura funkciója és a forráskódban való kis turkálás után apró átalakításokat eszközöltem. Tényleg nem sok minden,de fura módon sokkal használhatóbbá tette számomra a kezelést. Ilyen pl, hogy a net (összekötő) összekötő parancs hot-key (n) lenyomásakor ne kezdjen el azonnal vonalat húzni, mert úgy használhatatlan. Beletettem a mozgatás közbeni jobb klikkes forgatást, igaz, ez csak kényelmi funkció, inkább Eagleből jött megszokás. Hasonló apró módosítás, hogy az objektumokat forgatáskor a középpontjuk körül forgassa. (Ez egyébként sokkal hosszútávúbb lett, mint egy pár perces módosítás, mert a snap-to-grid szétszórta az alkatrészeket :D.) Sok többi funkciót meg megtaláltam, hogy már kész van :).
Sokat gondolkodom még a cross-hair kurzor megvalósításán és ami csúcs lenne, hogy az Easy spicehoz hasonlóan beírkálni a spice szimuláció munkaponti eredményeit az áramköri rajzra.

És már meg is kezdődhetett a munka! :)

A spice használatát először a Spice-gui és az Easy Spice segítségével akartam megkezdeni, de hamar belefutottam abba, hogy másra lenne szükség, mint ami elkészült ezekben a Gui-s verziókban. Ettől függetlenül mindenkinek ajánlom a megismerésüket, mert alap esetben nagyon hasznosak lehetnek.

Nem célom most egy összefüggő spice tutorial írása, ilyen igen sok van a neten. Inkább csak szemezgetés szinten.

Hogyan kezdjük:
Először is rajzoljuk meg az áramkört Gschemben. Használjuk a General és a Spice alkatrészeket. Nagyon fontos és nem elfelejtendő az áramkör nullájának jelölése a netname=0 paraméter dekralásával. Ha kész vagyunk, mentsük el az áramkört. Az áramkörből a gnetlist segítségével készítünk az ngspice által használható szimulációs fájlt.
# gnetlist -g spice-sdb -o [kimenete.net] [bemeno.sch]

A -g kapcsoló azt mondja meg a gnetlistnek, hogy milyen spice kimenetet generáljon, a -o a kimeneti fájl neve legyen és az sch az elkészített áramkör.
Én ngspice-t használok a szimulációra:
# ngspice [kimeneti.net]
És már előttünk is van a spice konzol. Használatát a cikk alján található linkeken keresztül ismerhetjük meg.

A subckt-k használata:
A spice modellezés lényege az lenne legtöbbször, hogy nem az alap spice modelleket használjuk, hanem azokat a valóságnak megfelelően paraméterezzük fel. Továbbá lehetőség van előzőleg elkészített (akár gschemmel) modellek felépítésére és azoknak behívható modullá (SubCkt) alakítására.
Ilyen aláramköröket úgy implementálhatunk az áramkörünkbe, hogy behívjuk a neki megfelelő spice alaktrészt és a paraméterei közé hozzáadunk egy
file = [subckt elérése]
value = [subckt neve]
A spice csak akkor fogja a subckt modellt használni, ha az alkatrész neve "X"-el kezdődik. Pl van egy tranzisztorunk, Q1, amit subckt modellként szeretnénk használni, akkor a netlistben nem Q1ként kell hogy megjelenjen, hanem pl XQ1-ként.
Ezt azért írom ki, mert a gschemből gnetlist-el generált netlistek nem kapják meg az X előbetűt! Így a spice mindig azt írja, hogy model not found és a default paramétereket használja. Ahhoz, hogy ezt elkerüljük két dolgot tehetünk. Az egyik az, hogy mindig futtatás előtt kézzel javítjuk a netlist fájlt. A másik, hogy a gschemben kézzel a név elé írjuk az X-et és a gnetlistet egy további "-n" kapcsolóval hívjuk.
# gnetlist -n -g spice-sdb -o [netlist.net] [schem.sch]
Ekkor a gnetlist nem javítja a típusnak megfelelően a modell neveket.

Step size too small hiba:
Ha sokáig érthetetlen módon "step size too small" hibaüzenetet kapunk érdemes egy picit megfigyelni a munkaponti értékeket. Ha nagyon nem stimmelnek (pl negatív feszültségek egy csak + tápot tartalmazó áramkörben) ellenőrizzük, hogy a dedikált 0 (nulla) referencia pont meg van-e adva. Éppígy én úgy jártam az ngspice-val, hogy volt egy kábelem n4-nek elnevezve és a 0-val összekötve. A gnetlist természetesen észrevette a dupla nevű kábelt és meg is szüntette nagybuzgón. A 0-t.....
Tapasztalat: mindig használd a gnetlist DRC checket!

Ha mégsem ilyen jellegű a hibánk, előfordulhat, hogy csak nagyobb számítási felbontásra van szükségünk. Ilyenkor lérdemes a környezet paramétereit babrálni egy picit. Ezt (ngspice esetén) a set paranccsal vagy a .ckt fájlba .OPTIONS sorral tehetjük meg.

>> set KULCS=ÉRTÉK
vagy
.OPTIONS KULCS=ÉRTÉK

Megoldási kísérletek, zárójelben jelzem az ngspice alap értékeit.
Emeljük a relatí hiba tolerancia értékét: RELTOL=0.01 (def: 0.001 azaz 0.1%)
Emeljük az absz. hiba toleranciát: ABSTOL=1f (def: 1pico)
Emeljük a fesz. hiba toleranciát: VNTOL=10m (def 1m)
Az ITL paraméterek a konvergencia keresés maximális lépés számát határozzák meg. A tranzienssé a 4-es: ITL4=200 (def=50)

Ha minden kötél szakadt, a hibát a szimulált áramkörben kell keresned. Próbálj IC (initial condition)-ket megadni, vagy realisztikusabbá tenni a modellt. Tegyél be kábel és generátor belső ellenállásokat, szimbolikus szórt kapacitásokat. Próbáld meg darabolni az áramkört. Emelett, ha nem is sikerül a spicének végigszámolni, de találsz olyan paramétereket, hogy néhány mintát mégis kiszámol, mielőtt elhal, akkor mindenképpen plottoltasd vele az érdeksebb de akár a triviálisabb csomópontokat is.




Linkek:

Spice tutorial:
http://littletux.homelinux.org/knowhow/ngspice.pdf

Ngspice kézikönyv:
http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf

spice3 kéziköny:
http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec3.html

Egy másik Spice tutorial:
http://web.mit.edu/geda/arch/i386_rhel4/versions/current/share/doc/geda-doc/spice-sdb/intro.html

Minden geda cucchoz:
http://web.mit.edu/geda/arch/i386_rhel4/versions/current/share/doc/geda-doc

Ez is komoly spice leírás:
http://www.seas.upenn.edu/~jan/spice/spice.overview.html

Még spice:
http://www.brorson.com/gEDA/SPICE/t1.html

Érdekes spice modell ötlet:
http://www.ecircuitcenter.com/Circuits/vc_resistor1/vc_resistor1.htm

Spice modell lista
http://homepages.which.net/~paul.hills/Circuits/Spice/ModelIndex.html
Egy érdekes elektronikai könyv spice modellezéssel:
Electronic concepts: an introduction
szerző: Jerrold H. Krenz
http://books.google.com/books?id=Le9zdVoMEOEC&pg=PA146&lpg=PA146&dq=common+emitter+bias+spice&source=bl&ots=WLBrR9C-I3&sig=AXtLdFpM-N7ExJ41NB27Lgpbwoc&hl=hu&ei=dVG1SvXdDYaZ_QbSpN3GDQ&sa=X&oi=book_result&ct=result&resnum=10#v=onepage&q=common%20emitter%20bias%20spice&f=false