As an electrical engineer, I love test kit. However, it's really expensive. I have the idea of building a Spectrum Analyzer with a dual conversion superheterodyne architecture. It would cover DC to daylight and be everything I'd ever wanted...
But I decided to start smaller. Besides, one of the most important parts of a Spec An is the RBW filter. How do I know if I had a good one? I could use the Spec An itself to tell me or I could make a simpler piece of test kit (this Network Analyzer shield) that would help out in building all manner of RF things.
This was a great way to get my feet wet and learn many things about building circuit boards for RF work. What you see here is Rev 2. Rev 1 had many issues, the worst of which was the amplifier on the output. I used an Op Amp which couldn't swing rail to rail so I was getting lot's of distortion (that I could see on my Rigol 70MHz scope) and also made a really great oscillator at ~600MHz (which I only found when I put it on a Spec An at work (+3dBm... my bad, FCC, when I hooked it up to a short piece of wire and briefly listened to my sine wave signal on a short wave receiver)). I also screwed up the DC biasing... Oh well, that's why I made Rev 2!
I wrote a program to display the trace and control the board in Python. It has a known error where sometimes when decreasing the number of samples in a sweep, it throws an index out of array bounds error and stops working. I could fix it by putting a state machine into the program, but it works pretty well as is so I haven't done that yet.
the error where decreasing the sweep size basically causes a seg. fault can be easily solved by using "try: except:" phrases such as below.
if len(self.adcValue):
try:
# Read and interpret ADC value.
except:
SetupArrays()