A while back I found myself in the need of an adjustable RF attenuator capable of high-GHz operation. As luck would have it I had an old Spectrum analyser on the shelf at work, which we had retired quite some time ago.
Spectrum analysers being quite capable test instruments, I knew that the input attenuation would be done with a standalone module that we could recover for reuse without too much trouble.
The attenuator module
Here’s the module itself, with the factory drive PCB removed from the bottom, showing the solenoids that operate the RF switches. There are test wires attached to them here to work out which solenoid switches which attenuation stage. In the case of this module, there are switches for the following:
- Input select switch
- AC/DC coupling
For me this means I have up to -75dB attenuation in 5dB steps, with optional switchable A-B input & either AC or DC coupling.
Drive is easy, requiring a pulse on the solenoid coil to switch over, the polarity depending on which way the switch is going.
Building a Control Board
Now I’ve identified that the module was reusable, it was time to spin up a board to integrate all the features we needed:
- Onboard battery power
- Pushbutton operation
- Indication of current attenuation level
The partially populated board is shown at right, with an Arduino microcontroller for main control, 18650 battery socket on the right, and control buttons in the centre. The OLED display module for showing the current attenuation level & battery voltage level is missing at the moment, but it’s clear where this goes.
As there weren’t enough GPIO pins for everything on the Arduino, a Microchip MC23017 16-Bit I/O expander, which is controlled via an I²C bus. This is convenient since I’m already using I²C for the onboard display.
Driving the Solenoids
A closer view of the board shows the trip of dual H-Bridge drivers on the board, which will soon be hidden underneath the attenuator block. These are LB1836M parts from ON Semiconductor. Each chip drives a pair of solenoids.
The bottom of the board has all the power control circuitry, which are modularised for ease of production. There’s a Lithium charge & protection module for the 18650 onboard cell, along with a boost converter to give the ~9v rail required to operate the attenuator solenoids. While they would switch at 5v, the results were not reliable.
A bit more time later, some suitable firmware has been written for the Arduino, and the attenuator block is fitted onto the PCB. The onboard OLED nicely shows the current attenuation level, battery level & which input is selected.