on-line documentation
Instructions

Warning! Before, during and after solving a problem with Symbulator, be sure to turn your brain "ON". Symbulator will symbulate the circuit for you with ease, accuracy and speed, but you have to describe the circuit well, and ask for the right answers. Know what you're doing and why you're doing it. Think when you use Symbulator, pay attention to your teacher and practice a lot at home with a good textbook before your tests!  Ok? And quit playing games in your calculator... instead, buy a GameBoy! Hum!

Notice! I have good news and bad new.

Good news 1. The Symbulator is fully documented. The Impala Mode, the Expert Mode and every other detail of its capacities are explained in the complete reference for this software: The Symbulator Book, which comprises 12 chapters, has already been finished.

Bad news. The Symbulator Book is complete only in Spanish.

Good news 2. You can download the first half of The Symbulator book here: Notice, Preface, Chapter 1, Chapter 2, Chapter 3, Chapter 4, Chapter 5, Chapter 6. You will have to install this Fonts in your PC Font folder. We all need to thank Tim Hutcheson and Doug Burkett for translating the first 4 chapters, and Logan for translating the next two.

Good news 3. For the rest of it, the online documentation that is available in this site, should do the trick. It is not half as detailed as The Symbulator Book, but it is in English.

In the future, I hope I can complete the translation of this book.

Here are the instructions on how to describe a circuit, symbulate it and retrieve the answers using Symbulator.

After you've read all these instructions, please check out the examples section to get a deeper understanding. There are three steps in any circuit simulation (with any circuit simulator):

  1. Describe the circuit.

  2. Simulate the circuit.

  3. Retrieve the answers.

In Symbulator, depending on the case, these three steps can be typed separately or in one line.


Describe the circuit

Name each node and element in the circuit (you may write down these names in the paper circuit drawing, in order to remember them later). Then describe the circuit in a matrix-like string. You may store this string in a variable, for example one called cir.

The circuit description must follow this notation (the reason for the 0's is explained below):

Element Description in Symbulator Additional comment
Resistor r#,node1,node2,realvalue,0 This element's value is assumed to be in ohms. It can be a number (e.g. 3.4) or it can be a variable (e.g. r3).
Impedance r#,node1,node2,complexvalue,0 This element's value should be complex and is assumed to be in ohms.  It can be a number (e.g. 3.4+2.5*i) or it can be a variable (e.g. r3_). Notice the _ after the variable to indicate it is complex. This is not an obligation in must cases, but is a healthy habit.
Voltage source e#,+node,-node,value,0 This element's value is assumed to be in volts. The current in this source is defined from +node to -node. Values of sources in AC analysis should always be complex valued phasors, not time dependent functions. The instructions to describe dependent source are presented below.
Current source j#,node1,node2,value,0 This element's value is assumed to be in amperes. The current in this source is defined from node1 to node2. Values of sources in AC analysis should always be complex valued phasors, not time dependent functions. The instructions to describe dependent source are presented below.
Short circuit s#,node1,node2,0,0 You can know the current through it.
Inductance l#,node1,node2,value,initialCurrent This element's value is assumed to be in henrys. This element behaves as short circuit in DC analysis.
Mutual inductance m#,1stInductorName,2ndInductorName,value,0 The mutual inductance value should be entered in henries. Any k value must be translated to henrys using the formula H=k*sqrt(L1*L2).
Capacitance c$,+node,-node,value,initialVoltage This element's value is assumed to be in farads. Behaves as open circuit in DC analysis.
Ideal Op. Amp. o#,+node,-node,outnode,0  
Ideal Transformer t#,node1,node2,N1,N2 Does not defines inductances. Node1 and node2 are the upper nodes of transformer, and lower node of both sides is reference node 0.
Impedance parameters two-port z#,node1,node2,0,0 Node1 and node2 are the upper nodes of the two-port, and lower node of both sides is reference node 0. This element uses the following variables: z#11,  z#12,  z#21,  z#22. This variables may have stores values.
Admittance parameters two-port y#,node1,node2,0,0 Node1 and node2 are the upper nodes of the two-port, and lower node of both sides is reference node 0. This element uses the following variables: y#11,  y#12,  y#21,  y#22. This variables may have stores values.
Hybrid parameters two-port h#,node1,node2,0,0 Node1 and node2 are the upper nodes of the two-port, and lower node of both sides is reference node 0. This element uses the following variables: h#11, h#12, h#21, h#22. This variables may have stores values.
Gain parameters two-port g#,node1,node2,0,0 Node1 and node2 are the upper nodes of the two-port, and lower node of both sides is reference node 0. This element uses the following variables: g#11,  g#12,  g#21,  g#22. This variables may have stores values.
Transmission or ABCD parameters two-port a#,node1,node2,0,0 Node1 and node2 are the upper nodes of the two-port, and lower node of both sides is reference node 0. This element uses the following variables: a#11,  a#12,  a#21,  a#22. This variables may have stores values.
Inverse transmission two-port b#,node1,node2,0,0 Node1 and node2 are the upper nodes of the two-port, and lower node of both sides is reference node 0. This element uses the following variables: b#11, b#12, b#21, b#22. This variables may have stores values.

Warning! Since all rows in a matrix must have the same number of terms, you must fill with zeroes the remaining spaces in the description of an element until you have all rows of equal lenght. The row size of circuits description will be, therefore, determined by the largest element you describe. Some analysis, such as FD and TR, require 5 elements-per-row descriptions, and will return Dimention or Syntax errors when you try to use them with 4 elements-per-row descriptions. On the other hand, DC and AC allow you to use 4 elements-per-row, as long as there are not ideal transformers in the circuit, which require 5 elements to be described. Therefore...

Suggestion! Unless you are an expert user, I strongly recommend you to use 5 elements-per-row descriptions at all times. So fill with 0's until the row has 5 elements, as shown in the table above.

About the names you should not use

You should avoid using the following variables in your circuit description (you should also erase all these variables before any analysis).

Do not use...

...because

variables that begin with greek letters

they are used internally in the program

variables that begin with i, v, p and s

they are used by Symbulator to store answer values or expressions

variables with "floor" string in their name

Symbulator may be confused by them

variables rc,xc, yc, zc,tc,ok, those between c1 and c99 and any other TI-89 reserved variable (they are listed in the manual)

they are reserved variables in TI-89

About node labeling

Warning! There must always exist at least one 0 node in the circuit description. Be sure to label one node as 0, because otherwise SCS will stop the calculations and tell you to do so.

Reference node (ground) must always be labeled 0. The rest of the nodes receive each one a label. Node label may be a number or a name. The following are examples of valid node labels:

0, 1, 2, 3, 4

0, node1, xnode, mynode

About element labeling

Each element should receive a label, which first letter corresponds to its type. The rest of label, after the first letter, may be a number or a name. The following are examples of valid element labels:

r1, l2, cq, e4, j5, s6, o7, t2, yp, zw, hd

rwhite, lgreen, cbig, ealtern, jpretty, sxyz, opamp1, transfo, yparam, zport, hport

About passive element values

The values of all elements may be numerical or symbolical. For example, resistor values may be:

1000, rvalue, res, 2*q-3, 2*g+3*i

If you want to describe an impedance, use a resistor and give it a complex value. The following is an example on how to describe an impedance:

[r1,1,0,4+3*i,0]

[r1,1,0,rz_,0]

Inductors and capacitors can have also numeric or symbolic values. You do not have to define inductors and capacitors values as L*s or 1/(C*s), or as 3*i or 1/(3*i) since the programs in SCS performs this task for you.

About active element values

Independent:

Values of independent voltages or current sources in dc() should be real, such as:

120, 10*k-3

In fd() and tr() these values may be real numerical, symbolical or time dependent algebraic expressions  such as:

120, 35*t+2, 120*sin(60*t)*e^(-2*t)

Values of independent voltages or current sources in ac() must be phasors (whether numerical or symbolical), such as:

120, 100+20*i, realPart+imagPart*i

Dependent: Simulation of dependent sources has never been so easy. Values of dependent voltages or current sources may also have symbolical or algebraic expressions as values. Of course, they include in their value the name of the variable in which they depend. For example: A voltage or current source that depends on the voltage of node 3 will have a value like this one:

150*v3

And a voltage or current source that depends on the current in resistor r2 will have a value like this one:

150*ir2

In the examples section you’ll see a clear example on how to describe a circuit (and simulate it) when it contains dependent sources. It is really easy!

Warning! Be sure that the variables used to define dependencies are not previously defined. For example, if you want to define a dependent source with 150*v3, be sure that v3 is not defined in current folder. Otherwise, the simulation will fail and corrupt the answers.

Several circuit description examples will be given in the examples section.

Important Notice on Sources!

1) In AC analysis, sources are assumed to be complex, and should be valued with phasors.

2) In FD and TR analysis, if the source is:

a) a time-dependant source, you should define it as a function of time, example 9*exp(-2*t)*sin(3*t) or A*exp(-B*t)*sin(C*t)

b) a constant-valued source (battery), you should define it as whether a number example, 10, or a symbolic variable followed by *u(t), example e*u(t),

c) a dependant source, you should write its value naturally, just as you would in DC or AC, example 2.5*ir2


Simulate the circuit

If you have stored your circuit description in a variable, let's say one called cir, run the program that fits the analysis you need.

  • To perform a direct current analysis, type: sq/dc(cir)

  • To perform a frequency domain analysis, type: sq/fd(cir)

  • To perform a transient analysis, type: sq/tr(cir)

  • To perform an alternating current analysis, type: sq/ac(cir,w) (w is radial frequency value in rad/s)

You can also join the description and simulation step in one, as follows:

As you can see, to execute a program in Symbulator, you can place either the name of the variable in which you stored the circuit description, or you can place the circuit description itself. The same for radial frequency: you can type the value of radial frequency or the name of the variable in which the value of radial frequency is stored.

Suggestion! If you are only interested in a few answers from the transient analysis of a rather big circuit, then you can use a trick to save up to 75% of time. Interested? Click here!


Retrieve the answers

Retrieve the answers you want. At the end of the program (if the circuit description was correct) you'll find stored in variables the value of voltage in each node, the current through each device and the power in each device.  It is easy! You can use VAR-LINK to see this answers or just type the name of the variable in the entry line.

Analysis Answers stored in variables
Direct current dc() The voltage of each node is stored in a variable called v#, where # is the label of the node.

The current through each element is stored in a variable called i#, where # is the label of the element.

The voltage drop through each element is stored in a variable called v#, where # is the label of the element.

The power consumed by each element is stored in a variable called p#, where # is the label of the element.

If the circuit does not include ideal transformers, a matrix of 4 columns can be used instead of a matrix of 5 columns, because the fifth column would be filled with useless 0's.

Alternating current ac() The voltage of each node is stored in a variable called v#, where # is the label of the node.

The current through each element is stored in a variable called i#, where # is the label of the element.

The voltage drop through each element is stored in a variable called v#, where # is the label of the element.

The complex power in each element is stored in a variable called s#, where # is the label of the element.

If the circuit does not include ideal transformers, a matrix of 4 columns can be used instead of a matrix of 5 columns, because the fifth column would be filled with useless 0's.

Frequency domain fd() The voltage of each node is stored in a variable called v#, where # is the label of the node.

The current through each element is stored in a variable called i#, where # is the label of the element.

Here you must always use matrix of 5 columns to describe the circuit.

Transitory analysis tr() The voltage of each node is stored in a variable called v#, where # is the label of the node.

The current through each element is stored in a variable called i#, where # is the label of the element.

Here you must always use matrix of 5 columns to describe the circuit.

The current through any element is always defined from +node to -node. So is voltage drop.

If the power is positive, it is consumed. If the power is negative, it is delivered (this happens in most sources).

Symbolic Circuit Simulator by Roberto Perez-Franco