Pythonを使用して出力信号を観察しながら任意の波形を生成する
- Moku:Lab
- Moku:Go
-
Moku:Pro
Moku:Proに関するよくある質問 Moku:Pro波形発生器 Moku:Proタイム&周波数アナライザ Moku:Proロジックアナライザ/パターンジェネレーター Moku:Proレレーザーロックボックス Moku:Proロックインアンプ Moku:Proスペクトラムアナライザ Moku:Proデータロガー Moku:Pro任意波形発生器 Moku:Proマルチ機器モード Moku:Pro位相計 Moku:Pro FIRフィルタービルダー Moku:Pro PIDコントローラー Moku:Proオシロスコープ Moku:Pro周波数応答アナライザ Moku:Proデジタルフィルターボックス
- Python API
- MATLAB API
- 任意波形発生器
- データロガー
- デジタルフィルターボックス
- FIR フィルタ ビルダー
- 周波数応答アナライザー
- レーザーロックボックス
- ロックインアンプ
- オシロスコープ
- 位相計
- PIDコントローラー
- スペクトラムアナライザー
- 時間と周波数アナライザー
- 波形発生器
- ロジックアナライザ/パターンジェネレーター
- マルチ機器モード
- Mokuクラウドコンパイル
- Mokuに関するよくある質問
- LabVIEW API
任意波形ジェネレータとオシロスコープの Python 実装
Mokuの任意波形ジェネレータ (AWG) を Python 内に展開して、出力信号を駆動することができます。同時に、Python AWG をオシロスコープとして使用して出力信号を表示することもできます。これを行うには、出力 1 を入力 1 にループバックする必要があります。
これは以下の Python で実装されています。
#
# Moku 例: プロット オシロスコープ と 芸術作品 波形 ジェネレータ
#
# これ 例 示す どうやって あなた できる 設定する の 任意波形ジェネレータ 楽器、
# そして ビュー 引き起こされた 時間電圧 データ フレーム で リアルタイム。
#
# (ハ) 2023 Liquid Pty. 株式会社
#
から moku.楽器 輸入 任意波形ジェネレータ、 マルチインストゥルメント、 オシロスコープ
輸入 ナンピー として いいえ
輸入 マットプロット
輸入 matplotlib.pyplot として プラス
# 打ち上げ ミム そして 接続する に あなたの デバイス を通して IP
メートル = MultiInstrument('192.168.###.###', 強制接続=True、 プラットフォームID=4)
ああ = m.set_instrument(1, 任意波形ジェネレーター
awg.set_defaults()
osc = m.set_instrument(2, オシロスコープ)
osc.set_defaults()
接続 = [dict(source="Slot1OutA", 宛先="Slot2InB")、
dict(source="Slot1OutA", 宛先="出力1")、
dict(ソース="Slot2OutA", 宛先="Slot2InA")]
m.set_connections(接続=接続)
電流正弦 = np.ゼロ(1000)
グ = 0
のために x で 電流正弦:
電流正弦波[g] = np.sin((float(g)*2*np.pi/len(current_sine)))
グ +=1
試す:
# 生成する の 出力 正弦波 の上 チャネル 2、 500mVpp、 1MHz、 0V オフセット
awg.generate_waveform(チャンネル=1, 頻度=1e6、 振幅 = 0.5、 サンプルレート='自動'、 lut_data=リスト(現在の正弦波)、 補間 = 真実)
# トリガー の上 入力 チャネル 2、 上昇 角、 0V と 0.1V ヒステリシス
osc.set_trigger(ソース='チャンネルA', タイプ="エッジ", レベル=0、 ヒステリシス=0.1)
# ビュー +-5マイクロ秒、 つまり トリガー で の 中心
osc.set_timebase(-5e-6, 5e-6)
osc.generate_waveform(1, '正弦'、 振幅=0.5、 頻度=1e6、 対称性=0.0)
# 得る イニシャル データ フレーム に セット 上 プロット パラメータ。 これ できる なれ 終わり 一度
# もし 私たちは 知る それ の 軸 ない 行く に 変化 (さもないと 私たちは する
# これ で の ループ)
plt_dtさん = osc.get_data()
# セット 上 の プロット パラメータ
plt.ion()
plt.show()
plt.grid(True)
plt.ylim([-1,1])
plt.xlim([plt_dt['時間'][0], plt_dt['時間'][-1]])
行1、 = plt.plot([])
2行目、 = plt.plot([])
ax=plt.gca()
# これ ループ 継続的に アップデート の プロット と 新しい データ
その間 真実:
# 得る 新しい データ
データ = osc.get_data()
# アップデート の プロット
行1.set_ydata(データ['ch1'])
行1.set_xdata(データ['time'])
行2.set_ydata(データ['ch2'])
行2.set_xdata(データ['time'])
plt.一時停止(0.001)
を除外する 例外 として e:
print(f'例外 発生しました: {e}')
ついに:
# 近い の 繋がり に の Moku デバイス
# これ 保証する ネットワーク リソース そして リリース 正しく
m.所有権を放棄する()