-
Notifications
You must be signed in to change notification settings - Fork 2
ADC and RF Power Measurement Considerations
Many RF detectors only output a small range of voltage. Diodes detector and modules like the AD8318 and ADL5519 dual detector.
To read these with good accuracy either a high resolution AD converter is needed, or an op amp is needed to expand the voltage range closer to the supply voltage, or the reference voltage if less than the supply voltage. Noise and Vref stability also matter. Some measurements such as 12, 28 or temperature are wide range and change little in respect to the ACDC resolution so work fine.
Noise Noise from adjacent onboard components, changing loads on the output pins, and poor voltage regulation and filtering contribute to unstable ADC readings. I find the 5V models can be the worst since all the working parts are on the 5V bus causing voltage dips and noise. The 3.3V models often have an onboard 5 to 3.3V regulator and seem to be cleaner operating ADC wide.
Resolution Most Arduino are 10 bit (0-1023 counts), a few are 12 bit (0-4095 counts). When better ADC performance is required, several inexpensive external ADC modules can be used. Examples are eth ADS1100 and ADS1115 I2C connected 16 bit ADC modules. The ADS1115 has 4 channels, the ADS1100 has 1 in single ended configuration. They also have onboard Vef and a PGA (Programmable Gan amplifier) with configurable gain. This is useful to take a 0 to 2VDC diode detector output range and amplify it to cover about 0-5V or 0-3VDC so the ADC's full range can be leveraged and yield better accuracy. The PSoC5 has 3 types of ADC and the one I use has 20bit resolution, 19 bit accounting for the high bit representing sign. 65K counts is a lot of resolution. It also has onboard PGAs. The Vref is also adjustable. I use 2.5V. The ADL5519 dual detector happens to be 0.5 to 2.2V range for about 0dBm to -60dBm. Log detectors produce a very small voltage change for large power changes vs linear sources. One reason voltage, current, and temp readings - being linear, not log, work OK on a 10bit ADC found on most Arduinos. RF being log scale is tougher (for a wide range or ~0.1% accuracy).
Voltage Range As mentioned above, to use the full resolution of an ADC, you want to match the input source voltage to the ADC voltage range, typically 1, 3.3 or 5V. External voltage divider resistors are used to reduce high voltages to safely under the max pin input voltage, typically 3.3. or 5V. For extra protection a zener diode might be connected on the input pin to clamp the voltage near the IO pin to ensure it never exceeds the max voltage spec for that pin. For voltage sources located some distance, such as main station 12V or 48V power supply, you want to use a fuse or better, a current limiting resistor near the source end to protect form accidental shorts to ground. At the ADC end use relatively high value resistors to in the voltage divider to minimize the effect of the current limit resistor and to protect the CPU in the event that the 12 or 48V is ever connected direct (no current limit resistor).
Voltage references Part of the accuracy and stability comes from the choice and quality of the ADC voltage reference. Many CPUs have the ability to connect to an external Vref source for better performance. Some CPU model boards are noisier than others.