The audio preamp (Q70) in the uBitx isn’t biased optimally and therefore overloads about 10 dB sooner than it should. As it comes from the factory this stage, which is powered from 12vdc, is biased to about 1.6v at the collector. For best large signal handling, it should be biased to 5v or 6v. This is easy to fix by adding a 16K (optimum value; 15K will work) from base to ground. This is very convenient to do with a SMD resistor, but a leaded part can also be used. I’ll post a picture when I get a chance.
My software-derived S-meter is now working very, very nicely with no hardware and no hickups. I moved away from the continuous-conversion interrupt-driven ADC to a timer interrupt based ADC that converts about 3900 times per second. It has very fast attack and software definable decay. I implemented a table-driven logarithmic compression function so I can calibrate the meter in S units. Right now it drives a moving-bar meter on the main TFT display (see the pictures below), but I’ll eventually add a dedicated smaller TFT just for the S-meter and other metering functions. Next I plan to add an I2C digipot in place of the volume control. This will allow the S-meter function to control the volume as a software controlled AGC. I also fine-tuned the 400 ppr encoder so that no step-size selector is required. When you turn the knob very slowly, it tunes in 1 hZ steps, accelerating to 2, 3, 5, 10, 25, 50 and 100 hZ steps as you spin the knob faster. You can smoothly tune in a CW or SSB signal, but also quickly traverse the whole band in a few revolutions when you wish. It feels like an expensive radio.