5 votos

Cómo solucionar este error de LTspice

A continuación se muestra un modelo de circuito de inversor en puente H que encontré en internet:

introducir descripción de la imagen aquí

Me está dando un error de iteración de matriz singular cuando intento ejecutar esto.

Si borro el circuito de la derecha, las cosas funcionan. O si conecto a tierra el terminal de C1 también funciona, pero entonces ya no es el mismo circuito.

Subí el archivo asc del circuito aquí:

¿Cuál podría ser la razón que causa este error?

0 votos

Responderé, pero primero tengo que saber algo: ¿esto es solo una prueba, es decir, solo para simulación, para ver formas de onda, o será un esquema completo en funcionamiento?

0 votos

Esto es solo para simular que no lo voy a construir.

0 votos

¿Qué tal si agregas una resistencia de 1 Mega ohmio desde el ánodo D1 a tierra y lo mismo para D3? Conecta a tierra A1 y A2.

7voto

dumfries Puntos 1

@loudnoises (y @Dorian, mientras escribía) tiene razón, así que sólo añadiré algunas cosas más: Los NMOS en LTspice suelen tener un diodo de cuerpo, a no ser que sea un MOS monolítico (que no tienes). Además, el uso de fuentes de comportamiento es bonito y práctico, pero el if() trae discontinuidades no deseadas en el solucionador, lo que obliga a que la derivada en ese punto sea un problema, numéricamente hablando.

Parece que sólo necesitas un comparador, así que es más seguro usar los propios dispositivos A de LTspice, que son aptos para esta tarea. Por cierto, ese retardo no hace lo que quieres, retrasa, pero hasta que aparezca la forma de onda tendrá el valor de DC; lo que probablemente querías era SINE(0 5 50 0 0 180) o una simple inversión de fase con una fuente E. Además, como sólo te interesa una simulación, los MOSFETs pueden ser sustituidos por los interruptores de tiempo ( SW ). Mirando tu foto, estás conduciendo los MOSFETs directamente referidos a tierra, pero los de alta necesitan un cambiador de nivel. Los interruptores evitan este problema.

Aquí hay una versión revisada:

hbridge

A1 es el comparador con salidas complementarias, A2 junto con A3 y A4 crear el tiempo muerto (especificado a través del .param dt=<value> ), y he puesto la tensión de conducción 1,01 para que se represente mejor en la ventana de forma de onda.

Y aquí está el contenido del .asc (copiar y guardar como .asc archivo, no .asc.txt ):

Version 4
SHEET 1 1236 680
WIRE 496 -32 432 -32
WIRE 768 -32 496 -32
WIRE 832 -32 768 -32
WIRE 976 -32 832 -32
WIRE 432 0 432 -32
WIRE 496 0 496 -32
WIRE 768 0 768 -32
WIRE 832 0 832 -32
WIRE 96 16 -96 16
WIRE 192 16 160 16
WIRE -304 48 -384 48
WIRE -176 48 -304 48
WIRE -96 48 -96 16
WIRE -96 48 -112 48
WIRE -80 48 -96 48
WIRE 96 48 -16 48
WIRE 976 64 976 -32
WIRE -272 80 -288 80
WIRE -176 80 -272 80
WIRE -96 80 -112 80
WIRE 16 80 -16 80
WIRE 16 96 16 80
WIRE 96 96 16 96
WIRE 192 96 160 96
WIRE 432 96 432 80
WIRE 496 96 496 64
WIRE 496 96 432 96
WIRE 768 96 768 64
WIRE 832 96 832 80
WIRE 832 96 768 96
WIRE -288 128 -288 80
WIRE -96 128 -96 80
WIRE 96 128 -96 128
WIRE 432 144 432 96
WIRE 480 144 432 144
WIRE 592 144 560 144
WIRE 608 144 592 144
WIRE 736 144 688 144
WIRE 832 144 832 96
WIRE 832 144 736 144
WIRE 432 192 432 144
WIRE 496 192 432 192
WIRE 832 192 832 144
WIRE 832 192 768 192
WIRE 432 208 432 192
WIRE 832 208 832 192
WIRE 496 224 496 192
WIRE 592 224 592 144
WIRE 624 224 592 224
WIRE 736 224 736 144
WIRE 736 224 688 224
WIRE 768 224 768 192
WIRE 432 320 432 288
WIRE 496 320 496 288
WIRE 496 320 432 320
WIRE 768 320 768 288
WIRE 832 320 832 288
WIRE 832 320 768 320
WIRE 432 352 432 320
WIRE 608 352 432 352
WIRE 832 352 832 320
WIRE 832 352 608 352
WIRE 976 352 976 144
WIRE 976 352 832 352
FLAG -384 128 0
FLAG -288 208 0
FLAG 192 16 A
FLAG -304 48 Vcon1
FLAG -272 80 tri
FLAG 384 64 0
FLAG 384 272 0
FLAG 384 16 A
FLAG 384 224 _A
FLAG 880 64 0
FLAG 880 272 0
FLAG 880 224 A
FLAG 880 16 _A
FLAG 608 352 0
FLAG 192 96 _A
SYMBOL Digital\\diffschmitt -176 0 R0
WINDOW 3 -7 -16 Left 2
SYMATTR InstName A1
SYMATTR Value vt=0 vh=0 Vhigh={VH}
SYMBOL voltage -384 32 R0
WINDOW 3 26 80 Left 2
SYMATTR InstName V1
SYMATTR Value sin 0 4.5 50
SYMBOL voltage -288 112 R0
SYMATTR InstName V2
SYMATTR Value pulse -5 5 0 16u 16u 0 32u
SYMBOL Digital\\and -48 0 R0
WINDOW 3 -40 114 Left 2
SYMATTR InstName A2
SYMATTR Value td={dt} Vhigh={VH}
SYMBOL Digital\\and 128 -32 R0
WINDOW 3 -1 1 Left 2
SYMATTR InstName A3
SYMATTR Value tripdt=10n Vhigh={VH}
SYMBOL voltage 976 48 R0
WINDOW 3 28 100 Left 2
SYMATTR InstName V3
SYMATTR Value 10 rser=10m Cpar=10u
SYMBOL sw 432 96 M180
SYMATTR InstName S1
SYMBOL sw 432 304 M180
SYMATTR InstName S2
SYMBOL sw 832 96 R180
SYMATTR InstName S3
SYMBOL sw 832 304 R180
SYMATTR InstName S4
SYMBOL ind 464 160 R270
WINDOW 0 32 56 VTop 2
WINDOW 3 5 56 VBottom 2
SYMATTR InstName L1
SYMATTR Value 500u
SYMBOL cap 688 208 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C1
SYMATTR Value 50u Rser=10m
SYMBOL res 592 160 R270
WINDOW 0 32 56 VTop 2
WINDOW 3 0 56 VBottom 2
SYMATTR InstName Rout1
SYMATTR Value 5
SYMBOL diode 480 64 M180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D1
SYMBOL diode 784 64 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D2
SYMBOL diode 480 288 M180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D3
SYMBOL diode 784 288 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D4
SYMBOL Digital\\and 128 48 R0
WINDOW 3 -31 117 Left 2
SYMATTR InstName A4
SYMATTR Value tripdt=10n Vhigh={VH}
TEXT 80 288 Left 2 !.tran 20m
TEXT -352 320 Left 2 !.model sw sw ron=10m roff=10meg vt=0.5 vh=-0.5\n.model d d ron=10m roff=10meg vfwd=0.5 epsilon=50m revepsilon=10m
TEXT 88 256 Left 2 !.param dt=1u VH=1.01

Tu esquema probablemente quiera ser una modulación de tres niveles, pero la forma en que lo hiciste quemaría los interruptores de potencia. Lo he modificado un poco, eres bienvenido a modificarlo, tú mismo, a tu gusto.


Para no irme con bromas, aquí está la versión de tres niveles:

3lvl

y aquí está el .asc archivo:

Version 4
SHEET 1 1280 680
WIRE 496 -32 432 -32
WIRE 768 -32 496 -32
WIRE 832 -32 768 -32
WIRE 976 -32 832 -32
WIRE 432 0 432 -32
WIRE 496 0 496 -32
WIRE 768 0 768 -32
WIRE 832 0 832 -32
WIRE 96 16 -96 16
WIRE 192 16 160 16
WIRE -336 48 -384 48
WIRE -304 48 -336 48
WIRE -176 48 -304 48
WIRE -96 48 -96 16
WIRE -96 48 -112 48
WIRE -80 48 -96 48
WIRE 96 48 -16 48
WIRE 976 64 976 -32
WIRE -272 80 -288 80
WIRE -208 80 -272 80
WIRE -176 80 -208 80
WIRE -96 80 -112 80
WIRE 16 80 -16 80
WIRE 16 96 16 80
WIRE 96 96 16 96
WIRE 192 96 160 96
WIRE 432 96 432 80
WIRE 496 96 496 64
WIRE 496 96 432 96
WIRE 768 96 768 64
WIRE 832 96 832 80
WIRE 832 96 768 96
WIRE -288 128 -288 80
WIRE -96 128 -96 80
WIRE 96 128 -96 128
WIRE 432 144 432 96
WIRE 464 144 432 144
WIRE 480 144 464 144
WIRE 592 144 560 144
WIRE 608 144 592 144
WIRE 736 144 688 144
WIRE 784 144 736 144
WIRE 832 144 832 96
WIRE 832 144 784 144
WIRE 432 192 432 144
WIRE 496 192 432 192
WIRE 832 192 832 144
WIRE 832 192 768 192
WIRE 432 208 432 192
WIRE 832 208 832 192
WIRE 496 224 496 192
WIRE 592 224 592 144
WIRE 624 224 592 224
WIRE 736 224 736 144
WIRE 736 224 688 224
WIRE 768 224 768 192
WIRE 96 240 -96 240
WIRE 192 240 160 240
WIRE -176 272 -288 272
WIRE -96 272 -96 240
WIRE -96 272 -112 272
WIRE -80 272 -96 272
WIRE 96 272 -16 272
WIRE -336 288 -336 48
WIRE -208 304 -208 80
WIRE -176 304 -208 304
WIRE -96 304 -112 304
WIRE 16 304 -16 304
WIRE 16 320 16 304
WIRE 96 320 16 320
WIRE 192 320 160 320
WIRE 432 320 432 288
WIRE 496 320 496 288
WIRE 496 320 432 320
WIRE 768 320 768 288
WIRE 832 320 832 288
WIRE 832 320 768 320
WIRE -96 352 -96 304
WIRE 96 352 -96 352
WIRE 432 352 432 320
WIRE 608 352 432 352
WIRE 832 352 832 320
WIRE 832 352 608 352
WIRE 976 352 976 144
WIRE 976 352 832 352
FLAG -384 128 0
FLAG -288 208 0
FLAG 192 16 A
FLAG -304 48 Vcon1
FLAG -272 80 tri
FLAG 384 64 0
FLAG 384 272 0
FLAG 384 16 A
FLAG 384 224 _A
FLAG 880 64 0
FLAG 880 272 0
FLAG 880 224 _B
FLAG 880 16 B
FLAG 608 352 0
FLAG -288 352 0
FLAG -336 336 0
FLAG 192 96 _A
FLAG 192 240 B
FLAG 192 320 _B
FLAG 464 144 x
FLAG 784 144 y
SYMBOL Digital\\diffschmitt -176 0 R0
WINDOW 3 -7 -16 Left 2
SYMATTR InstName A1
SYMATTR Value vt=0 vh=0 Vhigh={VH}
SYMBOL voltage -384 32 R0
WINDOW 3 26 80 Left 2
SYMATTR InstName V1
SYMATTR Value sin 0 4.5 50
SYMBOL voltage -288 112 R0
WINDOW 3 33 36 Left 2
SYMATTR InstName V2
SYMATTR Value pulse -5 5 0 16u 16u 0 32u
SYMBOL Digital\\and -48 0 R0
WINDOW 3 -40 114 Left 2
SYMATTR InstName A2
SYMATTR Value td={dt} Vhigh={VH}
SYMBOL Digital\\and 128 -32 R0
WINDOW 3 -1 1 Left 2
SYMATTR InstName A3
SYMATTR Value tripdt=10n Vhigh={VH}
SYMBOL voltage 976 48 R0
WINDOW 3 28 100 Left 2
SYMATTR InstName V3
SYMATTR Value 10 rser=10m Cpar=10u
SYMBOL sw 432 96 M180
SYMATTR InstName S1
SYMBOL sw 432 304 M180
SYMATTR InstName S2
SYMBOL sw 832 96 R180
SYMATTR InstName S3
SYMBOL sw 832 304 R180
SYMATTR InstName S4
SYMBOL ind 464 160 R270
WINDOW 0 32 56 VTop 2
WINDOW 3 5 56 VBottom 2
SYMATTR InstName L1
SYMATTR Value 500u
SYMBOL cap 688 208 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C1
SYMATTR Value 50u Rser=10m
SYMBOL res 592 160 R270
WINDOW 0 32 56 VTop 2
WINDOW 3 0 56 VBottom 2
SYMATTR InstName Rout1
SYMATTR Value 5
SYMBOL diode 480 64 M180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D1
SYMBOL diode 784 64 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D2
SYMBOL diode 480 288 M180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D3
SYMBOL diode 784 288 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D4
SYMBOL Digital\\and 128 48 R0
WINDOW 3 -31 117 Left 2
SYMATTR InstName A4
SYMATTR Value tripdt=10n Vhigh={VH}
SYMBOL e -288 256 R0
SYMATTR InstName E1
SYMATTR Value -1
SYMBOL Digital\\diffschmitt -176 224 R0
WINDOW 3 -4 -11 Left 2
SYMATTR InstName A5
SYMATTR Value vt=0 vh=0 Vhigh={VH}
SYMBOL Digital\\and -48 224 R0
WINDOW 3 -40 114 Left 2
SYMATTR InstName A6
SYMATTR Value td={dt} Vhigh={VH}
SYMBOL Digital\\and 128 192 R0
WINDOW 3 -1 1 Left 2
SYMATTR InstName A7
SYMATTR Value tripdt=10n Vhigh={VH}
SYMBOL Digital\\and 128 272 R0
WINDOW 3 -31 117 Left 2
SYMATTR InstName A8
SYMATTR Value tripdt=10n Vhigh={VH}
TEXT 1040 288 Left 2 !.tran 20m
TEXT 480 400 Left 2 !.model sw sw ron=10m roff=10meg vt=0.5 vh=-0.5\n.model d d ron=10m roff=10meg vfwd=0.5 epsilon=50m revepsilon=10m
TEXT 1048 256 Left 2 !.param dt=1u VH=1.01

0 votos

Gracias por la excelente respuesta. Por cierto, ¿creaste PWM usando una onda senoidal y una onda triangular que son entradas a un comparador Schmitt trigger. ¿Cómo se implementa eso en la realidad? ¿Con onda senoidal y triangular? ¿Se generan mediante un oscilador?

0 votos

@user16307 La compuerta de Schmitt se usa aquí como un comparador, porque es la más rápida que obtendrás con este rol en LTspice, al mismo tiempo que es completamente amigable a la convergencia, y con un montón de parámetros para adaptarse a tus necesidades: vhigh/vlow, trise/tfall o rout/cout o tau, vt/vh, td, tripdt. Por cierto, el tiempo muerto también podría haber sido simplificado, eliminando todos los NAND, estableciendo trise/tfall, y configurando vt=0.75 vh=-0.25 para el SW (creo recordar, tómalo con precaución). Y todo esto podría haber sido aún más simplificado eliminando todos los dispositivos A, solo señal senoidal, triangular y puente, pero la claridad se vería afectada.

4voto

Mike Crittenden Puntos 2575

La fuente V4 es ideal y, en algún momento tanto el MOSFET superior como el inferior están abriendo. Eso se traduce en un valor de corriente enorme a través de V4 que no se puede calcular.

Ingrese las propiedades de V4 y coloque algo de resistencia en serie para continuar. Como 0.000001 ohmios.

Editar

No solo V4 es ideal, sino también los otros componentes, puedo ver que incluso con V4 teniendo resistencia interna hay enormes picos que ralentizan la simulación. Coloque algunos componentes reales de la lista. Cambiar solo los diodos por unos reales hizo una gran diferencia.

1voto

loudnoises Puntos 76

Básicamente SPICE simula circuitos al resolver un conjunto de ecuaciones lineales (generalmente linealizadas de no lineales), es decir, \$Ax = b\$. Dependiendo del circuito, la matriz \$A\$ puede no ser invertible, lo que significa que no se puede encontrar la solución para \$x\$ o las incógnitas (voltajes nodales, corrientes en las ramas, etc.). A esto se le conoce como singularidad.

(El término de iteración se refiere a cuando las no linealidades se linealizan para la inversión de la matriz \$A\$, esto requiere múltiples iteraciones utilizando un solucionador no lineal para encontrar la solución final.)

Las cosas que pueden causar singularidad en la matriz son nodos colgantes, impedancias con valores demasiado altos/demasiado bajos, no linealidades mal definidas, etc.

Descubrir el problema específico requeriría mucha depuración. ¿Puedes eliminar cosas hasta que el circuito funcione, luego agregar cosas hasta que se rompa? Esto indicará qué componentes/conexiones están causando el problema.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X