2
\$\begingroup\$

I'm relatively new to LTspice and motor diagnostics, but I have managed to build a PWM-MOSFET control circuit for a DC motor. My goal is to simulate this project to evaluate potential ripple currents and select the optimal diodes, capacitors, and resistors. I found a model for a DC motor, however, it draws more current at lower-duty cycles and less at higher-duty cycles. Moreover, it seems "weak" compared to my actual motor, which consumes 16 amps at full speed. Could anyone help explain this behaviour or suggest how I might adjust the model to more accurately reflect the performance of my high-power motor? Additionally, I would appreciate any tips on how to simulate changes in the load on the motor. I have included the LTspice files below as text.

My motor - Transtecno EC350, 12 VDC 500W

Control circuit for a DC motor.

dc_motor.asc - model representation of DC motor.

Simulated motor current at 20% and 90% duty cycles.

dc_motor.asc.txt:

Version 4
SHEET 1 1796 680
WIRE 112 -144 80 -144
WIRE 224 -144 112 -144
WIRE 352 -144 288 -144
WIRE 800 -144 352 -144
WIRE 848 -144 848 -192
WIRE 352 -112 352 -144
WIRE 784 -96 688 -96
WIRE 928 -96 864 -96
WIRE 112 -80 112 -144
WIRE 352 0 352 -48
WIRE 688 0 688 -96
WIRE 928 0 928 -96
WIRE 112 32 112 0
WIRE 688 128 688 80
WIRE 928 128 928 80
WIRE 112 160 112 112
WIRE 112 288 112 240
WIRE 928 352 928 208
WIRE 112 480 112 368
WIRE 192 480 112 480
WIRE 928 512 928 432
FLAG 688 128 0
FLAG 928 512 0
FLAG 80 -144 INPUT
IOPIN 80 -144 In
FLAG 192 480 OUTPUT
IOPIN 192 480 Out
FLAG 352 0 0
FLAG 848 -192 0
SYMBOL res 96 16 R0
WINDOW 3 36 76 Left 1
SYMATTR Value {R_M}
SYMATTR InstName R_MOTOR
SYMBOL ind 96 -96 R0
WINDOW 3 36 80 Left 1
SYMATTR Value {L_M}
SYMATTR InstName L_MOTOR
SYMBOL voltage 112 272 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V_SENSE_1
SYMATTR Value 0
SYMBOL voltage 928 336 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V_SENSE_2
SYMATTR Value 0
SYMBOL res 912 112 R0
WINDOW 3 36 76 Left 1
SYMATTR Value {R_F}
SYMATTR InstName R_FRICTION
SYMBOL ind 912 -16 R0
WINDOW 3 36 80 Left 1
SYMATTR Value {L_I}
SYMATTR InstName L_INERTIA
SYMBOL bv 688 -16 R0
WINDOW 3 24 96 Left 1
SYMATTR Value V=I(V_SENSE_1)*K_T
SYMATTR InstName V_torque
SYMBOL bv 112 144 R0
WINDOW 3 24 96 Left 1
SYMATTR Value V=I(V_SENSE_2)*{K_EMF}
SYMATTR InstName BACK_EMF
SYMBOL diode 224 -128 R270
WINDOW 0 32 32 VTop 2
WINDOW 3 0 32 VBottom 2
SYMATTR InstName D1
SYMATTR Value turn_on
SYMBOL cap 336 -112 R0
SYMATTR InstName C1
SYMATTR Value 10u
SYMBOL sw 880 -96 R90
SYMATTR InstName SW
SYMATTR Value turn_off
TEXT 1176 104 Left 2 !.param K_EMF 0.05
TEXT 1176 72 Left 2 !.param K_T 0.5
TEXT 1176 -88 Left 2 !.param R_M 5
TEXT 1176 -56 Left 2 !.param L_M 1.5m
TEXT 1176 0 Left 2 !.param L_I 0.25m
TEXT 1176 24 Left 2 !.param R_F 0.0001
TEXT 1184 184 Left 2 !.model turn_on D( Vfwd = 0.75 Rrev = 1n Ron = 1n)
TEXT 1192 232 Left 2 !.model turn_off SW(Vt = 1u Ron = 1n)

dc_motor.asy.txt

Version 4
SymbolType BLOCK
LINE Normal 0 -32 0 -64
LINE Normal 0 64 0 32
RECTANGLE Normal 16 32 -16 -32
CIRCLE Normal 22 19 -21 -19
TEXT -10 -2 Left 2 M
PIN 0 -64 NONE 8
PINATTR PinName INPUT
PINATTR SpiceOrder 1
PIN 0 64 NONE 8
PINATTR PinName OUTPUT
PINATTR SpiceOrder 2

Control circuit.asc.txt

Version 4
SHEET 1 3152 680
WIRE -32 -80 -128 -80
WIRE 80 -80 -32 -80
WIRE 224 -80 80 -80
WIRE 400 -80 224 -80
WIRE -128 -48 -128 -80
WIRE 400 16 400 -80
WIRE -128 64 -128 16
WIRE -32 64 -128 64
WIRE 80 64 80 48
WIRE 80 64 -32 64
WIRE 80 80 80 64
WIRE -128 160 -208 160
WIRE -80 160 -128 160
WIRE 32 160 0 160
WIRE 0 224 0 160
WIRE 16 224 0 224
WIRE 80 224 80 176
WIRE 224 224 224 -16
WIRE 224 224 80 224
WIRE 400 224 400 96
WIRE 400 224 224 224
WIRE -128 240 -208 240
WIRE -128 272 -128 240
WIRE 224 272 224 224
WIRE 0 320 0 224
WIRE 80 320 80 224
FLAG 224 272 0
FLAG -128 272 0
SYMBOL nmos 32 80 R0
SYMATTR InstName M1
SYMATTR Value custom_DAMI160N100
SYMBOL dc_motor 80 -16 R0
SYMATTR InstName X1
SYMBOL voltage 400 0 R0
WINDOW 123 0 0 Left 0
WINDOW 39 24 124 Left 2
SYMATTR InstName V1
SYMATTR Value 12
SYMATTR SpiceLine Rser=5m
SYMBOL cap -48 -80 R0
SYMATTR InstName C1
SYMATTR Value 100n
SYMBOL res -48 -32 R0
SYMATTR InstName R1
SYMATTR Value 20
SYMBOL zener 80 208 R90
WINDOW 0 -4 32 VBottom 2
WINDOW 3 36 32 VTop 2
SYMATTR InstName D1
SYMATTR Value TDZV15
SYMBOL schottky -112 16 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D2
SYMATTR Value RBR40NS30A
SYMBOL res 96 304 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R2
SYMATTR Value 100k
SYMBOL voltage -208 144 R0
WINDOW 0 -84 17 Left 2
WINDOW 3 -369 40 Left 1
SYMATTR InstName PWM
SYMATTR Value PULSE(0 12 0 {pT} {pT} {pT*(duty-1)} {T})
SYMBOL res 16 144 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R3
SYMATTR Value 4
SYMBOL res -144 144 R0
SYMATTR InstName R4
SYMATTR Value 10k
SYMBOL cap 208 -80 R0
SYMATTR InstName C2
SYMATTR Value 22000u
SYMATTR SpiceLine V=63 Irms=19 Rser=0.010 Lser=0
TEXT -608 392 Left 0 !.model custom_DAMI160N100 VDMOS(mtriode=1 Rg=2.9 vto=3.5 ksubthres=0 Rd=1.8m Rs=1.5m Rb=1.6m Kp=20 Lambda=70m Cgdmin=100p Cgdmax=500p A=.25 Cgs=15000p Cjo=40n M=.5 VJ=0.7 Is=100p TT=0 mfg=DACOSEMI Vds=100 Ron=4m Qg=282n)
TEXT -128 -160 Left 2 !.param freq=800 duty=95 T=1/freq pT=T/100
TEXT -128 -120 Left 2 !.tran {400*T}
TEXT 296 360 Left 2 !.step param duty 20, 90, 70
\$\endgroup\$
7
  • \$\begingroup\$ Inductance seems low, or is it a very small motor? Does the back-EMF in simulation match reality? \$\endgroup\$
    – winny
    Commented Jul 8 at 11:36
  • \$\begingroup\$ Moreover, you are in DCM. Are your experimental results also in DCM, as in same switch frequency? \$\endgroup\$
    – winny
    Commented Jul 8 at 11:48
  • \$\begingroup\$ Thank you, Winny, for showing interest. To be honest, I lack the tools to measure and the experience to estimate the inductance or the back-EMF of the actual motor. I only possess the motor's manual, which provides basic performance-related information such as power, voltage, current, RPM, and torque. [Hyperlink to the motor manual is linked to the motor name] \$\endgroup\$
    – Mark
    Commented Jul 8 at 11:55
  • \$\begingroup\$ Is the inductance stated in the datasheet? The back-EMF constant you can measure with a multimeter by spinning it at a constant speed and measure the generated votlage. \$\endgroup\$
    – winny
    Commented Jul 8 at 12:07
  • 1
    \$\begingroup\$ Then I would expect it to be higher. Even a 20 € LCR meter would do the job for you. \$\endgroup\$
    – winny
    Commented Jul 8 at 12:23

1 Answer 1

2
\$\begingroup\$

I initially considered deleting my question, but I think sharing an answer based on my experience is more beneficial. Estimating all six parameters required for a close approximation proved very challenging, if not impossible. This is mainly because most of these parameters significantly affect the voltage-current dynamics, leading to many "look-a-like" solutions. I contacted the manufacturer and got 5/6 parameters - that enabled me to sweep through the motor friction resistance to get appropriate results.

I will also leave the link to Using SPICE To Model DC Motors, which the motor model is based on.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.