This is version 2 which allows the vacuum to be varied over time during the simulation. The circuit simulator – SPICE – doesn’t know anything about vacuum so we use voltage instead, in this case 0V = 0 inHg and 15V = 15 inHg.

Here is the component in KiCAD. It has two new pins, VAC and GND. VAC is the vacuum input in volts. These inputs don’t exist on the real MPS but they are needed for the simulation.

Pin numbers are: 1 = 7_PRI, 2 = 15_PRI, 3 = 8_SEC, 4 = 10_SEC, 5 = VAC, 6 = GND.

Create a text file called MPS V2.lib and copy into it:

``````* D-Jetronic Manifold Pressure Sensor Model
* Version 1.1, March 2022
* andy@britishideas.com

.subckt mps pri1 pri2 sec1 sec2 vacpin gndpin

* Primary coil inductance look up table by vacuum, in Henry
.func LpriTable(vac) { vac == 0 ? 375m : vac <= 1 ? 375m : vac <= 2 ? 358m : vac <= 3 ? 350m
+ : vac <= 4 ? 342m : vac <= 5 ? 335m : vac <= 6 ? 327m : vac <= 7 ? 320m : vac <= 8 ? 313m
+ : vac <= 9 ? 306m : vac <= 10 ? 300m : vac <= 11 ? 292m : vac <= 12 ? 286m
+ : vac <= 13 ? 279m : vac <= 14 ? 271m : vac <= 15 ? 265m : 265m }

* Secondary coil inductance look up table by vacuum, in Henry
.func LsecTable(vac) { vac == 0 ? 731m : vac <= 1 ? 731m : vac <= 2 ? 703m : vac <= 3 ? 689m
+ : vac <= 4 ? 678m : vac <= 5 ? 665m : vac <= 6 ? 654m : vac <= 7 ? 641m : vac <= 8 ? 629m
+ : vac <= 9 ? 618m : vac <= 10 ? 607m : vac <= 11 ? 596m : vac <= 12 ? 584m
+ : vac <= 13 ? 572m : vac <= 14 ? 560m : vac <= 15 ? 550m : 550m }

* Coupling factor look up table by vacuum
.func kTable(vac) { vac == 0 ? 0.940646225 : vac <= 1 ? 0.940646225 : vac <= 2 ? 0.937901171 : vac <= 3 ? 0.93644171
+ : vac <= 4 ? 0.935217231 : vac <= 5 ? 0.933744986 : vac <= 6 ? 0.932426383 : vac <= 7 ? 0.930837611 : vac <= 8 ? 0.929297049
+ : vac <= 9 ? 0.927815404 : vac <= 10 ? 0.926277558 : vac <= 11 ? 0.924680246 : vac <= 12 ? 0.922882619
+ : vac <= 13 ? 0.921005835 : vac <= 14 ? 0.918947379 : vac <= 15 ? 0.917110086 : 0.917110086 }

* Resistances of primary and secondary coils, in Ohms
.param Rpri=92.5
.param Rsec=348
* Output parallel resistance, determined by measurement
.param Rout=11384

Ra pri1 B {Rpri}
La B C {LpriTable(V(vacpin,gnd))*(1 - kTable(V(vacpin,gnd)))}
Lb C pri2 {kTable(V(vacpin,gnd))*LpriTable(V(vacpin,gnd))}
Lc C D {LpriTable(V(vacpin,gnd))*(1 - kTable(V(vacpin,gnd)))}
Rd D E {Rsec*LpriTable(V(vacpin,gnd))/LsecTable(V(vacpin,gnd))}
Le E pri2 1T
Lf sec1 sec2 1T
K1 Le Lf 1
Rm sec1 sec2 {Rout}

.ends``````

For details of how to calibrate this simulation to match a physical MPS see my separate post.

Create a test circuit. Here is mine.

Edit the MPS component and click on Edit Spice Model… then go to the Model tab and choose MPS V2.lib. Then OK and OK.

This example circuit increases the vacuum from 0 inHg to 15 inHg. Here is the result of looking at the IN and OUT voltages.

I measured the peak voltage for vacuum levels from zero to 15 for the real circuit and the simulated circuit to see how close the simulation is. Here is the result. 