Robert Fletcher
Published

RF Power Amplifier Test Bench with Mini-Circuits ZVE-3W-183+

Build a practical microwave RF test bench around the Mini-Circuits ZVE-3W-183+ high-power amplifier. The project combines a 5.9–18 GHz signa

IntermediateWork in progress16
RF Power Amplifier Test Bench with Mini-Circuits ZVE-3W-183+

Things used in this project

Hardware components

Mini-Circuits ZVE-3W-183+
×1
RF signal generator / microwave synthesizer
RF input source
×1
RF power
×1
50 Ω RF atten
×1
50 Ω RF termination, ≥3 W
Input/output level control and protection
×1
Directional coupler
Optional forward/reflected-powe
×1
DC bench power supply, 13–18 V
Amplifier power source
×1
Current/voltage monitor
DC power consumption measurement
×1
ESP32 deve
Environ
×1
DS18B20 temperature se
Optional heatsink temperature monitoring
×1
5.1 V/3.3 V regulator
ESP32 sensor supply
×1
SMA coaxial cables rated for 18 GHz
RF interconnection
×1
SMA attenuator set
Level adjustment
×1
RF DC block
Optional protecti
×1
Cooling fan
Additional thermal
×1
50 Ω load
RF output load during ben
×1

Software apps and online services

Arduino IDE
Arduino IDE
Python 3
Jupyter Notebook
NumPy
pandas
Matplotlib
Optional PyVISA for instrument control
VNA manufacturer's mea
Serial terminal

Hand tools and fabrication machines

SMA torque wrench
Digital multimeter
Oscilloscope
Soldering iron (generic)
Soldering iron (generic)
Wire cutter and stripper
Small screwdrivers
Drill and mounting hardware
Bench vise
3D printer, optional
CNC mill

Story

Read more

Schematics

Diagram 1 — RF signal path

Diagram 2 — DC and monitoring system

Code

DC/temperature monitoring firmware

Arduino
```cpp
/*
  ZVE-3W-183+ RF Amplifier Test Bench
  ESP32 monitoring firmware

  Functions:
  - Reads DC supply voltage
  - Reads DC current from an analog current-sensor output
  - Reads DS18B20 heatsink temperature
  - Calculates DC input power
  - Sends CSV data to the PC

  IMPORTANT:
  The analog scaling and current-sensor conversion must be
  calibrated for the actual hardware used.
*/

#include <OneWire.h>
#include <DallasTemperature.h>

#define TEMP_PIN 4
#define VOLTAGE_PIN 34
#define CURRENT_PIN 35

OneWire oneWire(TEMP_PIN);
DallasTemperature sensors(&oneWire);

// Example ADC reference.
// Calibrate this value for the actual ESP32 board.
const float ADC_REF = 3.3;
const int ADC_MAX = 4095;

// Example voltage-divider ratio.
// Change these values to match the actual divider.
const float R_TOP = 100000.0;
const float R_BOTTOM = 22000.0;

// Example current sensor parameters.
// Replace with the actual sensor's transfer function.
const float CURRENT_ZERO_V = 1.65;
const float CURRENT_SENSITIVITY = 0.066;   // V/A example only

void setup()
{
  Serial.begin(115200);

  analogReadResolution(12);

  sensors.begin();

  Serial.println("time_ms,voltage_V,current_A,power_W,temperature_C");
}

float readVoltage()
{
  int raw = analogRead(VOLTAGE_PIN);

  float adcVoltage =
      (raw * ADC_REF) / ADC_MAX;

  float inputVoltage =
      adcVoltage * ((R_TOP + R_BOTTOM) / R_BOTTOM);

  return inputVoltage;
}

float readCurrent()
{
  int raw = analogRead(CURRENT_PIN);

  float sensorVoltage =
      (raw * ADC_REF) / ADC_MAX;

  float current =
      (sensorVoltage - CURRENT_ZERO_V)
      / CURRENT_SENSITIVITY;

  if (current < 0)
    current = 0;

  return current;
}

void loop()
{
  sensors.requestTemperatures();

  float temperature =
      sensors.getTempCByIndex(0);

  float voltage =
      readVoltage();

  float current =
      readCurrent();

  float power =
      voltage * current;

  Serial.print(millis());
  Serial.print(",");

  Serial.print(voltage, 3);
  Serial.print(",");

  Serial.print(current, 3);
  Serial.print(",");

  Serial.print(power, 3);
  Serial.print(",");

  Serial.println(temperature, 2);

  delay(1000);
}
```

DC/temperature monitoring firmware

C/C++
```cpp
/*
  ZVE-3W-183+ RF Amplifier Test Bench
  ESP32 monitoring firmware

  Functions:
  - Reads DC supply voltage
  - Reads DC current from an analog current-sensor output
  - Reads DS18B20 heatsink temperature
  - Calculates DC input power
  - Sends CSV data to the PC

  IMPORTANT:
  The analog scaling and current-sensor conversion must be
  calibrated for the actual hardware used.
*/

#include <OneWire.h>
#include <DallasTemperature.h>

#define TEMP_PIN 4
#define VOLTAGE_PIN 34
#define CURRENT_PIN 35

OneWire oneWire(TEMP_PIN);
DallasTemperature sensors(&oneWire);

// Example ADC reference.
// Calibrate this value for the actual ESP32 board.
const float ADC_REF = 3.3;
const int ADC_MAX = 4095;

// Example voltage-divider ratio.
// Change these values to match the actual divider.
const float R_TOP = 100000.0;
const float R_BOTTOM = 22000.0;

// Example current sensor parameters.
// Replace with the actual sensor's transfer function.
const float CURRENT_ZERO_V = 1.65;
const float CURRENT_SENSITIVITY = 0.066;   // V/A example only

void setup()
{
  Serial.begin(115200);

  analogReadResolution(12);

  sensors.begin();

  Serial.println("time_ms,voltage_V,current_A,power_W,temperature_C");
}

float readVoltage()
{
  int raw = analogRead(VOLTAGE_PIN);

  float adcVoltage =
      (raw * ADC_REF) / ADC_MAX;

  float inputVoltage =
      adcVoltage * ((R_TOP + R_BOTTOM) / R_BOTTOM);

  return inputVoltage;
}

float readCurrent()
{
  int raw = analogRead(CURRENT_PIN);

  float sensorVoltage =
      (raw * ADC_REF) / ADC_MAX;

  float current =
      (sensorVoltage - CURRENT_ZERO_V)
      / CURRENT_SENSITIVITY;

  if (current < 0)
    current = 0;

  return current;
}

void loop()
{
  sensors.requestTemperatures();

  float temperature =
      sensors.getTempCByIndex(0);

  float voltage =
      readVoltage();

  float current =
      readCurrent();

  float power =
      voltage * current;

  Serial.print(millis());
  Serial.print(",");

  Serial.print(voltage, 3);
  Serial.print(",");

  Serial.print(current, 3);
  Serial.print(",");

  Serial.print(power, 3);
  Serial.print(",");

  Serial.println(temperature, 2);

  delay(1000);
}
```

Credits

Robert Fletcher
20 projects • 1 follower
Senior semiconductor engineer at AVAQ Semiconductor. With extensive experience in electronic components, supply chain solutions & sourcing.

Comments