NI-DAQmxおよびLabVIEWを使用したパルス幅変調(PWM)

更新しました May 30, 2021

環境

ハードウェア

  • CompactDAQ Chassis
  • CompactDAQ Controller
  • Multifunction I/O Device

ソフトウェア

  • LabVIEW

ドライバ

  • NI-DAQmx

オペレーティング・システム

  • Windows

このドキュメントはNI-DAQmxシリーズ入門の一部です。

パルス幅変調(PWM)信号は、アナログ回路を制御するためのデジタルパルスを生成するための技術です。 PWM信号は、その動作を定義する2つの主要なコンポーネント、デューティサイクルと周波数で構成されています。この記事では、NI-DAQmxハードウェアとリソースを使用してハードウェアを検討し、ソフトウェアまたはハードウェアのタイミングでPWMの使用を開始します。

ハードウェアに関する考慮事項


PWM生成とパルスカウントの実装は、使用しているハードウェアによって異なります。 PWM出力を生成するには、カウンタが適しています。ハードウェアのデータシートを参照して、そのデバイスで使用可能なカウンターの数と、PWMをサポートできるかどうかを確認してください。

モジュール/カード:

シャーシ/コントローラー:

  • cDAQ –ユーザーマニュアルでシャーシのカウンターの数を確認します。この機能は、シャーシのオンボードカウンターへのアクセスを提供するモジュールでのみ使用できます。
 

LabVIEWでNI-DAQmxを使用したPWM


NI-DAQmxにPWMを実装するには、ハードウェアとその機能を調査したことを確認してください。その後、アプリケーションに最適なソリューションを決定できます。ソフトウェアタイムまたはハードウェアタイムPWMです。

ソフトウェアタイミングパルス幅変調
アプリケーションに速度と精度に関して厳しい要件がない場合は、デジタル出力をパルス列またはPWM生成のソフトウェアタイミング制御とともに使用できます。

ソフトウェアタイミングデジタルI / Oを使用してPWMを実装するためのコミュニティのサンプルが公開されています


ハードウェアタイミングパルス幅変調
  • サンプルプログラムから始める(推奨)
    1. LabVIEWを起動します
    2. [ヘルプ] >> [サンプルの検索...]に移動すると、 NIサンプルファインダが起動します
    3. [参照]タブにいることを確認し、[ハードウェア入力と出力] >> DAQmx >> [カウンタ出力]フォルダにナビゲートします。
Counter Continuous Output.png
  1. 使用するサンプルをダブルクリックします
  2. このサンプルは編集しないでください。変更を加えると、元のサンプルが上書きされます。
    1. [ファイル] >> [名前を付けて保存]をクリックします
    2. ニーズに合ったオプションを選択してください。「VI階層の複製を別の場所に保存」を選択することをお勧めします
    3. 場所を選択して[保存]をクリックします
    4. サンプルを閉じて、新しい場所に保存したサンプルを開きます
  3. サンプルのローカルコピーを開いたら、サンプルで使用されている構成とチャネルを変更できます。
  • 新規VIから開始する
    1. DAQmxチャンネルを作成 VIを使用して、カウンタ出力チャネルを作成および初期化します。アプリケーションのニーズに基づいてNI-DAQmxでカウンタ出力タスクを定義する方法は3つあります。
      • COパルス周波数
      • COパルス時間
      • COパルスティック--ハードウェアが異なればタイムベースも異なり、同じコードを異なるハードウェアで実行するとパルス幅が変わる可能性があります。
デューティサイクル、周波数、カウンタ、待機状態、および初期遅延に適切な入力を選択します
  1. DAQmxタイミングVIを使用して、パルス生成の期間を構成します。
注: 指定なしインスタンスは、パルス列生成などのカウンタータスクなど、サンプルのタイミングが不要な場合に使用する必要があります。さらに、サンプルモードとして[連続サンプル]を選択します。
  1. DAQmxタスクを開始VIを呼び出します。このVIはパルス列の生成を開始します。
  2. ユーザーが停止ボタンを押すまで継続的に実行するには、 Whileループを配置します。
  3. Whileループの内部:
    1. デューティサイクルのローカル変数を作成しますこれは元のデューティサイクル変数と比較され、比較結果はケースストラクチャに繋がります。
    2. ケースストラクチャを配置します。
      1. Trueの場合: DAQmx書き込みVIを呼び出します。デューティサイクルが変更された場合、新しいデューティサイクルはDAQmx書き込みVIを使用して設定されます。
      2. Falseの場合:すべての入力を出力に直接配線します。デューティサイクルが変更されていない場合、ケースストラクチャのFalseケースが実行され、何も更新されません。
    3. DAQmxタスク完了確認VIを使用してエラーを確認します。
    4. ループに短い時間遅延を導入するには、次のミリ秒の倍数まで待機関数を追加します。これにより、ループが可能な限り高速に実行されなくなり、不要なプロセッサリソースが消費されることを防ぎます。
  4. DAQmxタスクをクリアVIを呼び出して、タスクをクリアします。
  5. シンプルエラー処理VIを使用して、エラーをチェックして表示します

注:このイメージはLabVIEWスニペットであり、プロジェクトで再利用できるLabVIEWコードが含まれています。スニペットを使用するには、画像を右クリックしてコンピュータに保存し、ファイルをLabVIEWダイアグラムにドラッグします。