使用 Python 生成任意波形并观察输出信号
任意波形发生器和示波器的Python实现
Moku的任意波形发生器 (AWG) 可以部署在 Python 中以驱动输出信号。同时,Python AWG 可以用作示波器来查看输出信号。为此,您需要将输出 1 环回到输入 1。
这是在下面的 Python 中实现的:
# # Moku 例子: 绘图 示波器 和 文库 波形 发电机 # # 这 例子 演示 如何 你 能 配置 这 任意波形发生器 乐器, # 和 看法 触发 时间电压 数据 框架 在 即时的。 # # (三) 2023 液体 仪器 私人有限公司 有限公司 # 从 moku.instruments 进口 任意波形发生器, 多仪器, 示波器 进口 numpy 作为 NP 进口 matplotlib 进口 matplotlib.pyplot 作为 血小板 # 发射 管理硕士 和 连接 到 你的 设备 通过 知识产权 米 = MultiInstrument('192.168.###.###', force_connect=True, 平台ID=4) 特设工作组 = m.设置仪器(1, 任意波形发生器 awg.设置默认值() 振荡器 = m.设置仪器(2, 示波器 osc.set_defaults() 連接 = [dict(source="Slot1OutA", 目的地=“Slot2InB”), 字典(源=“Slot1OutA”, 目标="输出1", 字典(源=“Slot2OutA”, 目的地=“Slot2InA”)] m.set_connections(连接=连接) 电流正弦 = np.零(1000) 克 = 0 为了 十 在 电流正弦: 电流正弦[g] = np.sin((float(g)*2*np.pi/len(current_sine))) 克 +=1 尝试: # 产生 一个 输出 正弦波 在 渠道 2、 500毫伏峰峰值, 1兆赫, 0伏 抵消 awg.生成波形(通道=1, 频率=1e6, 振幅 = 0.5, 采样率='自动', lut_data=列表(当前正弦波), 插值 = 真的) # 扳机 在 输入 渠道 2、 上升 边缘, 0伏 和 0.1伏 滞后 osc.set_trigger(源='ChannelA', 类型=“边缘”, 级别=0, 滞后=0.1) # 看法 +-5微秒, IE 扳机 在 这 中心 osc.set_timebase(-5e-6, 5e-6) osc.生成波形(1, ‘正弦’ 振幅=0.5, 频率=1e6, 对称性=0.0) # 得到 最初的 数据 框架 到 放 向上 密谋 参数。 这 能 是 完毕 一次 # 如果 我们 知道 那 这 轴 不是 去 到 改变 (否则 我们会 做 # 这 在 这 环形) plt_dt = osc.获取数据() # 放 向上 这 密谋 参数 plt.ion() plt.显示() plt.grid(真) plt.ylim([-1,1]) plt.xlim([plt_dt['时间'][0], plt_dt['时间'][-1]]) 第1行, = plt.绘图([]) 第2行, = plt.绘图([]) 斧头=plt.gca() # 这 循环 持续地 更新 这 阴谋 和 新的 数据 尽管 真的: # 得到 新的 数据 数据 = osc.获取数据() # 更新 这 阴谋 line1.set_ydata(数据['ch1']) line1.set_xdata(数据['时间']) line2.set_ydata(数据['ch2']) line2.set_xdata(数据['时间']) plt.暂停(0.001) 除了 例外 作为 电子邮件: 打印(f'异常 发生: {e}') 最后: # 关闭 这 联系 到 这 Moku 设备 # 这 确保 网络 资源 和 发布 正确地 m.放弃所有权()