用pyvisa库在仪器安捷伦33120A和EG&G 7265 DSP Lock-in Amplifier扫描音叉谐振子频率并绘图的完整python代码利用import pyvisa as visa
时间: 2024-05-12 20:12:49 浏览: 245
以下是一个示例代码,用于扫描音叉谐振子频率并绘制图表,使用pyvisa库进行通信:
```python
import pyvisa as visa
import numpy as np
import matplotlib.pyplot as plt
# 创建VISA资源管理器,并打开设备
rm = visa.ResourceManager()
inst1 = rm.open_resource('GPIB0::10::INSTR') # 安捷伦33120A信号发生器
inst2 = rm.open_resource('GPIB0::8::INSTR') # EG&G 7265 Lock-in放大器
# 设置安捷伦33120A信号发生器
inst1.write('*RST')
inst1.write('FUNC:SHAP SINE')
inst1.write('VOLT 1.0') # 设置输出电压
inst1.write('FREQ 1000') # 设置起始频率
inst1.write('OUTP:STAT ON') # 打开输出
# 设置EG&G 7265 Lock-in放大器
inst2.write('REST') # 重置
inst2.write('HARM 1') # 设置参考谐波
inst2.write('SLVL 0.5') # 设置参考信号电平
inst2.write('SEND 0') # 关闭发送控制位
inst2.write('SRAT 8') # 设置采样率
inst2.write('SYNC 1') # 打开同步检测
inst2.write('IGND 1') # 打开交流接地
# 设置扫描参数
start_freq = 100 # 起始频率
stop_freq = 10000 # 终止频率
freq_step = 10 # 频率步长
# 扫描频率并记录结果
freq_list = np.arange(start_freq, stop_freq, freq_step)
amp_list = []
for freq in freq_list:
inst1.write(f'FREQ {freq}')
inst2.write('REST')
inst2.write('STRT')
amp = inst2.query('RMOD?')
amp_list.append(float(amp))
# 绘图
plt.plot(freq_list, amp_list)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('Resonant frequency scan of a tuning fork')
plt.show()
# 关闭设备和资源管理器
inst1.write('OUTP:STAT OFF')
inst1.close()
inst2.close()
rm.close()
```
在此示例中,我们连接到安捷伦33120A信号发生器和EG&G 7265 Lock-in放大器,使用安捷伦发生器生成一个正弦波信号,并将其发送到谐振器。然后,我们使用Lock-in放大器测量反射信号,并计算谐振器的振幅。我们扫描一系列频率,记录每个频率下的振幅,并将结果绘制为图表。最后,我们关闭设备并释放资源管理器。
阅读全文