"Magic Sinewave" Research Blog

2012-08-29 - Raspberry Pi Generation of High-Precision Magic Sinewave Pulse Sequences

The inexpensive Raspberry Pi computer board is capable of generating high-precision Magic Sinewave pulse sequence signals on its GPIO pins with pulse edge timing corresponding to ~ 20-bit angle resolution. This is accomplished by running assembly language code (without the Linux OS) on the "bare-metal" which takes advantage of a high-resolution 250 million ticks per second timer and the 700 MIPS ARM CPU. The high-resolution timer is utilized because ... [full post]

2012-08-19 - Microcontroller Generation of BBE Magic Sinewave Pulse Sequences

The side-by-side, camera-captured, oscilloscope trace images show 8 pulse/quadrant, 0.9 amplitude, 60Hz, continuous BBE Magic Sinewave pulse sequences generated by a microcontroller. The microcontroller employed, is an ... [full post]

2012-08-09 - Test of utility bbemscalcnode.js until failure

The Node.js utility bbemscalcnode.js, which calculates Bridged Best-Efficiency Magic Sinewave pulse sequence solutions, was tested over a reasonable set of amplitudes (the full range in 0.1 or less steps) within increasing pulses/quadrant (starting with 1) with the intent of finding the first parameters under which the algorithm would fail to converge or fail its internal test for sufficiently small fundamental error and zero-harmonic amplitudes. Here is the result (failure at 202 pulses/quadrant and amplitude 1.0):

$ bash breakbbemscalcnode.sh
   ... a lot of output omitted ...
86.158763995563 86.604794237906 86.610093452326 87.056597279508 87.061704741891 87.508637649969
87.513580608808 87.960891656397 87.965697421589 88.413329157628 88.418025094431 88.865913874186 
88.870527395231 89.318604128903 89.323162684325 89.771354013745 89.775885079692 90.000000000000
nice node bbemscalcnode.js -p 202 -a 0.99
iterations = 10, did not converge!
nice node bbemscalcnode.js -p 202 -a 1.0

Here is the bash script (breakbbemscalcnode.sh) employed in this experiment:

ppq=1
while :
do
  for ampl in 0.001 0.01 `seq 0.1 0.1 0.9` 0.95 0.96 0.97 0.98 0.99 1.0
  do
    cmnd="nice node bbemscalcnode.js -p $ppq -a $ampl"
    output=`eval $cmnd`
    exit_val=$? 
#    clear
#    echo $cmnd
    echo $output
    echo $cmnd
    if [ $exit_val -ne 0  ]
    then
      exit 1
    fi
  done
  ppq=`expr $ppq + 1`
done