Version 4 SHEET 1 956 680 WIRE 16 -32 -144 -32 WIRE -144 16 -144 -32 WIRE 16 16 16 -32 WIRE -368 112 -368 64 WIRE -144 144 -144 96 WIRE 16 144 16 96 WIRE -368 224 -368 192 WIRE 16 240 -144 240 WIRE -144 288 -144 240 WIRE 16 288 16 240 WIRE -144 416 -144 368 WIRE 16 416 16 368 FLAG -368 224 0 FLAG -368 64 sin FLAG -144 144 0 FLAG 16 144 0 FLAG -144 416 0 FLAG 16 416 0 SYMBOL voltage -368 96 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V1 SYMATTR Value SINE(0 5 50) SYMBOL bi2 -144 16 R0 WINDOW 3 -9 169 Left 0 SYMATTR InstName B1 SYMATTR Value I=limit({lower_limit},v(sin),{upper_limit}) SYMBOL res 0 0 R0 SYMATTR InstName R_Load SYMATTR Value 1 SYMBOL bi2 -144 288 R0 WINDOW 3 -29 163 Left 0 SYMATTR InstName B2 SYMATTR Value I=uramp(v(sin)) SYMBOL res 0 272 R0 SYMATTR InstName R_Load1 SYMATTR Value 1 TEXT -350 270 Left 0 !.tran 100m TEXT 184 368 Left 0 ;positive values using function "uramp" TEXT 120 -24 Left 0 !.params lower_limit = 0 upper_limit = 4.5 TEXT 200 64 Left 0 ;pos. halvwave using function "limit"\nupper_limut is below amplitude for demo TEXT 352 224 Left 0 ;REF: HELP (F1) / LTspice / Circuit elements / B. Arbitrary