O programie

Program Micro-Cap jest symulatorem układów elektronicznych analogowych i cyfrowych. Od roku 2001 dostępna jest siódma generacja programu. Pierwsze wydanie, Micro-Cap I, ukazało się w roku 1982.
Micro-Cap umożliwia opis układów elektronicznych w sposób naturalny. Możesz schemat narysować lub opisać go w formacie tekstowym SPICE lub PSpice™. W każdym przypadku Micro-Cap może szybko dokonać symulacji układu i wykreślić rezultaty dynamicznie, podczas przebiegu obliczeń.
Wersja demonstracyjna programu dostępna jest na stronie producenta http://www.spectrum-soft.com.
Jest to w pełni funkcjonalna, bezpłatna wersja. W porównaniu z wersją standardową posiada jednak pewne ograniczenia (np. wielkość schematu ograniczona jest do 50 elementów, zubożona biblioteka elementów i inne).
Wersja ta doskonale nadaje się do wykorzystania na lekcjach przedmiotów takich jak elektrotechnika, elektronika i automatyka.


Wyrażenia (Expressions)

Wyrażenia są tekstem wprowadzonym przez użytkownika, zawierającym liczby, stałe, zmienne i operatory matematyczne. Wszystkie przebiegi (waveforms), które mają być narysowane na wykresach, definiuje się na kartach Analysis Limits jako wyrażenia. Duże i małe litery w wyrażeniach nie są rozróżniane (np. "Rwy" oznacza to samo co "RWY").


Liczby i stałe

Liczby są wyrażane w jednym z trzech formatów:
ffemto10-15
ppiko10-12
nnano10-9
umikro10-6
mmili10-3
kkilo10+3
megmega10+6
Ggiga10+9
Ttera10+12

Najważniejsze stałe i zmienne wbudowane do programu:
SymbolOpis
TCzas w sekundach
FCzęstotliwość w Hz
DCINPUT1Wartość zmiennej Variable 1 w symulacji stałoprądowej
EPodstawa logarytmu naturalnego, EXP(1) = 2.718281828
SCzęstotliwość zespolona = 2*PI*J
GMINMinimalna konduktancja podana w Global settings
PILiczba p=3.141592653589795
TEMPTemperatura układu w czasie symulacji w °C
VT1.3806226e-23*(273.15+TEMP)/1.6021918e-19=25.86419mV
w temperaturze TEMP=27°C (potencjał elektrokinetyczny)
JPierwiastek kwadratowy z -1 (jednostka urojona)
TminCzas początkowy symulacji czasowej
TmaxCzas końcowy symulacji czasowej
FminCzęstotliwość początkowa symulacji częstotliwościowej
FmaxCzęstotliwość końcowa symulacji częstotliwościowej
PGTCałkowita moc generowana w układzie
PSTCałkowita moc gromadzona w układzie
PDTCałkowita moc rozpraszana w układzie



Zmienne (Variables)

W przytoczonych definicjach zmiennych, symbole "A" i "B" reprezentują nazwy węzłów. Nazwami węzłów są:
a) numery węzłów przyporządkowane przez Micro-Cap,
b) nazwy tekstowe węzłów nadane przez użytkownika.
Tekstowe nazwy węzłów muszą zaczynać się od litery lub podkreślenia "_" i składać się maksymalnie z 50 znaków alfanumerycznych. Nie mogą zawierać odstępu. Zarezerwowane nazwy zmiennych oraz operatorów matematycznych nie mogą być używane jako nazwy węzłów. Duże i małe litery w nazwach zmiennych nie są rozróżniane.
Na przykład:
T, S, F, E, J, S, TEMP, VT, GMIN, PI, SIN, COS są nazwami zarezerwowanymi
A1, Out, _721, Reset są nazwami poprawnymi
B&&4, 734A są nazwami niepoprawnymi

Lista zmiennych:
Nazwa
zmiennej
OpisPrzykłady
D(A)Stan logiczny w węźle AD(2)
D(clock)
V(A)Potencjał węzła A
(napięcie względem masy)
V(1)
V(Out)
V(A,B)Napięcie pomiędzy końcówkami A i B
V(A,B)=V(A)-V(B)
V(16,1)
V(OUT,IN)
V(D)Napięcie na elemencie D
(spadek napięcia lub SEM źródła)
V(C1)
V(1N4148)
V(Lp)
I(D)Prąd płynący przez element DI(R1)
I(Vcc)
I(A,B)Prąd płynący przez element wyrażony
poprzez użycie węzłów A i B
I(2,3)
I(Out1,Out2)
IR(Q)Prąd płynący do końcówki "R" elementu QIC(2N2222A)
ID(m1)
VRS(Q)Napięcie pomiędzy końcówkami "R" i "S" elementu QVbe(2N2907)
Vgs(J308)
VApAm(T1)
CRS(Q)Pojemność pomiędzy końcówkami "R" i "S elementu QCbc(Q1)
Cgs(IRF710)
QRS(Q)Ładunek zgromadzony w pojemności
pomiędzy końcówkami "R i "S" elementu Q
Qeb(Qnpn)
qdg(B1)
R(R)Rezystancja rezystora Rr(r1)
R(Rload)
C(X)Pojemność kondensatora lub diody XC(1N914)
c(C4)
Q(X)Ładunek zgromadzony w kondensatorze lub diodzie XQ(1N4001)
q(C1)
L(L)Indukcyjność cewki lub rdzenia LL(Core1)
L(LP)
X(L)Strumień magnetyczny w cewce lub rdzeniu LX(3C8)
X(Lsec)
B(L)Indukcja magnetyczna w rdzeniu LB(3C4)
B(Core)
H(L)Natężenie pola magnetycznego w rdzeniu LH(801F)
H(core3)
TCzast
T
FCzęstotliwośćF
f
SCzęstotliwość zespolona = j×w = j×2×p×fS
s
RNDLiczba losowa (0<= RND <=1)RND
rnd
ONOISENapięcie szumów na węźle wyjściowymonoise
Onoise
INOISENapięcie szumów odniesione do węzła
wejściowego (ONOISE/wzmocnienie)
Inoise
INOISE
PG(V)Moc generowana przez źródło VPG(Vin)
Pg(v10)
PS(X)Moc gromadzona pojemnościowo lub indukcyjnie
w elemencie X
PS(C1)
Ps(Q1)
PD(D)Moc rozpraszana (tracona) w elemencie DPD(R1)
Pd(M1)
W powyższej tabeli "D" oznacza dowolny element dwókońcówkowy (dwójnik) lub źródło sterowane. "Q" oznacza dowolny element aktywny oraz linię długą.
Końcówki oznaczone jako "R" i "S" elementu "Q" wybiera się z poniższej tabeli:
ElementOznaczenie
końcówki
Nazwa końcówki
Tranzystor polowy MOSFETD,G,S,BDrain, Gate, Source, Bulk
Tranzystor polowy JFETD,G,SDrain, Gate, Source
Tranzystor GaAsFETD,G,SDrain, Gate, Source
Tranzystor bipolarny (BJT)B,E,C,SBase, Emitter, Collector, Substrate
Linia długaAP,AM,BP,BMPlus in, Minus in, Plus out, Minus out



Parametry modelu jako zmienne

Parametry modelu możesz wykorzystać na wykresach oraz w kalkulatorze, używając następującej składni:

PART_NAME.MODEL_PARAMETER_NAME

Przykłady:
Q1.BFwzmocnienie b tranzystora Q1 (bipolarnego - BJT)
M1.GAMMAparametr GAMMA tranzystora M1 (MOSFET)
J1.VTOUGS(off) tranzystora J1 (JFET)



Operatory arytmetyczne

+Dodawanie
-Odejmowanie
*Mnożenie
/Dzielenie
MODFunkcja modulo (reszta z dzielenia)
DIVDzielenie bez reszty



Operatory logiczne

Poniższe operatory logiczne stosuje się w wyrażeniach analogowych.
ANDiloczyn logiczny
NANDnegacja iloczynu logicznego
NORnegacja sumy logicznej
NOTnegacja logiczna
ORsuma logiczna
XORsuma modulo 2
Operatory logiczne przyjmują wartość 1.0 jeżeli wyrażenie jest prawdziwe lub 0.0 jeżeli wyrażenie jest fałszywe.


Operatory zespolone

DB(X)moduł wyrażenia X wyrażony w decybelach = 20*log(|X|)
RE(X)część rzeczywista wyrażenia X
IM(X)część urojona wyrażenia X
MAG(X)moduł wyrażenia X
PH(X)argument (faza) wyrażenia X w stopniach
GD(X)opóźnienie grupowe = Delta(phase of X)/Delta(frequency)



Operatory cyfrowe

A oznacza MSB. D oznacza LSB.
Te operatory są przeznaczone dla wyrażeń w układach cyfrowych do rysowania wykresów i są podobne do wyrażeń logicznych.
HEX(A,B,C,D)Wartość szesnastkowa stanów logicznych w węzłach A, B, C, D
BIN(A,B,C,D)Wartość dwójkowa stanów logicznych w węzłach A, B, C, D
DEC(A,B,C,D)Wartość dziesiętna stanów logicznych w węzłach A, B, C, D
OCT(A,B,C,D)Wartość ósemkowa stanów logicznych w węzłach A, B, C, D
+Suma dwóch wartości dwójkowych, ósemkowych, szesnastkowych lub dziesiętnych
-Różnica dwóch wartości dwójkowych, ósemkowych, szesnastkowych lub dziesiętnych
MODFunkcja modulo (reszta z dzielenia) dwóch wartości dwójkowych, ósemkowych, szesnastkowych lub dziesiętnych
DIVDzielenie całkowite dwóch wartości dwójkowych, ósemkowych, szesnastkowych lub dziesiętnych
&Funkacja AND stanów logicznych dwóch węzłów
|Funkacja OR stanów logicznych dwóch węzłów
^Funkacja XOR stanów logicznych dwóch węzłów
~Funkacja NOT stanów logicznych dwóch węzłów



Całkowanie i różniczkowanie

Poniższe funkcje są dostępne tylko przy programowaniu wykresów.
Względem dowolnej zmiennej
SUM(y,x[,start])Całkowanie wyrażenia "y": ňy×dx
Całkowanie rozpoczyna się dla x=start. Domyślnie, "start" przyjmuje wartość minimalną dla danej symulacji (tmin, fmin, dcmin), lub 0, w zależności od zmiennej całkowania x.
Względem zmiennej T, F lub DCINPUT1
SD(y[,start])Całkowanie wyrażenia "y": ňy×dx
x jest zmienną T, F lub DCINPUT1 w zależności od rodzaju symulacji. Parametr "start" - patrz SUM.
DD(y)Różniczkowanie numeryczne wyrażenia "y" - obliczanie pochodnej dy/dx
Zmienna x - patrz SD.
RMS(y[,start])Obliczanie wartości skutecznej RMS (root-mean-square) wyrażenia "y" względem T, F lub DCINPUT1 (w zależności od rodzaju symulacji).
Parametr "start" - patrz SUM.
AVG(y,[start])Obliczanie wartości średniej AVG (average) wyrażenia "y"
Uwagi - jak dla RMS.
Tylko względem zmiennej T (czas)
SDT(y)Całkowanie względem czasu ňy×dt
Całkowanie rozpoczyna się dla t=tmin.
DDT(y)Różniczkowanie numeryczne względem czasu, dy/dt
Inne
DEL(y)Zmiana wartości y od poprzedniego do bieżącego punktu danych
Wyrażenie DEL(y)/DEL(t) jest przybliżeniem pochodnej dy/dt.



Operatory relacji

Poniższe operatory należy stosować w wyrażeniach analogowych. Przyjmują wartość 1.0 jeżeli wyrażenie jest prawdziwe lub 0.0 jeżeli wyrażenie jest fałszywe.
Relacje:
!= lub <>różny<mniejszy
==równy>=większy lub równy
>większy<=mniejszy lub równy

MIN(x,y)Wartość mniejsza z "x" i "y"
MAX(x,y)Wartość większa z "x" i "y"
IF(b,x,y)Funkcja warunkowa. Przyjmuje wartości:
IF(b,x,y)=x jeżeli wyrażenie logiczne "b" jest prawdziwe
IF(b,x,y)=y jeżeli wyrażenie logiczne "b" jest fałszywe



Operatory przetwarzania sygnałów

HARM(u)Harmoniczne sygnału u
FFT(u)Transformata Fouriera sygnału u
IFT(S)Odwrotna transformata Fouriera widma S
REAL(S)Część rzeczywista widma S obliczonego przez FFT
IMAG(S)Część urojona widma S obliczonego przez FFT
MAG(S)Moduł widma S obliczonego przez FFT
PHASE(S)Argument (faza) widma S obliczonego przez FFT



Operatory trygonometryczne i logarytmiczne

funkcje trygonometryczne
SIN(x)sin(x), sinus, x w radianach
COS(x)cos(x), cosinus, x w radianach
TAN(x)tg(x), tangens, x w radianach
funkcje cyklometryczne
(odwrotne funkcje trygonometryczne)
ATN(x)arctg(x), arcus tangens
ARCTAN(x)arctg(x), arcus tangens
ATAN2(y,x)arctg(y/x), arcus tangens = ATN(y/x)
ASIN(x)arcsin(x), arcus sinus
ACOS(x)arccos(x), arcus cosinus
funkcje hiperboliczne
SINH(x)sinh(x), sinus hiperboliczny
COSH(x)cosh(x), cosinus hiperboliczby
TANH(x)tgh(x), tangens hiperboliczny
COTH(x)ctgh(x), cotangens hiperboliczny
odwrotne funkcje hiperboliczne
ATANH(x)artgh(x), area tangens
ACOSH(x)arcosh(x), area cosinus
ASINH(x)arsinh(x), area sinus
logarytmiczne
LN(x)ln|x|, logartm naturalny
LOG(x)log|x|, logarytm dziesiętny
LOG10(x)log|x|, logarytm dziesiętny
wykładnicze
EXP(x)exp(x)=e(x), exponens



Operatory różne

ABS(y)Wartość bezwzględna (moduł), |y|
SQRT(y)Pierwiastek kwadratowy, y1/2
SGN(y)Funkcja "znak":
SGN(y)=+1 jeżeli y>0
SGN(y)=-1 jeżeli y<0
SGN(y)=0 jeżeli y=0
POW(y,x)Potęga zespolona, yx
PWR(y,x)Potęga rzeczywista, yx
**Potęga, np. 5**2=25
RNDLiczba losowa z przedziału 0...1
STP(x)Funkcja skoku o amplitudzie = 1.0 (rozpoczęcie dla tłx)
IMPULSE(y)Funkcja impulsowa o amplitudzie = y i powierzchni = 1.0



Reguły stosowania wyrażeń

  1. Operatory relacji i operatory logiczne zwracają 1, jeżeli wyrażenie jest prawdziwe oraz 0, jeżeli wyrażenie jest fałszywe.
  2. Operatory RMS, AVG, Sum, SD, DD, SDT, DDT oraz DEL można stosować wyłącznie w wyrażeniach do rysowania wykresów.
  3. ONOISE i INOISE mogą być stosowane tylko w symulacji częstotliwościowej i nie mogą być mieszane z innymi zmiennymi.
  4. Podczas symulacji częstotliowościowej wszystkie obliczenia są wykonywane na wartościach zespolonych. Po zakończeniu obliczeń, na wykresie jest rysowany moduł wartości zespolonej.
    Na przykład V(1)*V(2) rysuje wykres modułu po wykonaniu mnożenia zespolonego. Natomiast wyrażenie IM(V(1)*V(2)) daje część urojoną, a wyrażenie RE(V(1)*V(2)) daje część rzeczywistą.
  5. Zmienna "czas", T, ma wartość zero podczas symulacji częstotliwościowej i stałoprądowej.
    Zmienna "częstotliwość", F, ma wartość zero podczas symulacji czasowej i stałoprądowej.
  6. Transmitancja definiująca źródło Laplace'a musi zawierać tylko jedną zmienną, S.
    Źródła Laplace'a nie można używać jako bloku o stałym wzmocnieniu.
  7. Następujące operatory wykonują działania na liczbach zespolonych (zespolonej częstotliwości):
    +, -, *, /, sqrt, pow, ln, log, log10, exp, cosh, sinh, tanh, coth, acosh, asinh, atanh, db, re, real, im, imag, mag, p, ph, phase, gd.
    Pozostałe operatory wykonują obliczenia tylko na liczbach rzeczywistych.
    Na przykład, jeżeli "z" jest zmienną zespoloną, to
    sin(z) wyliczany jest jako sin(RE(z)).
  8. Przed rozpoczęciem symulacji oraz przed wykonaniem listy połączeń netlist, Micro-Cap rozwija wszystkie wyrażenia ".define". Nie wolno stosować w wyrażeniach ".define" nazw parametrów modeli, np. w postaci
    .define BF 111
  9. Wyrażenia ".define" są rozwijane dosłownie, pod definiowaną nazwę jest podstawiany wprost tekst definiujący. Na przykład:
    .define a 4+c
    .define b a*x
    po rozwinięciu daje wartość b=4+c*x, a nie b=(4+c)*x.
    Natomiast
    .define a (4+c)
    .define b a*x
    po rozwinięciu da wartość b=(4+c)*x.



Przykłady wyrażeń cyfrowych

D(1) & D(2)Funkcja AND stanów logicznych węzła 1 i węzła 2
D(1) | D(2)Funkcja OR stanów logicznych węzła 1 i węzła 2
HEX(A1,A2,A3,A4) + HEX(B1,B2,B3,B4)Suma szesnastkowa liczb szesnastkowych
Pierwszy argument to wartość szesnastkowa stanów logicznych węzłów A1, A2, A3, A4
Drugi argument to wartość szesnastkowa stanów logicznych węzłów B1, B2, B3, B4
Wynik jest w postaci szesnastkowej.



Przykłady transmitancji operatorowych

1.0/(1.0+.001*S)Filtr dolnoprzepustowy.
1.0/(1.0+.001*S+1e-6*S*S)Filtr drugiego rzędu.
exp(-(s*C*(R+s*L))**0.5)Linia długa.
R, L i C reprezentują parametry rozproszone
linii na jednostkę długości i muszą być
również zdefiniowane na schemacie.



Przykłady źródeł funkcyjnych

exp(-T/.5)*sin(2*PI*10*T)Wykładniczo tłumione źródło sinusoidalne
o częstotliwości 10Hz.
-k*(v(p)-v(c)+mu*(v(g)-v(c)))**1.5Równanie prądowe triody.
v(p), v(c) i v(g) - odpowiednio potencjały
anody, katody i siatki.
Stałe "k" oraz "mu" muszą również być
zdefiniowane na schemacie.



Przykłady programowania kondensatorów

2pF/((1-V(p,n)/.7)**.5)Kondensator nieliniowy o pojemności zależnej od napięcia między węzłami "p" i "n" (np. pojemność złącza p-n)
5.0pF*(1+2e-6*T)Kondensator nieliniowy o pojemności zmiennej w czasie



Przykłady programowania rezystorów

5*(1+2*(TEMP-273.15)**2)Rezystor nieliniowy o rezystancji zależnej od temperatury
4.7K*(1+.3*V(P,M))Rezystor nieliniowy o rezystancji zależnej od napięcia V(P,M)



Przykłady programowania cewek

5*(1+2*(TEMP-273.15)**2)Cewka nieliniowa o indukcyjności zależnej od temperatury
2.6U*(1+(t-1e-7)**2)Cewka nieliniowa o indukcyjności zmiennej w czasie



Przykłady obliczania mocy i energii

V(VCC)*I(VCC)Moc chwilowa generowana przez źródło VCC
SUM(V(VCC)*I(VCC),T)Energia dostarczana przez źródło VCC



Przykłady różnych wyrażeń

DEL(I(L1))/DEL(T)Numeryczne różniczkowanie prądu cewki L1 względem czasu
SUM(V(Out),T)Numeryczne całkowanie napięcia w węźle Out względem czasu
SUM(V(OUT),T,5n)Numeryczne całkowanie napięcia w węźle Out w przedziale czasu od t=5ns do końca czasu sumulacji
JN(5,V(10),30)Obliczanie funkcji Bessela piątego rzędu pierwszego rodzaju
AVG(V(Out))Średnia wartość napięcia V(Out)
RMS(V(Out))Obliczanie wartości skutecznej napięcia V(Out)
DB(V(Out))Moduł napięcia V(Out) wyrażony w dB
5*(T>10ns AND T<20ns)Pojedynczy impuls prostokątny o amplitudzie 5V i czasie trwania od t=10ns do t=20ns
5*((T mod 50)>10 AND (T mod 50)<20)Impuls prostokątny 5V od t=10s do t=20s, powtarzany z okresem T=50s
IM(V(7))Część urojona napięcia zespolonego w węźle 7
MAG(VCE(Q1)*IC(Q1))Moduł zespolonej mocy AC w tranzystorze Q1




Opracował: Stanisław Pelczar PZNr10 SME Kęty