Dvojpóly#
Základné elektronické komponenty (R,L,C, dióda, zdroje …) sú v CircuitMacros reprezentované ako dvojpóly. Na ich pripojenie do elektrického obvodu sú použité dva uzly. Typ dvojpólu je určený menom a jeho vzhľad je možno meniť parametrami, Obr. 11. Pre každý dvojpól je možné v zapojení zadať jeho meno, hodnotu alebo typ a v prípade potreby aj označenie vývodov. Všeobecný formát makra pre zobrazenie dvojpólov má tvar
[reference:] object([linespec], [parameters ...]);
reference - označenie objektu pre prístup k jeho parametrom
object - typ dvojpólu (resistor, capacitor ...)
linespec - dĺžka prívodov a umiestnenie objektu
parameters - parametre určujúce tvar objektu
Pri použití makra bez parametrov sa vykreslí dvojpól v prednastavenom tvare.
Obr. 11 Príklady dvojpólov.#
Základné rozmery a tvar dvojpólov v knižniciach CircuitMacros sú zobrazené na obrázku Obr. 12. Rozmery objektu závisia od aktuálneho nastavenia parametrov prostredia, ktoré sú popísané v kapitole Prostredie.
Obr. 12 Rozmery dvojpólu a jeho atribúty.#
Vlastnosti dvojpólov potom popisujú nasledujúce parametre
premenné
dimen_ - veľkosť prvku určená na základe parametrov kresliacej plochy
elen_ - dĺžka vývodov prvku, štandardne 1.5*dimen_
atribúty
.start - súradnice začiatku vykresľovania prvku
.centre - súradnice stredu prvku
.end - súradnice ukončenia vykresľovania prvku
Definície najčastejšie používaných dvojpólov - rezistor, kondenzátor, cievka, dióda a zdroj sú uvedené v nasledujúcich kapitolách. Kompletný zoznam makier pre kreslenie dvojpólov a ich parametrov je v dokumentácii.
Rezistor #
Makro pre zobrazenie rezistora v CircuitMacros je možné parametrami upraviť pre zobrazenie rôznych typov príbuzných prvkov. Definícia makra pre vykreslenie rezistora
resistor(linespec, n, param, cwidth);
parametre:
linespec - dĺžka a umiestnenie rezistora
n - pocet cyklov rezistora v anglos. zobrazeni (default 3)
param - typ rezistora
E - box, európske označenie
ES - box prečiarknutý
Q - posunute anglos. zobrazenie
H - štvorcove zobrazenie - výkonovy rezistor
V - varistor
cwidth - rozmer cyklov rezistora v anglos. zobrazení
Makro bez parametrov vykreslí rezistor s prednastavenými hodnotami ako značku rezistora v anglosaskej notácii, Obr. 13.
R1: resistor; R2: resistor(3,6,); R3: resistor(,,Q); R4: resistor(,,H);
R5: resistor(,,E); R6: resistor(,,ES); R7: resistor(,,V); R8: resistor(3,,E,1.5);
Obr. 13 Vybrané typy rezistorov.#
Warning
Medzery pred parametrom makra sú ignorované, v niektorých prípadoch ale môžu byť medzery za parametrom pokladané za súčasť parametra makra. Je preto vhodné zadávať parametre makier bez medzier.
resistor(,, E ); # chyba, ignorovanie parametra E
resistor(,,E); # správne vykreslenie rezistora
Kondenzátor #
Kondenzátor je orientovaný dvojpól, preto okrem jeho typu môžeme parametrom Rev zvoliť jeho polaritu. Pomocou parametrov height a width môžeme upraviť veľkosť a vzdialenosť elektród.
capacitor(linespec, chars, [Rev], height, width)
parametre:
linespec - dĺžka a umiestnenie kondenzátora
chars - typ kondenzátoea
F or blank: flat plate
dF flat plate with hatched fill
C curved-plate
dC curved-plate with variability arrowhead
CP constant phase element
E polarized boxed plates
K filled boxed plates
M unfilled boxes
N one rectangular plate
P alternate polarized
+ adds a polarity sign
+L polarity sign to the left of drawing direction
Rev - reversed polarity
height - defaults F: dimen_/3, C,P: dimen_/4, E,K: dimen_/5
wid - defaults F: height*0.3, C,P: height*0.4, CP:height*0.8, E,K: height
Makro bez paramerov vykreslí kondenzátor s prednastavenými rozmermi, Obr. 14.
C1: capacitor; C2: capacitor(,C,); C3: capacitor(,E); C4: capacitor(,K);
C5: capacitor(,M,,0.75, 0.25);
C6: capacitor(,P); C7: capacitor(, CP); C8: capacitor(,+LC);
Obr. 14 Vybrané typy kondenzátorov.#
Cievka #
Pri cievke môžeme meniť tvar vinutia, počet závitov, ich veľkosť a môžeme k cievke pridať jadro, Obr. 15.
inductor(linespec, W|L, cycles, M|P|K, loop wid)
parametre:
linespec - dĺžka a umiestnenie cievky
W|L - (default narrow), W: wide, L: looped;
cycles - number of arcs or cycles (default 4);
M|P|Kn - M magnetic core
P powder (dashed) core,
K long-dashed core,
n=integer (default 2) number of corelines named M4Core1, M4Core2
loop width - default L, W: dimen_/5; other:dimen_/8
Obr. 15 Typy cievok.#
Dióda #
Dióda je orientovaný dvojpól. Parametrom Rev môžeme otočiť smer diódy. Doplnenie typu diódy písmenom K vykreslí nevyplnenú značku diódy, Obr. 16.
diode(linespec, chars, [Rev][E])
parametre:
linespec - dĺžka a umiestnenie diódy
chars - typ diódy
B bi-directional
b bi-directional with outlined zener crossbar
CR current regulator
D diac
G Gunn
L open form with centre line
LE[R]: LED [right]
P[R] photodiode [right]
S Schottky
Sh Shockley
T tunnel
U limiting
V varicap
v varicap (curved plate)
w varicap (reversed polarity)
Z zener
appending K to arg 2 draws open arrowheads;
Rev|E - Rev - reversed polarity, E - zobrazenie púzdra
Makro bez paramerov vykreslí diódu s prednastavenými rozmermi, Obr. 16.
D1: diode; D2: diode(,S,); D3: diode(,V); D4: diode(,v);
D5: diode(,U); D6: diode(,ZK); D7: diode(,T); D8: diode(,,R);
Obr. 16 Vybrané typy diód.#
Zdroje #
Nápájanie a zdroje napájania sú intergrálnou súčasťou takmer každého elektronicého zapojenia. V CircuitMacros sú definované makrá pre značky štandardných zdrojov ako aj pre batériové napájanie, Obr. 17 a Obr. 18.
source(linespec, chars, diameter, R, attrib, name)
parametre:
linespec - dĺžka a umiestnenie zdroja
chars - typ zobrazenia
AC AC source;
B bulb;
F fluorescent;
G generator;
H step function;
I current source;
i alternate current source;
ii double arrow current source;
ti truncated-bar alternate current source;
L lamp;
N neon;
NA neon 2;
NB neon 3;
P pulse;
Q charge;
R: ramp; S: sinusoid;
SC quarter arc, SCr right orientation;
SE arc, SEr right orientation;
T triangle;
U square-wave;
V voltage source;
X interior X;
v alternate voltage source;
tv truncated-bar alternate voltage source;
other: custom interior label or waveform;
diameter - priemer kruhu zdroja
R - reversed polarity;
attrib - parametre zobrazenia kružnice (farba, výplň ...)
names - text v strede kružnice
Najčastejšie používané značky zdrojov sú na obrázku Obr. 17.
Obr. 17 Značky zdrojov.#
Značku jednosmerného zdroja vytvoríme pomocou značky prázdneho zdroja a označenie doplníme pomocou makra DCsymbol(), podobnú funkciu má aj makro ACsymbol() pre označenie striedavých veličín. Pre jednosmerné zdroje môžeme použiť aj označenie pomocou makra battery().
DCsymbol(at position, length, height, U|D|L|R|degrees)
ACsymbol(at position, length, height, [n:][A]U|D|L|R|degrees)
parametre:
at position - umiestnenie značky
length - velkosť značky
height
U|D|L|R|degrees - orientácia
n: - počet vlnoviek pri AC značke
battery(linespec,m,R)
parametre:
linespec - dĺžka a umiestnenie zdroja
m - počet článkov batérie
R - otočenie polarity
Použitie makier ACsymbol() a DCsymbol() nie je viazané len na ich použitie so zdrojmi, Obr. 18, značku môžeme využiť aj pri označovaní veličín napr. na svorkách alebo konektoroch. Pretože makrá sa vzťahujú k stredu posledného objektu, pri použití v kombinácii s textom je vhodné text posunúť od stredu doľava pomocou “tvrdej” medzery \, pretože obyčajná medzera je pri renderovaní textu ignorovaná.
source; { ACsymbol(at last [],,,2:R) }
source; { DCsymbol(at last [],,,R) }
battery(,1,R);
battery(,3,); rlabel(,,+)
"5V \,\," at (Orig+(6,0.75)) rjust; ACsymbol(at last "" ,,,1:R)
"5V \,\," at (Orig+(6,1.25)) rjust; DCsymbol(at last "" ,,,R)
Obr. 18 Značky zdrojov s označením typu.#
Popis dvojpólov #
Pre popis dvojpólov sú definované podporné makrá llabel(), clabel(), rlabel() a dlabel() pre popis posledného uloženého prvku. Pre označenie je možné použiť syntax pre zápis matematických vzťahov LaTeX-u. Text popisu nemusí byť uzatvorený medzi znakmi $...$.
llabel( slabel, xlabel, elabel ) - označenie po lavej strane v smere ukladania
clabel( slabel, xlabel, elabel ) - označenie po pravej strane v smere ukladanie
rlabel( slabel, xlabel, elabel ) - označenie cez stred v smere ukladania
dlabel( long, lat, slabel, xlabel, elabel, [X][A|B][L|R])
- označenie s offsetom voči stredu
slabel - označenie v bode začiatku prvku
xlabel - označenie v strede prvku
elabel - označenie v bode konca prvku
long - pozdĺžna vzdialenosť od od určenej pozície
lat - kolmá vdialenosť od určenej pozície
X - stred prvku
A - above, text nad zadanou pozíciou
B - below, text pod zadanou pozíciou
L - ljust, zarovnanie textu doľava
R - rjust, zarovnanie textu doprava
Umiestnenie popisu zavisí od aktuálneho smeru ukladania komponentu. rlabel() ukladá text po pravej strane v smere ukladania, Obr. 19. V prípade potreby môžeme modifikovať aj font a veľkosť textu.
R1: resistor(,,); llabel(a,R_1,b);
C2: capacitor,,C); llabel( ,C_2, ); rlabel(, 10 \mu F, );
R3: resistor(,,E); llabel( ,R_3, ); clabel(, $\scriptsize{123}$, );
R4: resistor(,,E); dlabel(0.75, 0.35, aa ,R_4, bb ,X);
R5: resistor(,,E); dlabel(0.5, 0.3, aa ,R_5, bb ,L);
D6: diode(2); llabel( ,\sf D_6,); rlabel(,$\sf \footnotesize{ 1N4007 }$,);
Umiestňovanie dvojpólov #
Na pracovnej ploche môžeme umiestňovať dvojpóly niekoľkými spôsobmi:
Zadaním východzieho bodu kreslenia presunom kurzora:
move to pos; object([length], ... );
Zadaním polohy stredu dvojpólu, smeru a velkosti:
object( at pos [dir [length]], ... );
Zadaním smeru, veľkosti objektu a polohy východzieho bodu:
object( [dir] [lenght] from pos, ... );
Pokračovaním od koncového bodu predchádzajúceho objektu:
object(dir [length], ... );
Zadaním koncových bodov dvojpólu:
object(from pos_A to pos_B);
Pomocou makier pre definovanie smeru ukladania objektov:
Point_(degrees); object; point_(radians); object; rpoint_(rel linespec); object
Príklady použitia sú na obrázku Obr. 20.
move to (1,2.5); resistor(2); # (1)
resistor(at (2,1.5) right_ 2,,E); # (2)
resistor(right_ 2 from (1,0.5)) # (3)
move to (4,2.5);
RA: resistor(right_ 2);
RB: resistor(down_ 2); # (4)
resistor(from RA.start to RB.end); # (5)
move to (7, 1.5);
Point_(45); resistor; # (6)
Point_(-45); resistor;
move to (7,0);
rpoint_(up_ 1 right_ 3); resistor;
Obr. 20 Príklady umiestňovania dvojpólov.#
Modifikácie dvojpólov #
Premenné prvky #
Pre zobrazenie premenných prvkov môžeme využiť makro variable().
variable(‘element’,[A|P|L|[u]N]|[u]NN]][C|S],[+|-]angle,length)
variable(,[A|P|L|[u]N]|[u]NN]][C|S],[+|-]angle,length)
parametre:
element - meno makra prvku, na ktorom bude vykreslený typ zmeny
[A|P|L|[u]N]|[u]NN]][C|S]
- označenie typu zmeny
A - šipka
P - potenciometer
L - čiara
N - parametrická zmena
uN
uNN
C|S - značka parametra
[+|-] angle - uhol a smer označenia zmeny,
length - dĺžka označenia
Makro môžeme použiť dvoma spôsobmi, Obr. 21:
s prvým argumentom, v ktorom zadáme makro s parametrami prvky, ktorý chceme označiť ako premenný,
makro použijeme podobne ako makrá na popis prvkov llabel() …, v tomto prípade ponecháme prvý argument prázdny.
move to (0,0) variable(`R1: resistor(right_ 2,,)',A); llabel(,R_1,); rlabel(a,10,b) R2: resistor(right_ 2,,E); variable(,P); llabel(,R_2,); rlabel(,100,); move to (1,1) V1: source(up_ 2, AC); variable(,A,,1.5); llabel(,V_1,); move to (3,1) C1: capacitor(up_ 2); rlabel(,C_1,); variable(,N,,);
Obr. 21 Zobrazenie premenných prvkov.#
Zdrojový kód
.PS
pi=3.14159265359
# parametre z PIC (resp. GNU PIC)
scale = 2.54 # cm - jednotka pre obrazok
maxpswid = 30 # rozmery obrazku
maxpsht = 30 # 30 x 30cm, default je 8.5x11 inch
cct_init # inicializacia lokalnych premennych
arrowwid = 0.127 # parametre sipok - sirka
arrowht = 0.254 # dlzka
include(lib_base.ckt)
Origin: Here
move to (0,0)
variable(`R1: resistor(right_ 2,,)',A); llabel(,R_1,); rlabel(a,10,b)
resistor(right_ 2,,E); variable(,P); llabel(,R_2,); rlabel(,100,);
move to (1,1)
source(up_ 2, AC); variable(,A,,1.5); llabel(,V_1,);
move to (3,1)
capacitor(up_ 2); rlabel(,C_1,); variable(,N,,);
.PE
V analogových zapojeniach bývajú premenné prvky (potenciometre, trimre, kondenzátory) zobrazené s fyzickým zapojen9m vývodov súčiastok tak, ako je to zobrazené na nasledjúcom obrázku. Pri ladiacich kondenzátoroch je zobrazený aj ich vzájomný mechanický súbeh, Obr. 22.
Obr. 22 Použitie premenných prvkov v zapojení rádia s integrovaným obvodom, zdroj Amatérske rádio 1970/9.#
Pre zobrazenie upravených premenných prvkov tak ako sú použité v predchádzajúcom zapojení sú v knižnici lib_user definované makrá vres_v() a vcap_v(), Obr. 23.
Obr. 23 Zobrazenie upravených premenných prvkov z knižnice lib_user.#
Nasledujúci skript zobrazuje časť zapojenia z predchádzajúceho obrázku Obr. 23, pretože rezistory v zapojení sú mierne dlhšie ako štandardné rezistory v CircuitMacros, bolo pre ich zobrazenie definované nové makro res(), Obr. 24.
define(`res', `ebox($1, 0.8);')
Obr. 24 Použitie premenných prvkov v časti zapojenia rádia.#
Zdrojový kód
.PS
pi=3.14159265359
# parametre z PIC (resp. GNU PIC)
scale = 2.54 # cm - jednotka pre obrazok
maxpswid = 30 # rozmery obrazku
maxpsht = 30 # 30 x 30cm, default je 8.5x11 inch
cct_init # inicializacia lokalnych premennych
arrowwid = 0.127 # parametre sipok - sirka
arrowht = 0.254 # dlzka
include(lib_base.ckt)
include(lib_user.ckt)
VR1: vres_v(1.5,V,R); "\sf 50k" at VR1.w below; {line from VR1.n left_ 1;}
gnd(0.1) at VR1.R.end
line from VR1.S right_ 0.5; DT1: dot;
line 0.25; Q0:circle rad 0.08
T1: bjt_NPN(1.5,0.8,,N) with .B at last circle.e;
Q1: circle with .n at T1.E rad 0.08;
DT2: dot(at T1.C)
T2: bjt_NPN(0.6,,,N); line from T2.E to (T2.E, Q1.n)
Q2: circle with .n at last line.end rad 0.08;
line from T2.C right_ 0.5;
Q3: circle rad 0.08;
down_; move to Q2.s; gnd(0.5);
res(from DT1 up_ 3, E); llabel(,\sf M1,)
VR2: vres_v(1.75,P,L); "\sf 1M" at VR2.w;
res(from DT2 up_ 1.75, E); rlabel(,\sf 3k5,)
DT3: dot; {line left_ 3; }; line 0.5;
Q4: circle rad 0.08;
line up_ 0.5; DT4: dot;
{res(right_ 1.5); llabel(,\sf 350,); gnd(0.25, R); }
res(up_ 1.5); llabel(,\sf 1k,); DT5: dot;
line from VR2.n to (VR2, DT5); DT6: dot;
right_;res(from DT5 to DT6,E); llabel(,\sf 330,)
capacitor(from DT6 left_ 1.2,+K,, 0.4, 0.25); llabel(,\sf 50M,); gnd(.15,L);
line from DT5 right_ 2;
# IC MAA325 box
line from Q1.w to (Q0,Q1) then to Q0.s dashed;
line from Q0.n to (Q0,Q4) then to Q4.w dashed;
line from Q4.e to (Q3,Q4) then to Q3.n dashed;
line from Q3.s to (Q3,Q2) then to Q2.e dashed;
line from Q2.w to Q1.e dashed;
.PE
Prúd dvojpólom #
Pre zobrazenie šípky ktorá reprezentuje prúd v prívode prvku môžeme použiť makro b_current().
b_current(label, above_|below_, In|O[ut], Start|E[nd], frac);
parametre:
label - označenie veličiny (prúd ...)
above_ - poloha označenia
below_
In - smer šípky
Out
Start - súradnica dvojpólu, voči ktorej bude vykreslená šípka a jej smer
End
frac - posun šípky voči zadanej súradnici (Start | End)
Pre znázornenie prúdu vetvou obvodu môžeme zadefinovať podobné makrá l_current() a r_current(), ktoré vykreslia šípku v čiare medzi jej koncovými bodmi, Obr. 25.
l_current(label, above_|below_, frac)
r_current(label, above_|below_, frac)
parametre:
label - označenie veličiny (prúd ...)
above_ - vertikálna poloha označenia
below_
rjust_ - horizontálna poloha označenia
ljust_
frac - poloha šípky medzi koncovými bodmi 0..1, 0.5 - stred
Nasledujúci príklad ukazuje označenie prúdu prvkom a vetvou obvodu. Makrá l_current() a r_current() sú implementované v knižnici lib_user.ckt ako vetvy, neovplyvňujú hodnotu kurzoru Here.
define( `l_current', `{
S: last line .start;
E: last line .end;
ifelse(defn(`p'), $3, p=0.5, p=$3)
C: p between S and E;
line -> from C+(-arrowht/2,0) left_ 0.01;
"$ $1 $" at C $2;
}')
R1: resistor(right_ 3,,E);
llabel(,R_2,); rlabel(,100,);
b_current(i_{12} );
R1: resistor(right_ 3 at (2.5, 2),,E) ;
llabel(,R_2,); rlabel(,100,);
b_current(i_{34}, below_, Out, End, 0.45 );
L1: line from (5,0.5) to (8,0.5) "L1" above;
l_current(i_{56}, above_, 0.25 );
L2: line from (5,2) to (8,2) "L2" above;
l_current(i_{78}, below_, 0.75 );
Obr. 25 Zobrazenie prúdu rezistorom a vetvou obvodu.#
Zdrojový kód
.PS
pi=3.14159265359
# parametre z PIC (resp. GNU PIC)
scale = 2.54 # cm - jednotka pre obrazok
maxpswid = 30 # rozmery obrazku
maxpsht = 30 # 30 x 30cm, default je 8.5x11 inch
cct_init # inicializacia lokalnych premennych
arrowwid = 0.127 # parametre sipok - sirka
arrowht = 0.254 # dlzka
include(lib_base.ckt)
include(lib_user.ckt)
Origin: Here
Grid(9, 2.5)
move to (1,0.5)
R1: resistor(right_ 3,,E);
llabel(,R_2,); rlabel(,100,);
b_current(i_{12} );
R1: resistor(right_ 3 at (2.5, 2),,E) ;
llabel(,R_2,); rlabel(,100,);
b_current(i_{34}, below_, Out, End, 0.45 );
L1: line from (5,0.5) to (8,0.5) "L1" above;
r_current(i_{56}, above_, 0.25 );
L2: line from (5,2) to (8,2) "L2" above;
r_current(i_{78}, below_, 0.75 );
.PE
Napätie na dvojpóle #
Úbytok napätia na prvku znázorňujeme šipkou umiestnenou paralelne s prvkom. Pre zobrazenie môžeme využiť štandarný príkaz line -> … alebo makrá larrow() a rarrow().
larrow(label, direction);
rarrow(label, direction);
parametre:
label - označenie veličiny (napätie ...)
direction - smer šipky zadaný ako <- alebo ->
Použitie makier ukazuje nasledujúci príklad, Obr. 26.
S1: source(up_ 2.5, AC); larrow(V_{0}, <-); b_current(i_0, ,Out, End, 0.45 );
R1: resistor(right_ 2.5,, E); larrow(V_{1}, ->); rlabel(,R_1,);
dot; {tconn(1.5,O); "1" ljust;}
R2: resistor(down_ 2.5,, E); larrow(V_{2}, ->); rlabel(,R_2,)
dot; tconn(right_ 1.5,O); "2" ljust;
line to S1.start;
Obr. 26 Zobrazenie úbytku napätia na rezistoroch.#
Zdrojový kód
.PS
pi=3.14159265359
# parametre z PIC (resp. GNU PIC)
scale = 2.54 # cm - jednotka pre obrazok
maxpswid = 30 # rozmery obrazku
maxpsht = 30 # 30 x 30cm, default je 8.5x11 inch
cct_init # inicializacia lokalnych premennych
arrowwid = 0.127 # parametre sipok - sirka
arrowht = 0.254 # dlzka
include(lib_base.ckt)
Origin: Here
move to (1,0.5)
up_
S1: source(2.5, AC); larrow(V_{0}, <-); b_current(i_0, ,Out, End, 0.45 );
R1: resistor(right_ 2.5,, E); larrow(V_{1}, ->); rlabel(,R_1,);
dot; {tconn(1.5,O); "1" ljust;}
R2: resistor(down_ 2.5,, E); larrow(V_{2}, ->); rlabel(,R_2,)
dot; {tconn(right_ 1.5,O); "2" ljust;}
line to S1.start;
.PE