A number of components are somewhat susceptible to temperature drift, so I decided to ovenize the main board. Why ovenize? The VNA is a metrology instrument where absolute accuracy in amplitude, frequency, and phase are always important. Because the main board is so small, it is practical to put the whole thing in an oven. (That, and because I’ve done this before, it’s not such a big deal.) The result is an instrument that is repeatable to the part per million level or better, in all specifications, regardless of ambient temperature.
There is a technique the N2PK VNA group is calling corellated double sampling (CDS) that cancels offsets and 1/f noise in the detectors. It’s a software-driven technique that is now implemented in the the available VNA software, and is discussed in the VNA Yahoo group. The only drawback is that it doubles the scan time. It also can’t help with other sources of error such as gain or frequency drift elsewhere in the system, but it does a great job of improving dynamic range. Without an oven, CDS offers vast improvements. With an oven, it’s only necessary for measurements with the highest demands on dynamic range.
The oven system begins with a set of 8 short brass bosses soldered to the ground plane of the board to improve heat transfer to a copper heat spreader. It all resides in an insulated copper housing. Thin-film heaters are applied to the heat spreader, and thermistors are glued to the sensitive areas of the board. A Zilog Z8 Encore XP microcontroller measures the temperature and adjusts heater current through a PID algorithm.
I tested everything out before loading the board to obtain a good model of the process and to develop a good set of PID tuning parameters. This I did with LabVIEW and a National Instruments PCI-6035E data acquisition board. This allowed me to measure several temperatures and drive the heater’s constant-current source with a PID algorithm. Then I translated the LabVIEW code to C running on the Z8. Since the code runs slowly (2 Hz loop rate), all computations are single-precision floating point, which makes programming very easy.
The graph below shows the startup performance with an inset showing fully-settled stability with a noise band of ±0.02 °C. Startup is quick because I use a computed ballistic heatup algorithm where the heater is turned on at full power until observed temperature reaches a specified error band. Then the PID engages with only a relatively small error to deal with. In 8 minutes from application of power, temperature is within 0.1 °C of setpoint.