MOV subcircuit component check (PBKAC)

I wanted to validate a B40K420 MOV before simulation. Here is the circuit:


The subcircuit used is from TDK/EPCO (pasted in, subseted from here):

  • ==========================================================
  • PSpice-Simulation models for TDK Electronics ZnO Varistor
  • ==========================================================
  • “SIOV-20210204.LIB” Version 1.0 - 04. Feb. 2021
  • Basic model:
  • ============

.SUBCKT SIOV 1 2 PARAMS: T=1 C=1pF L=1nH B1=1 B2=1 B3=0 B4=0
R_SERIES 1 3 100u
L_SERIES 3 4 {L}
V_I_SENSE 4 5 0V
H_I_SENSE 6 0 V_I_SENSE 10k
R_I_SENSE 6 0 1G
E_VAR 5 2 VALUE={T*(

  • PWR(10,
  • B1+B2*(LOG10(LIMIT(V(6),1m,100G))-4)+B3EXP(-LOG10(LIMIT(V(6),1m,100G))+4)+B4EXP(LOG10(LIMIT(V(6),1m,100G))-4)
  • )
  • -PWR(10,
  • B1+B2*(LOG10(-LIMIT(V(6),-100G,-1m))-4)+B3EXP(-LOG10(-LIMIT(V(6),-100G,-1m))+4)+B4EXP(LOG10(-LIMIT(V(6),-100G,-1m))-4)
  • )
  • +LIMIT((V(6)1kV(7)),-V(7),V(7))
  • )}
    C_PAR 4 2 {C}
    E_SW 7 0 VALUE={PWR(10,(B1+B2*(-7)+B3EXP(+7)+B4EXP(-7)))}
    R_SW 7 0 1G
    .ENDS
  • Type Models
  • =============
  • Type model for B40K420 :

.SUBCKT B40K420 1 2 PARAMS: TOL=0
X1 1 2 SIOV PARAMS: T={1+TOL/100} C=1800pF L=19.0nH B1=2.9072617 B2=0.0238985 B3=-0.0001615 B4=0.0034613
.ENDS
*

As the MOV voltage is only about 9V it is likely the Type model parameters (ie B40K420) are not being passed into the Base model (confirmed with the symbol).

Changing the X1 parameters to B40K420 does not work. Any thoughts? Thanks!

You can use auto generated symbol method, but you have to enable Include Entire File and choose B40K440 as subckt in symbol creation. Your simulation not working as you choose SIOV, but SIOV is child sub-circuit and B40K440 is parent sub-circuit. Schematic should call parent sub-circuit but not child sub-circuit from a library.

Or, here is to use user created varistor symbol and with .lib method to call the subckt from library. (.lib file put into same directory as .qsch).

B40K420.qsch (2.1 KB)

1 Like

Thank you so much KSKelvin, very greatly appreciated!

I confirmed the MOV model works out to 10kA:

.
However, when fed too big a pulse (2kV) or too much current (smaller R2) the simulation fails:

R3 is there to help the simulation converge.
Any thoughts on this? Thank you

I replicated your schematic and ran it without any problems using .option maxstep=10u.

QSpice, by default, normally assigns the timestep target as simulation time / 1000. Sometimes, this timestep is too large, and the circuit may not converge easily. Therefore, we have to fight fire with fire and reassign a smaller timestep.

Parent.B40K420 (.tran).qsch (3.5 KB)

1 Like

When increasing the voltage and shortening the interval the timestep too small error has returned. Trying out capacitance at the nodes, across the non-linear device etc hasn’t helped:


Any assistance would be appreciated. Thank you.
Timestep too small.qsch (5.0 KB)

Again, the solution is to enforce a reasonable maxstep. In this case, the maxstep is set to simulation time / 10000. I changed the library to a .txt file so it allows uploading to the forum, and anyone coming across this post doesn’t have to visit the TDK website to download the library.

Parent.B40K420 (solve time step too small).qsch (4.8 KB)
SIOV-20210204.txt (96.0 KB)

1 Like

I had some problems with the varistors in LTspice. I’ve solved this by tweaking the model a bit. And there is no need to bother with the maximum step. Everything counts with standard settings.


SIOV_AB.txt (57.7 KB)

2 Likes