It’s out of beta, here are links to the source code and installation package for version 1.5.x.
It jumped from beta to version 1.5 because 1.0 never got released, 1.5 adds a very nifty feature (even if I so say so myself) which scans the selected library file and determines the described waveform’s peak-peak voltage (within the -1.0 to +1.0 range of the library file format). This routine can read both decimal values (-1.0 to +1.0) and integer (0 to 255) point definitions, and recognises and processes the point repetition and distribution directives.
The ratio of the waveform’s pk-pk and 2.0 (the highest pk-pk permitted by the library file definition) is stored as a global multiplier and used to set and display the PCGU1000’s output amplitude scaled to the library waveform.
An additional routine dynamically calculates a library waveform’s true RMS and displays same whenever a library sourced waveform is being generated. This is done by multplying each of the waveform library’s data point values by the PCGU1000’s amplitude setting, Squaring the result and accumulating the sum of the squares. This value is then divided by the number of data points to find the Mean (average) of all the squared values, and added to the square of the generator’s offset setting.
The square Root of this sum is the RMS voltage of the arbitrary waveform. I have found this to be quite accurate when viewed from an overall perspective of what’s going on. Here are some shots of my application and FGU.exe, and screenshot’s of the output from my Lecroy Wavejet 322.
A classic “ringing” waveform (1001 points), you can see that the amplitude is set to 5.00 Vpp and that the calculated RMS is 707,0 mV. Note that the amplitude sent to FGU.exe is 5.65 V; this is what we have to tell the PCGU1000 to get 5.0 Vpp at the waveform.
Here is the screen dump from the 'scope, note that the oscilloscope’s measured pk-pk is 4.999 V, and the RMS is 707.6 mV – pretty close!
Here is my old favourite. A 5 uS pulse from an old pulse injector, captured by the Wavejet in a CSV file, and converted to a PCGU1000 library; as above the waveform pk=pk is set at 5.00 V, the calculated waveform RMS is 2.794 V. Note that in order to get 5.0 Vpp in the waveform the PCGU1000 had to be set to 9.15 Vpp; this is due to the waveform’s have a positive displacement and limits the maximum waveform pk-pk to 5,46 V or so.
Here’s what the scope had to say, 5.000 Vpp and 2.749 Vrms–not as close as above but within +/- 2% which is not bad for what is a much more complex waveform (5000 points).
The greatest error I have so far found has been in the +/- 5% range, with the piano1.lib (very complex) and pulses1.lib (very tersely described with only 9 data points) libraries that ship with PCLab-2000SE. I have tested just about all the sample waves, with both positive and negative offsets, and been pleased with the correlation of the calculated and measured values.
Operation with the standard waveforms (sine, square, and triangle), and the sweep functions are as in prior versions. Please let me know what problems or issues you have, and if you find the application useful.
I am working on documentation (I am certain you all know how much programmers like doing that), and will post a complete package when it is available.
-cliff-