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.所有権を放棄する()