File:Pwm.png

File on OODA WIKI

Original file(958 × 797 pixels, file size: 81 KB, MIME type: image/png)

Summary

English: Principle of the intersective pulse width modulation (PWM). Created with maxima.

Author Original: CyrilB Vector: Krishnavedala

Source Code sawtooth(t) := t - floor(t); freq : 0.05$ sinesignal(t) := (1/2)+(499/1000)*sin(2*%pi*freq*t); pwm(t) := if(sawtooth(t) >= sinesignal(t)) then 0 else 1; load(draw)$ n : 1e4;kill(crossing); crossing : (x:[0],

   for i:0 while i<20*n do
       if( pwm(i/n)#pwm((i+1)/n) )       /* detect edge */
           then x:append(x,[(i/n)]),
   setify(x));

length(crossing); /* copy the x-tics from here */ source : gr2d(

   font="Times",nticks=50,
   grid=true,ytics={0,1},yrange=[-.25,1.25],
   user_preamble="set format x "";set xlabel "" 0,1;
       set bmargin 0;set tmargin 0",
   xtics= {0,0.592,0.999,1.762,1.999,2.893,2.999,3.973,

3.999,4.998,4.999,5.975,5.999,6.911,6.999,7.816,7.999, 8.698,9,9.567,10,10.432, 10.999,11.301,11.999,12.183,12.999,13.088,13.999,14.024, 14.999,15.001,15.999,16.026,16.999,17.106,17.999,18.237, 18.999,19.407,19.999},

   xlabel="",ylabel="source signals",
   explicit(sawtooth(x),x,0,19),
   color=red,explicit(sinesignal(x),x,0,19)

)$ pwm_plot : gr2d(

   font="Times",nticks=50,
   grid=true,ytics={0,1},yrange=[-.25,1.25],
   user_preamble="set format x "";set bmargin 2.25",
   xtics= {0,0.592,0.999,1.762,1.999,2.893,2.999,3.973,

3.999,4.998,4.999,5.975,5.999,6.911,6.999,7.816,7.999, 8.698,9,9.567,10,10.432, 10.999,11.301,11.999,12.183,12.999,13.088,13.999,14.024, 14.999,15.001,15.999,16.026,16.999,17.106,17.999,18.237, 18.999,19.407,19.999},

   xlabel="Time",ylabel="PWM signal",
   color=magenta,explicit(pwm(x),x,0,19)

)$ draw(terminal=svg,file_name="Pwm",

   source,pwm_plot);

Licensing

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current13:55, 30 August 2023Thumbnail for version as of 13:55, 30 August 2023958 × 797 (81 KB)Isidore (talk | contribs)English: Principle of the intersective pulse width modulation (PWM). Created with maxima. Author Original: CyrilB Vector: Krishnavedala Source Code sawtooth(t) := t - floor(t); freq : 0.05$ sinesignal(t) := (1/2)+(499/1000)*sin(2*%pi*freq*t); pwm(t) := if(sawtooth(t) >= sinesignal(t)) then 0 else 1; load(draw)$ n : 1e4;kill(crossing); crossing : (x:[0], for i:0 while i<20*n do if( pwm(i/n)#pwm((i+1)/n) ) →‎detect edge: then x:append(x,[(i/n)]), setify(x)...

The following page uses this file:

Metadata