Error singular al poner una fuente de corriente en serie con un condensador (ngspice)

3

Recibo errores singulares cuando simulo una fuente de corriente en serie con un condensador con el siguiente archivo .cir:

* Spice netlister for gnetlist
C1 1 0 1
I1 1 0 1
.TRAN 100u 6m

(Entiendo que un faradio es enorme, solo para facilitar los números. He probado valores de condensadores más pequeños, pero no han ayudado).

Basado en mi análisis,

I = C*(dV/dt)

Integrante, espero

V = (I*t)/C.

Por lo tanto, esperaría un aumento de voltaje en el rango de mV a lo largo del tiempo cuando graficé v (1), pero aparece el siguiente error en la parte inferior de este mensaje. Cuando cambio el C1 en un R1, no se observa ningún error. ¿Qué está pasando?

Doing analysis at TEMP = 27.000000 and TNOM = 27.000000

Warning: singular matrix:  check nodes 1 and 1

Note: Starting dynamic gmin stepping
Trying gmin =   1.0000E-03 Note: One successful gmin step
Trying gmin =   1.0000E-04 Note: One successful gmin step
Trying gmin =   1.0000E-05 Note: One successful gmin step
Trying gmin =   1.0000E-06 Note: One successful gmin step
Trying gmin =   1.0000E-07 Note: One successful gmin step
Trying gmin =   1.0000E-08 Note: One successful gmin step
Trying gmin =   1.0000E-09 Note: One successful gmin step
Trying gmin =   1.0000E-10 Note: One successful gmin step
Trying gmin =   1.0000E-11 Note: One successful gmin step
Trying gmin =   1.0000E-12 Note: One successful gmin step
Trying gmin =   1.0000E-12 Note: One successful gmin step
Warning: singular matrix:  check nodes 1 and 1

Warning: Dynamic gmin stepping failed
Note: Starting source stepping
Supplies reduced to   0.0000% Warning: singular matrix:  check nodes 1 and 1


Trying gmin =   1.0000E-02 Note: One successful gmin step
Trying gmin =   1.0000E-03 Note: One successful gmin step
Trying gmin =   1.0000E-04 Note: One successful gmin step
Trying gmin =   1.0000E-05 Note: One successful gmin step
Trying gmin =   1.0000E-06 Note: One successful gmin step
Trying gmin =   1.0000E-07 Note: One successful gmin step
Trying gmin =   1.0000E-08 Note: One successful gmin step
Trying gmin =   1.0000E-09 Note: One successful gmin step
Trying gmin =   1.0000E-10 Note: One successful gmin step
Trying gmin =   1.0000E-11 Note: One successful gmin step
Trying gmin =   1.0000E-12 Note: One successful gmin step
Note: One successful source step
Supplies reduced to   0.1000% Warning: singular matrix:  check nodes 1 and 1

Supplies reduced to   0.0000% Warning: singular matrix:  check nodes 1 and 1

Warning: source stepping failed

Transient solution failed -

Last Node Voltages
------------------

Node                                   Last Voltage        Previous Iter
----                                   ------------        -------------
1                                                 0                    0


doAnalyses: iteration limit reached

run simulation(s) aborted
    
pregunta Coder

4 respuestas

1

Muchos simuladores de circuitos intentan encontrar un punto de operación de CC antes de ejecutar un análisis transitorio. Básicamente, reemplazan los inductores con cortocircuitos y condensadores con circuitos abiertos y luego resuelven el circuito restante.

Su circuito no tiene un punto de CC estable (fuente de corriente de circuito abierto) y este proceso falla. Por lo general, hay una manera de indicar al simulador que omita el paso de inicialización y especifique las condiciones de inicio (por ejemplo, Vcap = 0V) explícitamente.

    
respondido por el Dave Tweed
1

Las simulaciones de SPICE comienzan por encontrar un d.c. solución en t = 0. En d.c. la corriente a través de un capacitor es cero, por lo que no hay solución para una fuente de corriente que no sea cero en serie con un capacitor. Cambie su fuente de corriente constante a una fuente que tenga un valor inicial de 0.0A y luego aumente rápidamente hasta el valor deseado.

    
respondido por el Joe Hass
1

Otra solución alternativa sería agregar una resistencia de alto ohmio en paralelo al capacitor, tal vez 1M o 1G o menos. Experimente un poco (lo mismo ocurre con la respuesta de @Joe Hass) y vea cuánto cambia (o qué poco) el resultado.

    
respondido por el jippie
0

Utilice la declaración .IC.

Declaración .IC Esta declaración proporciona una forma alternativa de especificar las condiciones iniciales de los nodos (y, por lo tanto, sobre los capacitores).

 .IC Vnode1 = value Vnode2 = value etc.

entonces .IC V (1) = 0

* Spice netlister for gnetlist
C1 1 0 100UF
I1 1 0 0.5
.IC V(1)=0
.OP
.TRAN 100u 6m
.print tran V(1,0) 
.end

Y el resultado es

  

ejecutar simulación (es) abortada                            * spice netlister para gnetlist

     

Análisis de transitorios sábado 27 de febrero 12:05:49 2016

Tiempo de índice v (1)

0 0.000000e + 00 0.000000e + 00
1 6.000000e-07 -3.00000e-03
2 1.200000e-06 -6.00000e-03
3 2.400000e-06 -1.20000e-02
4 4.800000e-06 -2.40000e-02
5 9.600000e-06 -4.80000e-02
6 1.920000e-05 -9.60000e-02
7 3.840000e-05 -1.92000e-01
8 7.680000e-05 -3.84000e-01
9 1.536000e-04 -7.68000e-01
10 2.536000e-04 -1.26800e + 00
11 3.536000e-04 -1.76800e + 00
12 4.536000e-04 -2.26800e + 00
13 5.536000e-04 -2.76800e + 00
14 6.536000e-04 -3.26800e + 00
15 7.536000e-04 -3.76800e + 00
16 8.536000e-04 -4.26800e + 00
17 9.536000e-04 -4.76800e + 00
18 1.053600e-03 -5.26800e + 00
19 1.153600e-03 -5.76800e + 00
20 1.253600e-03 -6.26800e + 00
21 1.353600e-03 -6.76800e + 00
22 1.453600e-03 -7.26800e + 00
23 1.553600e-03 -7.76800e + 00
24 1.653600e-03 -8.26800e + 00
25 1.753600e-03 -8.76800e + 00
26 1.853600e-03 -9.26800e + 00
27 1.953600e-03 -9.76800e + 00
28 2.053600e-03 -1.02680e + 01
29 2.153600e-03 -1.07680e + 01
30 2.253600e-03 -1.12680e + 01
31 2.353600e-03 -1.17680e + 01
32 2.453600e-03 -1.22680e + 01
33 2.553600e-03 -1.27680e + 01
34 2.653600e-03 -1.32680e + 01
35 2.753600e-03 -1.37680e + 01
36 2.853600e-03 -1.42680e + 01
37 2.953600e-03 -1.47680e + 01
38 3.053600e-03 -1.52680e + 01
39 3.153600e-03 -1.57680e + 01
40 3.253600e-03 -1.62680e + 01
41 3.353600e-03 -1.67680e + 01
42 3.453600e-03 -1.72680e + 01
43 3.553600e-03 -1.77680e + 01
44 3.653600e-03 -1.82680e + 01
45 3.753600e-03 -1.87680e + 01
46 3.853600e-03 -1.92680e + 01
47 3.953600e-03 -1.97680e + 01
48 4.053600e-03 -2.02680e + 01
49 4.153600e-03 -2.07680e + 01
50 4.253600e-03 -2.12680e + 01
51 4.353600e-03 -2.17680e + 01
52 4.453600e-03 -2.22680e + 01
53 4.553600e-03 -2.27680e + 01
54 4.653600e-03 -2.32680e + 01

Tiempo de índice v (1)

55 4.753600e-03 -2.37680e + 01
56 4.853600e-03 -2.42680e + 01
57 4.953600e-03 -2.47680e + 01
58 5.053600e-03 -2.52680e + 01
59 5.153600e-03 -2.57680e + 01
60 5.253600e-03 -2.62680e + 01
61 5.353600e-03 -2.67680e + 01
62 5.453600e-03 -2.72680e + 01
63 5.553600e-03 -2.77680e + 01
64 5.653600e-03 -2.82680e + 01
65 5.753600e-03 -2.87680e + 01
66 5.853600e-03 -2.92680e + 01
67 5.953600e-03 -2.97680e + 01
68 6.000000e-03 -3.00000e + 01

Tiempo de CPU desde la última llamada: 0.024 segundos.

Tiempo total de CPU: 0.024 segundos.

DRAM total disponible = 7925.503906 MB. DRAM actualmente disponible = 4380.695312 MB. Tamaño total del programa ngspice = 14.254883 MB. Tamaño del conjunto residente = 2.011719 MB. Páginas ngspice compartidas = 1.771484 MB. Páginas de texto (código) = 1.333008 MB. Pila = 0 bytes. Páginas de la biblioteca = 268.000 kB.

    
respondido por el daemondave

Lea otras preguntas en las etiquetas