Automatic Gain Controll

In an SSB receiver the AGC circuit is extremly important,
Because the signal level is converted into audio level, via the BFO mixer.
The AGC circuit sense the Audio level and control the IF gain so that the audio level is constant, no matter if the station is local or DX.
The RF input signal level can change from -120 to +20dBm in a matter of milliseconds, that is many million times,
This kind of AGC is called Audio AGC and is easy cheap and simple to construct, the trade off is the attack times will vary depending of Audio frequency
After constructing this AGC I have tested it both on SSB and CW signals, on different signal levels, and found it satisfying.

R7 is the ATTACK time, R8 is the RELEASE time also called HANG time, C2 can be changed to your need of regulation speed, I have 1uF and 2u2 in parallel.
For SSB only C2 can be 1uF, for CW only C2 can be 10uF, or you can add a switch to change the attack and release times.
R11 is the RF GAIN or better called IF MAX GAIN, Here the MAXIMUM possible IF gain can be set like eny other HF Transceiver.

The two op-amps is FET input, Rail to Rail on both input and output, I think TL072 or even LM358 could be used.
The 470 Ohm resistor in series with the output is to avoid self-oscillation in the Rail to rail output, This problem apply not to all op-amp types.

The breadboard setup of the AGC before the PCB is made.

The output voltage goes to the two IF amps and the PIC controller pin 2, The PIC has 10 bits resolution on the ADC, (Analog to Digital Converter)
This is used for the S-Meter, The S-Meter readout is calibrated using a signal generator, to show the real S number that represent the signal level
This is the table used to calibrate the read out:
(S9=100 uV, R=50 Ohm)
- 7 dBm
- 17 dBm
- 27 dBm
- 37 dBm
- 47 dBm
- 57 dBm
-67 dBm
-73 dBm
- 79 dBm
- 85 dBm
- 91 dBm
- 97 dBm
- 103 dBm
- 109 dBm
- 115 dBm
- 121 dBm

Try to measure your own HF rig with a signal generator, then you will see that the S-Meter is unuseable for eny report at all.
Here is a few YAESU rigs that I have tested and measured their S-Meter read out..
FT-817 Measured
FT-757 Measured S-units (dBm) Correct value
-41 dBm
-23 dBm S9+60 (-7 dBm)
-47 dBm
-39 dBm S9+40 (-27 dBm)
-77 dBm
-57 dBm S9+20 (-47 dBm)
-80 dBm
-73 dBm S9 (-67 dBm 100uV)
-95 dBm
-79 dBm S8 (-73 dBm)
-98 dBm
-83 dBm S7 (-79 dBm)
-99 dBm
-87 dBm S6 (-85 dBm)
-100 dBm
-89 dBm S5 (-91 dBm)
-101 dBm
-95 dBm S4 (-97 dBm)
-101 dBm
-97 dBm S3 (-103 dBm)
-102 dBm
-100 dBm S2 (-109 dBm)
-103 dBm
-102 dBm S1 (-115 dBm)
-104 dBm
-104 dBm S0 (-121 dBm)

Here is the AGC voltage seen from the PIC ADC,
The ADC is 10 bits, so 0V is 0000 and 5V is 1023
When measuring the generator was set to 14.20000 and RX set to 14.197662 where most signal was detected

The table can also be viewed as a curve,
If I just had mounted a normal meter, the S meter readout would be verry un-linear.
That is why I use the PIC and the LCD display to show the signal strength.
I will also make a BAR-Graph in the LCD to fast show the signal level,
The same BAR-Graph can also be used to display TX power under transmit, or mic level..