Wavetek 288 inspired control panel for PCGU1000

It’s out of beta, here are links to the source code and installation package for version 1.5.x.

VB6 source code

Installation package

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.

Looks good, really nice work indeed!
Now it is possible to enter the real peak-to-peak value for library waveforms too and “measure” the RMS value.

You even succeeded to interpret the library waveform “language” e.g. pulses1.lib.

BTW: It seems that your web server is offline right now…

It was a typo in the URL–fixed…

OK - Now downloaded and first tests done.
Everything works perfect!
It seems that this software is complete now.
Thank you for your effort to make it!

I had some time this afternoon so I wrote a quick a dirty Etch-A-Wave application. It’s just a picturebox control with the mousedown, mousemove, and mouseup events handled to capture the mouse movement. The Y coordinate is saved to an array and rescaled to output a -1 to 1 library file. Here’s a “wave” I sketched:

This goes far beyond arbitrary and all the way to “goofy”–Hey, I have never claimed to be an artist.

Here’s the Wavejet 322 screenshot of the reproduced wave:

Here’s the PCGU1000Ctl.exe and FGU.exe windows with wave loaded at 5.0 Vpp:

The measured Vpp of 4.982 is close, the measured Vrms of 1.455 is’nt too bad either at - 0.9%

Problem is, I cannot think of any practical application for this…

Even if you do not have an application for it, I’m sure you had fun writing it.
Once you have the PCSU1000, you could add a ‘record’-button to the generator i.e. a button that allows you to record a signal and then have the generator replay it in an endless loop. No application for it either, but sounds like fun too…

Hello CliffyK,

This is a really neat application. Did you put the Etch-A-Wave code somewhere?

Also I also Have a LeCroy WaveJet (mines a 324) and if you have any utilities for porting data from there to the PCGU1000 I could really use them. Your package reminds me of one I used over 10 years ago called “WaveformDSP” which had similar features. One of the nice things that it had was the ability to descibe a waveform via mathematics and it would generate the data to be sent to the ARB. I think that it worked with my Wavetek 395 ARB.



I have packaged up the “Etch-A-Wave” app as a ZIP file that can be downloaded here (don’t expect much, I literally threw this together is less than 10 minutes).

I had used a Lecroy 9450A for years, and had cannibalised 3 or 4 to keep one going, that one died last summer and I decided to just put it alongside the other 2 I have in the attic and get the WaveJet 322, I have an old HP 1726A I can use for the bit of higher frequency stuff do. I miss a lot of what the 9450A could do in terms of math functions and memory manipulation, however once I got used to the WaveJet there’s a lot it can do that is neat too.

I had thought of adding the ability to parse a mathematic description of a waveform, and then the output of same into a PCGU1000 compatible library. This would not be a big deal, I think I’ll add to the “things I could do when I get bored” list.

For the past 2 or 3 months I’ve been working on a new workshop, we bought a 8’ x 16’ portable building and I have insulated it and finished the interior. Just last month I got the cabinets and shelves installed, and moved in–here’s a few photos…

This is the Northern end of the shop, (you can see two of my 9450As also, prior to being relegated to the attic);

Here is the Southern end, AF, power supplies, and calibration stuff mostly


I misssed part of your query–I have not developed any utilities for moving Wavejet waveforms to the PCGU1000, so far all I’ve needed to do was accomplished by loading a WaveJet CSV file into Excel, identifying the maximum absolute value, and then using a formula to rescale the values to a range of -1.0 to +1.0.