Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Ngspice Capacitor Simulation problem

  1. Jul 1, 2012 #1
    I intend to use circuit simulation (namely ngspice because it runs on linux) to aid me through electric circuit studies.

    However, I recently encountered a problem in a circuit I was simulating: the plots were not logical - a capacitor was taking no time to reach its maximum voltage.

    At first I thought it was only my machine so I tried it on PSPICE and on ngspice online simulator, which yielded the plot attached with the following netlist:
    Code (Text):

    A simple RC circuit
    V0 n1 GND DC 12V
    R1 n2 GND 10k
    C2 n1 n2 10F
    Is the netlist wrong?
    I found that the following netlist does model the capacitor alright, but the first I generated with a circuit designer application (gEDA) and the second I based on a website example.

    Working netlist:
    Code (Text):

    Test circuit
    V0 n1 GND DC 10V
    R1 n1 n2 3.3k
    C2 n2 GND 47uF

    Attached Files:

  2. jcsd
  3. Jul 1, 2012 #2
    Your netlist is not wrong, it describes a high-pass filter (the second one is a low-pass filter). But you're plotting the voltage of the ideal voltage source when it turns on. Add some internal resistance to it and see what happens.
  4. Jul 1, 2012 #3


    User Avatar
    Science Advisor

    Try removing the F from the 10 Farad capacitor. Just leave it as 10.

    The simulator knows that the unit of capacitance is Farads, but it looks for modifiers like "k" or "μ" after the number.

    It would assume you mean "femto" if you put an F there.
  5. Jul 2, 2012 #4
    As mentioned before, the circuit as you have it is a high pass filter. If you want to do AC simulation, you can go to www.ngspice.com and the following in the netlist textbox:

    A simple RC circuit
    V0 n1 GND DC 12V AC 1V
    R1 n2 GND 10k
    C2 n1 n2 10F

    .AC DEC 10 1 1e10


    and then "db(v(n2))" in the plot textbox. You'll get a plot with high pass filter response, but with the pole at very high frequency. This is because your capacitor is really small--10 femto farads (10e-15). If you don't have the "F" then you'd end up with 10 farads--a much larger value than you may want also.

    To see a transient step response of the capacitor, put the following into the netlist textbox:

    A simple RC circuit
    V0 n1 GND DC 12V AC 1V
    R1 n2 GND 10k
    C2 n1 n2 10n

    .ic v(n2)=12V

    .TRAN 100n 500u


    and then "v(n2)" into the plot textbox. Here I used a 10nF capacitor and an initial condition on v(n2) so that you could see it transition from 12V to GND.
  6. Jul 2, 2012 #5
    I'm sorry I have been trying to reply this post for hours but my internet just keeps dying. Thanks for your answers, they are appreciated much!

    gnurf: I have not researched on how to add an internal resistance to a source but the resistor present in the circuit (between nodes n2 and GND) does the same role.

    vk6kro: I would say you have nailed the problem! Because I had estimated a time constant for the circuit with 10 Farads, the time interval and time step I was taking were useless for a 10 fF capacitor, which ngspice was interpreting.

    ngspice.com: I was trying to do a transient analysis, but the other simulation tips you provided may prove useful for me in the future or for some other thread visitor!

    Thanks for your answers. We can consider this thread closed from now on.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook