Process
Our first design idea was two separate gain op-amps, one at 5x and one at 50x, with a multiplexer switched by comparators to pick between them. In our first design review, our professor and lab instructor wisely took that apart and pointed us at something much simpler: one gain stage that sits at 1x, with an NPN transistor that switches in a second feedback resistor to make it 10x when the logic tells it to. Same result, a fraction of the parts.
From there the chain settled into: a Wien bridge oscillator generates a steady sine wave, a first gain stage boosts it, the test capacitor passes current, the TIA converts that current to a voltage, a second gain stage scales it, a peak detector holds the AC maximum as a DC level, and two comparators feed SR latches that decide which decade we are in and switch the gain transistors. Five LEDs report the state: Under, Decade 1, Decade 2, Decade 3, Over.
One decision I still like is putting the two gain stages on opposite sides of the test capacitor. The first one makes sure enough current flows through the capacitor to be detected at all, and the second makes sure the voltage coming out of the TIA is large enough to be processed reliably. Amplifying as close to the source as possible keeps noise down, so the stage before the capacitor does the work for the middle range.
We proved the concept in LTspice first, then built on the breadboard one block at a time, checking each stage on the oscilloscope against the time-domain equation before adding the next. With 22 nF in the socket the Wien bridge measured 652 Hz at 500 mV, gain stage 1 brought it to about 5 V, and the TIA came out as an inverted cosine shifted 93 degrees from its input, which is what the math predicted. Once two decades worked, we added a third (0.5 to 5 µF), which meant a second gain stage plus another SR latch, NOR gate, and inverter to hold the extra state.