Skip to content

Commit

Permalink
Tested Boonton 4240 RF PM driver
Browse files Browse the repository at this point in the history
  • Loading branch information
jclederman committed Nov 13, 2024
1 parent e7135fc commit aba8833
Showing 1 changed file with 16 additions and 12 deletions.
28 changes: 16 additions & 12 deletions lightlab/equipment/lab_instruments/Boonton_4240_PM.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,41 @@
import time
from . import VISAInstrumentDriver

# TODO: Need to ensure the wait time matches the filter time properly, and implement waiting here

class Boonton_4240_PM(VISAInstrumentDriver):
""" Boonton 4240 (4242) Two-Channel RF Power Meter
`Manual: <https://boonton.com/portals/0/products/rf%20power%20meters/4240/4240_instructionmanual.pdf>`__
"""

def __init__(self, name="Booton 4240 PM", address=None, **kwargs):
VISAInstrumentDriver.__init__(self, name=name, address=address, **kwargs)

def reset(self):
return self.write("*RST")

def get_id(self):
def getID(self):
return self.query("*IDN?")

def get_filter_time(self, channel=1):
def getFilterTime(self, channel=1):
return float(self.query(f"SENS{channel}:FILT:TIM?"))

def set_filter_time(self, time=0.05, channel=1):
self.time
def setFilterTime(self, time=0.05, channel=1):
self.write(f"SENS{channel}:FILT:TIM {time}")

def read(self, channel=1, wait_time=5):
for i in range(10):
# Note: this function fails for filter times beyond 1. More investigation required
def read(self, channel=1):
for i in range(3):
try:
response = self.query(f"READ{channel}:CW:POW?", wait_time=wait_time) # Averaging time
response = self.query(f"READ{channel}:CW:POW?")
break
except:
pass

splitted = response.split(",")
channel = int(splitted[0])
power = float(splitted[1])
return power
if len(splitted) == 2:
channel = int(splitted[0])
power = float(splitted[1])
return power
return -99.99


0 comments on commit aba8833

Please sign in to comment.