timeStart = 0;
timeEnd = 15;
r = 0.1;
l = 1;
uPWM = 1;
PWMFreq = 1;
PulseDuration = 10;
uPart[t_, PulseDuration_] :=
Piecewise[{{Sin[\[Pi]*t/PulseDuration], 0 <= t <= PulseDuration}}, 0]
u[t_, PWMFreq_, PulseDuration_] :=
If[Mod[t, 1/PWMFreq] > uPart[t, PulseDuration], 0, uPWM]
Plot[u[t, PWMFreq, PulseDuration], {t, timeStart, timeEnd},
Exclusions -> None, ImageSize -> Large]
res = NDSolveValue[{l i'[t] ==
u[t, PWMFreq, PulseDuration] -
r i[t] - (i[t] - 10^-14 Exp[vdiode[t]/0.025]) ,
vdiode[t] + l i'[t] + r i[t] == 0, vdiode[0] == 0,