A lot has happened since I last posted regarding this project. Firstly, a few suggestions have been incorporated. A peak-hold function has been added. This shows the maximum level reached at any point on the displayed spectrum and can be reset and/or turned on or off as required. An additional snapshot trace can be taken and retained on-screen. Currently this is limited to a single snapshot but it would be possible to add more. Additional sweep-widths of 100, 200 and 500Hz have been added. The vertical dB scale can now be selected to show 2, 5, or 10dB steps as required. I forgot to add 1dB steps but they will be included. Thanks to Paul, SomeYguy and John G4HPW for the above suggestions.
I forgot to answer VK7JJ's query on noise floor limits, sorry about that. Previous shots of the display showed a lower limit of -130dBm with a trace sitting at -120dBm. The on-screen min and max dB levels can be set via Reference level and Span controls, with a maximum span of 170dB and the reference level able to be set from 0dB down to -100dB. Noise floor, as shown in the latest screen shots shows noise floor at -158 dBm. The LNA is turned off, sampling rate(after decimation ) is 500KHZ, with NFFT (number of Fourier bins) set to 262,144, giving a resolution bandwidth of 1.91 Hz per bin. The calculated thermal noise floor is around -170 dBm @ 1.9Hz bandwidth. My signal generator has a minimum output of -127dBm but at those levels the attenuator is a little suspect. It's a Marconi 2019 and my software has shown it has some problems with spurious outputs and suspect signal levels at some frequencies. It is old, and has seen betters days, somewhat like it's owner.
An additional input offset control has been added so that when using something like a noise generator, a reference level of 0dB (for example) may be set, making it easier to measure relative attenuation levels.
Overall scan speed and resolution has been a constant trade off between sampling rates, decimation, the number of bins in the Fourier transform, signal averaging and levels of display zooming. Having spent some time going around in circles trying to find the optimal settings for each sweep width, I've created another dialogue box that allows the user to override the default settings for each sweep width and play with the values if required. The user can then save these settings for the currently selected sweep width, with a reset-to-default option being available.
The DC spike is present, and despite all API settings, I cannot get rid of it entirely. Not surprising really, when using a zero IF system. I'll have to look at using a non-zero IF but that may throw up images where I don't want them. There are ways to get around the image problem but that will involve additional coding. I'll have to try it and see how it goes. The spike seems rather higher than that shown on SDRuno, so one more thing to discuss with Tech Support.
The analyser detects and lists RSP devices currently connect and allows selection from a list of available devices. Multiple copies of the program have been run, with RSPs already in use by another system listed as being present but being flagged as unavailable.
An options dialogue has been added. This allows the user to select their own preferences for screen, grid, main trace, snap and peak trace colours. In addition, users can specify what Arduino pins to use if they are driving an Analog Devices DDS, and select which model DDS they are using. I included this so that those who have existing Arduino hardware may use whatever pins are convenient, it also ensures that the user is not locked into a particular Arduino model. There are also a few other options included in the dialogue. Arduino firmware is pretty well completed and just needs final testing.
Progress has been slower than I would have liked. As is always the way, much time can be spent in sorting out something that on the surface looks to be trivial. In some cases I have had to scrap some code and rewrite some sections. Sweeps of 10MHz and below are fine, but widths above that are still causing some problems, with large amplitude changes and instabilities being noted when crossing band boundaries. One more thing to consult Tech Support about.
Regarding the tracking generator. I'm come to the conclusion that this may be a bit of a non-starter. Unlike a conventional spectrum analyser that provides a continuous sweep, using a broadband receiver and a generator that provides discrete frequencies, does not seem to be a good match. The system does work, but the time taken to complete a sweep, especially large sweep widths at high resolution becomes time-to-put-the-kettle-on-time. In addition, using a DDS limits the upper frequency to around 60-70MHz, when using one of the cheap DDS modules available on EBay. There is a version available that allows use up to a little over 100MHz but that starts to get expensive, with prices up around the $100 mark. The spectral purity of the output of these modules also leaves much to be desired. Using a cheap noise generator has shown to be far better, and a lot faster, and includes coverage well above 1GHz. I'm going to leave the generator facility in-place in case anybody wants to play with it. It may be useful as a spot frequency marker, or some other purpose. It will be needed if I incorporate my VNA (vector network analyser) code into the project.
Rather than delay the release of a beta version, I've decided to release the project as promised around mid May, but it will be an alpha version. This may (probably) include several undocumented features (bugs) but will certainly be usable. One thing is certain, given the number of changes to the overall system design I have made over time, much of the code really does need to be re-written. That's not as bad as it sounds. All the major code modules will remain the same with a few tweaks here and there. The major change will be the way in which the modules interact with each other.
Overall I'm very happy with the project, and the level of interest shown has been both surprising and gratifying. I only hope the final lives up to expectations. Your thoughts and suggestions, particularly regarding the tracking generator as ever, will be most welcome.
Enough waffle from me, over to you.
73's - Steve