使用NI-DAQmx和LabVIEW的脈寬調製(PWM)

更新 May 30, 2021

環境

硬件

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

軟體

  • LabVIEW

驅動程式

  • NI-DAQmx

操作系統

  • Windows

本文檔是《 NI-DAQmx系列入門》的一部分。

脈寬調製(PWM)訊號是一種用於產生數字脈衝以控制模擬電路的技術。 PWM訊號由定義其行為的兩個主要成分組成:duty cycle和頻率。本文將通過使用NI-DAQmx硬體和資源來進行硬體考慮,以開始在軟體或硬體時序中使用PWM。

硬體注意事項


PWM生成和脈衝計數的實現取決於所使用的硬體。最好使用計數器來產生PWM輸出。請參考硬體的數據表,以查看該設備上有多少個計數器以及它是否支援PWM。

模組/卡:

  • E,S,M和X系列設備–請參閱用戶手冊
  • 其他數字模組–在用戶手冊中檢查它們是否為靜態(即軟體定時)或硬體定時
  • C系列-檢查您的C系列模組是否可以存取CompactDAQ(cDAQ)機箱或控制器底板上的計數器或計時器。

機箱/控制器:

  • cDAQ –查看用戶手冊中機箱上的計數器數量。此功能僅在可存取機箱的計數器的模組中可用。

LabVIEW中帶有NI-DAQmx的PWM


要在NI-DAQmx中實現PWM,請確保您已經研究了硬體及其功能。之後,您可以確定適合您應用的最佳解決方案:軟體時間或硬體定時PWM。

軟體定時脈衝寬度調製
如果您的應用在速度和精度方面沒有嚴格的要求,則可以將數字輸出與軟體定時控制一起使用以產生脈衝序列或PWM。

這是社群中使用軟體定時數字I/O實現PWM的範例。

硬體定時脈衝寬度調製
  • 從範例開始(推薦)
    1. 啟動LabVIEW
    2. 導航至Help >> Find Examples... ,這將啟動NI Example Finder
    3. 確認您在“ Browse”選項中,並瀏覽以下資料夾:Hardware Input and Output >> DAQmx >> Counter Output
  1. 雙擊您要使用的範例
  2. 不要編輯此範例。任何更改都將覆蓋原始範例。
    1. 單擊File >> Save As
    2. 選擇適合您需求的選項。建議選擇“Duplicate Hierarchy ”到新位置
    3. 選擇位置,然後單擊保存
    4. 關閉範例並在新位置打開範例
  3. 打開範例的本地副本後,您可以更改範例中使用的配置和通道。
  • 從空白Block Diagram開始
    1. 使用DAQmx Create Virtual Channel VI創建並初始化計數器輸出通道根據您的應用需求,可以通過三種方式在NI-DAQmx中定義計數器輸出任務:
      • CO Pulse Freq
      • CO Pulse Time
      • CO Pulse Ticks - Note -不同的硬體具有不同的time-bases,在不同的硬體上運行相同的程式碼可能會更改脈衝寬度。
Duty Cycle, Frequency, Counter(s), Idle State, 和 Initial Delay選擇合適的輸入
  1. 使用DAQmx Timing VI 可以配置脈衝產生的持續時間。
請注意:當不需要採樣定時時,例如在脈衝序列生成之類的計數器任務中,應使用Implicit實例。此外,選擇“Continuous”作為採樣模式。
  1. 呼叫DAQmx Start VI ;該VI開始生成脈衝序列。
  2. 放置While迴圈以連續運行,直到用戶按下“Stop”按鈕為止。
  3. 在While迴圈中:
    1. Duty Cycle創建 Local Variable。它將與原始Duty Cycle變數進行比較,並且比較將在“Case Structure”的選擇器處進行
    2. 放置Case Structure:
      1. 正確的情況:呼叫DAQmx Write VI。如果Duty Cycle已更改,則使用DAQmx Write VI設置新的Duty Cycle
      2. 錯誤的情況:將所有輸入直接連接到輸出。如果未更改Duty Cycle,則執行 case structure的錯誤條件,並且不進行任何更新。
    3. 使用“DAQmx Is Task Done VI” 檢查錯誤
    4. 添加一個Wait Until Next Millisecond Multiple VI ,以在迴圈中引入較短的時間延遲。這將阻止迴圈盡可能快速地執行,從而消耗不必要的處理器資源。
  4. 呼叫DAQmx Clear Task VI清除任務。
  5. 使用Simple Error Handler VI檢查並顯示錯誤

請注意:該圖像是LabVIEW Snippet,其中包含可在專案中重複使用的LabVIEW程式碼。要使用程式碼段,請右鍵單擊圖像,將其保存到電腦,然後將文件拖到LabVIEW Block Diagram上。