PCGU1000 Analysis

I took some time this evening to examine the output characteristics of my newly acquired PCGU1000. This is a very impressive instrument!

Here are some numbers relative to the output frequency, amplitude, and THD…

The frequency accuracy numbers are just as I recorded them–there is NO “fudge” here, startled the crap out of me when I plugged 'em into the worksheet! My HP 5316A was calibrated in June against a local shop’s PRS10 rubidium standard.

I also performed a wave analysis at 1 kHz, 2 kHz, and 5 kHz to determine the THD content and noise floor. As for noise floor it is at -90 dBc, the lower limit of my instrumentation…

1 kHz

2 kHz

5 kHz

This is very impressive for a $210 instrument!

[edit]----------------------------------------------
By way of reference, here are similar waveform analyses from my Kikusui ORC-11 low-distortion signal generator, and my Wavetek 288 synthesised generator that had been my ultralow frequency and extended sweep frequency source.

Kikusui ORC-11 (0.0019% THD)

Wavetek 288

Times change!

Thank you very much for doing these tests!
It’s nice to look this kind of test results - and the impressive list of test equipment.

In the footnote you mentioned: “The RMS variance is for informational purposes only…”

Indeed the output voltage value displayed is to open or high impedance load.

Here my test results of the output voltage at different frequencies:

This test is made with Fluke 8842A Multimeter, calibrated 5/30/2006
First I set the frequency of the generator to 1000Hz and adjusted the output voltage to 1.000V.
Then I changed the frequency from 20Hz to 100kHz and measured the output voltage.

BTW: You can set the output voltage very accurately by entering it with 5 digits e.g.

entered V measured V 1.9999 1.99757 1.9998 1.99750 1.9997 1.99744 1.9996 1.99735 1.9995 1.99720 1.9994 1.99710
This is just to show that even the fifth digit of the entered value has effect to the output voltage value…

Thank you for your excellent support!

Having grown accustomed to the physical interface of my Wavetek 288 I began work on a WT-288 familiar front-end for the PCGU1000, here’s a shot of the main (and at this only time) form:

An issue I have encountered seems to relate to the fgu1000.bit file, the PCGU1000Link.dll, and the PCSU1000GU.exe and FGU.exe application. Specifically, it seems that PCGU1000Link.dll and PCSU1000GU.exe combination support seamless frequency transitions via the fgu1000.bit file, howver the FGULInk.dll and FGU.exe pairing do not.

My disappointment is that the PCGU1000Link.dll does not provide for OpenGen/CloseGen, ShowGen, or AttOn functions (DC output would be nice too).

I have not yet attempted to emulate the OpenGen/CloseGen functions via API calls, and this may be possible, however access to the attenuator function would be nice. I also noticed that the Filter on/off parameter is missing in PCGU1000Link.dll’s implementation of SetLibWave?

Is there anything that brings all this together? I would like to have all the functionality of FGULink.dll with the seamless frequency transition available in PCGU1000Link.dll

BTW: I find the frequency range button restrictions in FGU.exe and PCGU1000Ctl.exe to very odd, sort of a tribute to legacy RC and RLC function generators. Is their existence related to some peculiar trait of the PCGU1000 or it is just a wierd artifact of some overzealous desire to emulate “conventional” (I.e. low-end) instrument UIs? As you can see in my psuedo-Wavetek world I did away with that foolishness.

Looks great!
You have quickly made nice new user interface for the PCGU1000.
There seems to be no frequency range buttons - Indeed, those buttons are just to “emulate” conventional instruments.

Thank you for your comments concerning the two DLLs.
The PCGU1000Link.dll is very old but it has the advantage that it uses the latest main software and the latest .bit file.
The FGULink.dll is more advanced but uses the FGU.exe that is specially made for it and uses the specially made fgu1000.bit file.

I think too that now the PCGU1000Link.dll has to be updated…

Thank you again,

So that I might gain a better understanding of these components, I provide the following:

I have these versions of the various softwares,

[ul]
FGU.exe - created 3/27/2008
FGULink.dll - created 3/27/2008

PCSU1000GU.exe - created 5/26/2008
PCGU1000Link.dll - created 3/27/2008

fgu1000.bit - created 1/6/2008
[/ul]

Creating a custom application using FGULink.dll, and therefore FGU.exe, with the fgu1000.bit file in the same folder results in a 585 mS or so “dropout” when changing frequencies;

Creating a custom app using PCGU1000Link.dll, and therefore PCSU1000GU.exe, once again with fgu1000.bit available, results in a seamless transition between frequencies;

From your last message it appears there may be another fgu1000.bit file available, that can be used with FGULink.dll, and provide the seamlesss transition–is this so? If so, how may I obtain that *.bit file?

TIA,

-cliff-

Now the FGU.EXE is modified to use the latest .bit file fgu1000.bit 5/11/2008.
You can download it together with the new FGULINK.DLL, new FGU.EXE and new demo program from:
vel255.diinoweb.com/files/FGULink_update_3.zip

Now there is no dropout when changing frequencies or the waveform.
(Some minor glitches may occur anyhow when the settings are changed.)

Hope better now…

Note to Vista users: Set the Compatibility Mode of the FGU.exe or your application to Windows XP, Service Pack 2.

WOW!

You move at the speed I do !!!

All is very well with the revised files–this is working out very nicely…

Here’s a screenshot of the latest revision of my PCGU1000Ctl.exe application:

It got bigger… I incorporated a nifty freeware VB6 custom LCD/VTFD control that I found a while back for the parameter settings, and revised things to use the “checkbox trick” for the command buttons to give me bacjground and foreground colour control.

I need to squeeze the library “filter” parameter in there somewhere, and one other thing that would be neat would be the ability to “sweep” library waveforms (hint)…

Thank you VERY much for making these revisions!!!

-cliff-

Your new PCGU1000Ctl.exe looks very good!
I think this program would be very useful when I’m testing the new features of the DLL.
If possible, could you please provide a link to download it (with the source if possible)?

About the library waveform sweep: I think there is no problem to add this feature to the future release of the DLL.

Thanks again for your comments and the analysis!

Nice work indeed.
Would it be OK to use your test results for marketing purposes ?

[quote=“VEL255”]Your new PCGU1000Ctl.exe looks very good!
I think this program would be very useful when I’m testing the new features of the DLL.
If possible, could you please provide a link to download it (with the source if possible)?

About the library waveform sweep: I think there is no problem to add this feature to the future release of the DLL.

Thanks again for your comments and the analysis![/quote]

I will bundle it up later today, load it to my webserver, and send you a link. I have a funeral to go to this morning so it will not be until this evening some time. BTW, I am at GMT-5 (Saint Augustine, FL, USA).

[quote=“VEL417”]Nice work indeed.
Would it be OK to use your test results for marketing purposes ?[/quote]

Yes indeed, let me know if you need some sort of formal release. I can send you the Excel worksheet if you like.

Here is a link to the source code:

[url=http://www.paladinmicro.com/documents/PCGU1000CtlSource.zip]http://www.paladinmicro.com/documents/PCGU1000CtlSource.zip[/url]

The app uses the Scripting.FileSystemObject to copy and verify the existance of library files, other than that and the obvious dependence on FGU.exe, FGULink.dll, and fgu1000.bit it is “self-contained”.

I have not yet fully tested and debugged it so please let me know what you find, I took some time to annotate the code via inline comments–both to assist you and in order that my 62 year-old brain might remember why I did what I did tomorrow…

Thank you once again for your assistance and rapid responses–this is fun!

-cliff-

Thank you for this code!
It seems to work fine.
Indeed, this is very nice tool to control the operation of the PCGU1000.

At the moment I have no VB6 to run the source - I’ll test it tomorrow.
I’ll also have a closer look to your source code. Now I read it with text editor only.

This is also nice feature that the software saves and recalls the generator settings to/from the registry.

BTW: Could you please put here also a link to your Excel file containing the analysis results…

Here is a link to the worksheet:

 [url=http://www.paladinmicro.com/documents/PCGU1000MeasuredSpecs.zip]http://www.paladinmicro.com/documents/PCGU1000MeasuredSpecs.zip[/url]

I have a few things to add to the control program. I want to include a “Reset” (to default settings) button, and an on/off switch for the library function filter. There will also be some changes needed when the libary sweep capability is available.

-cliff-

I have a new version of my PCGU1000Ctl.exe application, the source and executable are here.

Notable changes are the ability to save configurations, the addition of a library function filter on/off checkbox, and keyboard shortcuts allowing the [Enter] key to load the entered parameter value as Frequency 1, and using the “S”, “Q”, and “T” keys to respectively set "S"ine, s"Q"uare, and "T"riangle waveforms.

The configuration files are .ini file like, here’s the contents of the TestLibrary.cfg file:

[color=#408080];last saved: 11/19/2008 @ 18.43.04
;TestLIbrary.cfg[/color]
[color=#0040BF]fguWave=2
fguFreq1=2500
fguFreq2=5000
fguAmplitude=7.5
fguOffset=-0
fguInterval=10
fguLibrary=lecroy002.lib
fguOutputON=True
fguSweepON=False
fguLibraryON=True
fguAttenON=False
fguAttenX=1
fguFilterON=False
fgu50OhmVals=1[/color]

Like .ini files any line beginning with a semi-colon is a comment, blank lines are ignored. The fgu50OhmVals parameter is not active and must be set to 1. All parameters shown must be included or the file will be loaded.

Also added is a “Reset All” button that resets things to the same, and very well chosen, defaults as FGU.exe.

All set parameters are saved to the registry on exit, including the currently loaded configuration file – it will be reloaded on startup.

Here’s what it looks like now:

I know there are bugs, don’t be embarrassed to let me know of them—I am too old to be offended by much of anything!

-cliff-

In case anyone is interested the lecroy002.lib library loaded in the above screenshot was created from a CSV capture of a 5 us pulse from a 20 or more year old logic pulse injector. I captured the trace with the Lecroy 322 Wavejet and used Excel to scale it to values -1 to 1, that saved it to a “*.lib” text file.

Here’s a comparison of the original trace captured from the logic injector, and the PCGU1000’s recreation of same from the manipulated .lib file.

There’s a bit of added low level HF noise, however overall it looks great–to the extent that I created a Perl script to take the Lecroy waveform dumps and blow 'em out as PCGU1000 library file. I am have a blast playing with this and can’t stop thinking up new ways to exploit it.

Speaking of which, a logarithmic sweep would be neat…(hint)

Thank you for the Excel worksheet and the even more advanced software!

This configuration file is nice feature to add.

Some comments:
Now the library files can’t be loaded anymore. I got Run-time error ‘70’.
The yesterday version was OK.

The decimal separator must be dot. In some countries it is comma.
If someone in such a country downloads this software it doesn’t run.
The user have to go to Control Panel / Regional and Language Options -> click Customize… and set Decimal Symbol “.”.

BTW: About the 7-segment display: Is it possible to change the ‘invisible’ segments darker?

[quote=“VEL255”]Thank you for the Excel worksheet and the even more advanced software!

This configuration file is nice feature to add.

Some comments:
Now the library files can’t be loaded anymore. I got Run-time error ‘70’.
The yesterday version was OK.

The decimal separator must be dot. In some countries it is comma.
If someone in such a country downloads this software it doesn’t run.
The user have to go to Control Panel / Regional and Language Options -> click Customize… and set Decimal Symbol “.”.

BTW: About the 7-segment display: Is it possible to change the ‘invisible’ segments darker?[/quote]

Thank you for the feedback, I found the Error 70 to be the result of my having worked all day with XML and HTML and then entering the a literal for the default library folder as “/lib” rather than “\lib” – it looked perfectly correct at the time…

The new download (click here) included this fix, and a display configuration pop-up dialog accessible by double-clicking of the Current Settings frame header (or anywhere in the frame’s “open” space). It looks like this:

I have not yet implemented the Decimal Seperator function as there is a lot of double–>string–>double manipulation in my “Engineering Units” display routine and I’d like to find an elegant way of dealing with that.

The latest version may be found here

-cliff-

This is indeed nice software!

Nice features:

  • The “Use Library” button for fast jump between library waveform and “normal” waveform.
  • Save/Load configuration to save all the waveform settings for future use.
  • Display configuration setting
  • The “-40 dB Out” button function

Me again,

I have added “international” support for those nations using commas for the decimal separator, and periods for the “thousands” separator. The application will recognise the scheme in use and adapt itself as required. It does assume that conventional 3-digit “thousands” grouping is being used.

Here is a screenshot of the app running with the French (Belgian) regional setings selected.

Here is the same library loaded with the English (United States) regoinal settings.

The fluorescent display control offers a very aggressive “comma” as a decimal delimiter–I actually sort of prefer it to the IMHO “too small” dot. I added a resource file with the two bitmaps for the decimal “key”, they are also automatically set depending on the Windows regional settings.

Also there are some small bug fixes I found along the way.

The source code and executable can be downloaded here:

 [url=http://www.paladinmicro.com/documents/PCGU1000CtlSource.zip]http://www.paladinmicro.com/documents/PCGU1000CtlSource.zip[/url]

A Windows installation package for the application can be found here:

 [url=http://www.paladinmicro.com/documents/PCGU1000CtlSource.zip]http://www.paladinmicro.com/documents/PCGU1000Install.exe[/url]

This includes everything except the device drivers (v 4.40.1.0 required, these are on the Velleman CD).

The application is pretty straight-forward, I will write-up a user’s manual as time permits. The only really trick things are double clicking on the Current Settings frame header to pull up the display options dialog, and that the asterisk “*” key may be used to enter the “E” exponent character, and that pressing the [Enter] will load the currently input value as Frequency 1 (if the entered value is in the range of 0.01 Hz to 2 MHz).

-cliff-

I fixed up a couple bugs and interface issues today, and added the capability to use either the engineering “multiple of 3” exponent or labeled (I.e. kHz, MHz, mV, ms, etc) display.

This selection is made from the display options pop-up available by double-clicking on the Current Settings frame header, the pop-up looks like this:

When the “label” display is selected the displayed settings look like this:

I find that my preference depends on the project I am working on–if I am “just looking” the labels are nice, however if I am doing design work the exponent display is nice.

-cliff-

The download links above have been updated…