Created by
Victor Sluiter
2017-07-20
Version 4
SHEET 1 1324 680
WIRE 176 -288 0 -288
WIRE 176 -256 176 -288
WIRE 464 -208 336 -208
WIRE 336 -176 336 -208
WIRE 176 -160 176 -176
WIRE 288 -160 176 -160
WIRE 176 -128 176 -160
WIRE 128 -112 32 -112
WIRE 128 -64 -112 -64
WIRE 288 -64 288 -112
WIRE 336 -64 336 -96
WIRE 176 0 176 -48
WIRE 0 48 0 -288
WIRE 160 48 0 48
WIRE 0 80 0 48
WIRE 160 80 160 48
WIRE -272 112 -320 112
WIRE -112 112 -112 -64
WIRE -112 112 -192 112
WIRE 448 128 320 128
WIRE 320 160 320 128
WIRE 0 176 0 160
WIRE 160 176 160 160
WIRE 272 176 160 176
WIRE 160 208 160 176
WIRE -320 224 -320 112
WIRE -320 224 -352 224
WIRE -272 224 -320 224
WIRE 112 224 -192 224
WIRE 32 272 32 -112
WIRE 112 272 32 272
WIRE 272 272 272 224
WIRE 320 272 320 240
WIRE 32 304 32 272
WIRE 160 336 160 288
WIRE 32 400 32 384
FLAG 160 336 0
FLAG 32 400 0
FLAG 0 176 0
FLAG 320 272 0
FLAG 272 272 0
FLAG 448 128 out
IOPIN 448 128 Out
FLAG -352 224 ctrl
IOPIN -352 224 In
FLAG 176 0 0
FLAG 336 -64 0
FLAG 288 -64 0
FLAG 464 -208 out-
IOPIN 464 -208 Out
SYMBOL sw 160 304 M180
SYMATTR InstName S2
SYMATTR Value comp
SYMBOL res 144 64 R0
SYMATTR InstName R1
SYMATTR Value 100k
SYMBOL voltage 32 288 R0
WINDOW 3 -31 147 Left 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR Value PULSE({Vlow} {Vhigh} 0 {Tr} {Tr} 0 {2*Tr})
SYMATTR InstName Vtriangle
SYMBOL battery 0 64 R0
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR InstName Vcc
SYMATTR Value 1
SYMBOL e 320 144 R0
SYMATTR InstName E1
SYMATTR Value {V_out}
SYMBOL sw 176 -32 M180
SYMATTR InstName S1
SYMATTR Value comp
SYMBOL res 160 -272 R0
SYMATTR InstName R2
SYMATTR Value 100k
SYMBOL e 336 -192 R0
SYMATTR InstName E2
SYMATTR Value {V_out}
SYMBOL voltage -176 224 R90
WINDOW 0 -32 56 VBottom 2
WINDOW 3 32 56 VTop 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR InstName V1
SYMATTR Value {Voffset}
SYMBOL voltage -288 112 R270
WINDOW 0 32 56 VTop 2
WINDOW 3 -32 56 VBottom 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR InstName V2
SYMATTR Value {Voffset}
TEXT -8 464 Left 2 !.model comp sw (ron=10 Roff=1e8 Vt=0 Vh=0.01)
TEXT -56 560 Left 2 !.param V_out=3.3 F=50k Tr={0.5/F} Vlow=0.01 Vhigh=0.99 Tdead=100n Voffset=( (Tdead*F) * (Vhigh-Vlow) )
TEXT -56 608 Left 2 !.tran 0 100u 0 10n
Version 4
SymbolType BLOCK
RECTANGLE Normal - 64 - 24 80 54
WINDOW 0 8 - 24 Bottom 2
WINDOW 39 - 60 69 Left 2
SYMATTR SpiceLine F = 50 k V_out = 20 Tdead = 100 n
PIN - 64 0 LEFT 8
PINATTR PinName ctrl
PINATTR SpiceOrder 1
PIN 80 0 RIGHT 8
PINATTR PinName out
PINATTR SpiceOrder 2
PIN 80 32 RIGHT 8
PINATTR PinName out -
PINATTR SpiceOrder 3
Credits to 'Roff' for the original idea: http://www.electro-tech-online.com/threads/ltspice-voltage-controlled-pwm.26887/
Voltage between 0 and 1V sets the duty cycle between 0 and 100%. PWM Frequency, dead time between output stages and output voltage are parametrized, and can be set from a higher level schematic.
Example usage to see the effect of PWM frequency on ripple current in a motor coil: