作者:Arnie Mae BaesandChristian Garcia
虛擬電子實驗室是基于軟件的儀器的集合。它是一個作為軟件應用程序實現的模擬電子實驗室環境,它允許用戶執行大量電子實驗。擁有一個物理的、功能齊全的實驗室可能既昂貴又難以管理。想象一下,擁有可以放在口袋里的電子實驗室的能力;可能性是無窮無盡的!
本文旨在演示用戶如何使用ADALM2000開發自己的虛擬實驗室儀器。本文將使用Python編程語言,因為它的簡單性,也因為它是開源的。通過Python和ADALM2000的結合,可以開發多種虛擬實驗室儀器,如示波器、信號發生器、數字萬用表等。但是,本文將只關注一種儀器 - 示波器。這是一個很好的儀器,因為它是我們在實際電子實驗室中使用的最基本的儀器之一。
介紹
儀器儀表行業正在穩步、快速地向虛擬化邁進。基于軟件的儀器托管在PC上,PC使用盡可能少的專用硬件將其連接到必須測量/控制的設備。該硬件通常包括用于直接數字化信號或控制獨立儀器的插件板。
虛擬 儀器 以 靈活 性、 模 塊 化 和 可 移植 性 而 谼 出 了 廣 贛。ADI公司為客戶提供電子模塊,幾乎可以滿足所有用例的需求,包括本用例。該模塊的一個很好的例子是ADALM2000。
ADALM2000使工程師或開發人員能夠根據其特定需求創建自己的虛擬電子實驗室。通過libm2k庫,用戶可以開發使用C++、C#或Python控制ADALM2000的軟件應用程序。有關ADALM2000和libm2k的更詳細討論將在后面的章節中討論。
什么是示波器?
示波器是電子工程的重要組成部分,因為它們為常見和復雜電路的信號分析帶來了價值。除此之外,如今的示波器還具有計算機連接功能,因此示波器中捕獲的信號可以數字存儲以供以后分析。
示波器用于可視化 模擬或數字波形。前面板控制 — 放大器觸發、掃描 定時和顯示 - 用于調整顯示以更好地可視化信號。
它向我們展示了信號輸入在一定時間內的行為,這對于分析常見電路至關重要。它還有助于驗證 這些電路。這是示波器不可或缺的主要原因 任何電子實驗室設備的一部分。除此之外,我們還可以改進 通過允許工程師定制其電子電路來分析某些電子電路 非常自有的示波器,以滿足他們的需求。
什么是ADALM2000?
ADALM2000是一款主動學習模塊,內置數字示波器、函數發生器、邏輯分析儀、電壓表、頻譜和數字總線分析儀以及兩個可編程電源。對于基本用戶或學生,Scopy可用于與ADALM2000接口。對于應用程序開發人員,可以使用 libm2k 庫開發應用程序接口。固件開發人員還可以選擇開發可直接在ADALM2000上運行的定制軟件或HDL。
開始
安裝 Python 和 PyCharm
Python 是一種功能強大且易于學習的開源編程語言。Python可以從Python官方網站下載。如果不確定要使用哪個版本,請選擇 Python 3.7。
Python可以在沒有集成開發環境(IDE)的情況下使用,但為了使下載庫和調試變得無憂無慮,可以使用PyCharm。PyCharm是一個IDE,為開發人員提供了幾個基本工具,使其成為用于Python開發的最受歡迎的IDE。在JetBrains 官方網站上下載最新版本的 PyCharm 社區。
庫的安裝
Python 庫包含可用于特定應用程序的方法或函數。在本文中,我們將使用 libm2k、matplotlib 和 NumPy。
Libm2k
要使用 Python 與 ADALM2000 接口,您需要安裝 libm2k 庫。這是一個C++庫,具有適用于Python,C#,MATLAB和LabVIEW的可用綁定,并具有以下功能:??
模擬輸入用于示波器或電壓表。我們將重點關注這一點。
模擬輸出用于信號發生器。
數字用于邏輯分析儀或模式發生器。
電源用于恒壓發生器。
數字萬用表適用于數字萬用表。
有關此庫的詳細信息可以在libm2k wiki頁面上找到。
安裝 libm2k
安裝此庫的一種方法是執行以下步驟:
轉到發布頁面。
下載庫的最新可執行版本。 示例:libm2k-0.4.0-Windows-Setup.exe
運行可執行文件。確保在以下情況下選擇安裝 libm2k Python 綁定“設置”窗口會提示您選擇其他任務。
完成安裝。Libm2k 將安裝在默認環境中 的蟒蛇。
Matplotlib
要創建示波器顯示,您需要使用 matplotlib 庫。這 庫很流行,易于使用,用于在 Python 中自定義和顯示可視化。有關此庫的詳細信息可以在matplotlib 網站上找到。
數字派
一個簡單的示波器仍然需要大量的數學計算。這 NumPy庫可以通過為復雜的計算提供簡單的函數來提供幫助。 有關此庫的詳細信息可以在NumPy網站上找到。
安裝 Matplotlib 和 NumPy
要同時安裝 matplotlib 和 NumPy,請在 PyCharm 中按照以下步驟操作:
轉到文件>設置>項目解釋器。
單擊位于設置窗口右側的 + 圖標。
將出現“可用包”窗口。在搜索框中,搜索 對于 matplotlib 和 NumPy。
指定要安裝的版本(選擇最新版本)。
單擊安裝包按鈕。
圖3.在 PyCharm 中安裝庫包。
硬件設置
在開始編碼之前,讓我們設置硬件組件。以下 需要硬件組件:
信號源(或信號發生器,如果有)
ADALM2000
探頭和剪刀
如果信號發生器可用,請將ADALM2000器件連接到通道1,然后 帶有探頭和/或快波器的通道 2,使用圖 4 所示的配置。
信號發生器 | ADALM2000 |
通道 1 正極線 (+) | 1+ |
通道 1 接地 | 1– |
通道 2 正極線 (+) | 2+ |
通道 2 接地 | 2– |
您也可以對其他可用信號源遵循相同的配置。 最后,通過USB端口將ADALM2000器件連接到PC。
簡單虛擬示波器
在本節中,我們將逐個塊介紹程序塊。我們還將討論代碼的作用以及編寫它們的原因。我們將在后續部分中演示其他示例,在這些示例中,我們將修改此基本代碼,以表明我們可以添加更多功能以最適合開發人員的用例。
首先,導入我們將用于開發虛擬示波器的三個庫(libm2k、matplotlib 和 NumPy)。
統一資源標識符(URI)是每個ADALM2000的唯一標識符 已連接到電腦。該代碼塊可確保ADALM2000連接到PC。如果沒有ADALM2000,代碼將自動退出 設備已插入電腦。
使用檢測到的URI連接到ADALM2000。uri[0]與 檢測到第一個ADALM2000器件的URI(以防有多個器件) 設備已連接。
運行 ADC 和 DAC 的校準。這是確保我們將 獲得準確的測量結果。
設置采樣率和持續時間。可用的采樣率為 1 kHz、10 kHz、 100 kHz、1 MHz、10 MHz 和 100 MHz。采樣率是我們 在 1 秒內獲取樣本,持續時間是我們獲得這些樣本的時間。為 例如,如果我們將采樣率設置為 1000,持續時間設置為 3,我們將得到 每秒 1000 個樣本,持續 3 秒。這使得總共 3000 個樣本。
啟用通道 1 并將其設置為示波器的模擬輸入。
Linspace用于創建均勻分布的樣本數組。我們將使用這個 用于創建時間 x 軸數據數組的 NumPy 函數。此函數的第一個和第二個參數分別指示數組的開始值和結束值。 最后一個參數是我們想要在其中生成的樣本數 開始值和結束值。
在此示例中,起始值為 0,結束值為設置的持續時間,即 為 3。對于樣本數量,我們將持續時間和sample_rate相乘得到 我們需要的總樣本,即 3000 個樣本。這 3000 個樣本將 均勻地放置在 0 和 3 之間。此數組將存儲在time_x中。
data_y存儲我們使用ADALM2000收集的波形樣本。 裝置。通道 1 的樣本存儲在data_y[0]中,而來自 通道 2 存儲在data_y[1]中。為了讓我們顯示準確的頻率 波形,我們必須使用與time_x中使用的相同數量的樣本。
創建我們將要操縱的圖形。plt.subplots函數將返回 圖形對象(存儲在圖中)和軸對象(存儲在AX中),它們將是 用于自定義整個情節。
我們可以添加網格作為波形的指南。添加軸標簽 和 y 限制以添加有關繪圖的更多詳細信息。
顯示圖表。
銷毀代碼末尾的上下文。
運行代碼,并期望看到類似于圖 5 的圖。
圖5.單通道正弦波輸出;一個信號發生器輸出:10 Hz,2 V 峰峰值。
2通道虛擬示波器
在本節中,我們將使用上一節中的代碼并添加更多 代碼塊使其成為 2 通道虛擬示波器。
要添加另一個通道,請復制ocsi.enableChannel和ocsi.setRange行,并從libm2k 更改第一個參數。ANALOG_IN_CHANNEL_1libm2k。ANALOG_IN_CHANNEL_2。
在創建圖形時,為通道 2 添加另一個圖。通道 2 的數據位于 數組data_y[1]。我們還可以自定義兩個圖的顏色,以輕松區分它們。在此示例中,我們對通道 1 使用了淺珊瑚 和鋼藍色用于通道 2。
運行代碼,您應該看到類似于圖 6 的結果。
圖6.雙通道正弦波輸出。通道 1 信號發生器輸出:10 Hz,2 V 峰峰值;通道 2 信號發生器輸出:5 Hz,3 V 峰峰值。
虛擬示波器的附加功能
在本節中,我們將為虛擬示波器添加其他功能 使其更具交互性。Matplotlib提供了幾個我們可以的小部件 用。在此示例中,我們將使用文本標簽和滑塊小部件。我們還將 繼續上一節中的代碼。
為 matplotlib 滑塊添加另一個導入。
將時間和數據數組轉換為 NumPy 數組。這些將用于 我們將在下一個代碼塊上進行計算。
由于我們獲取了所有波形數據,是什么阻止我們提取 這些波形的性質是什么?在下面的代碼塊中,我們提取了 VPP/ 5大道和 V有效值從兩個通道的獲取數據中。計算 VPP, 我們添加了在 data_y numpy 數組。計算 V 的步驟大道,我們只需要除以 VPP到圓周率。自 V 的計算有效值,我們需要除以 VPP到 2 乘以 2 的平方根。
此代碼塊與前面的部分類似。唯一的區別是 我們使用 NumPy 數組作為繪圖,而不是使用原始數組。我們 還從繪圖創建了波形對象。我們稍后將使用這些對象。
顯示計算的 VPP/ <>大道和 V有效值在圖中,我們將利用文本 來自 Matplotlib 庫的標簽小部件。創建字符串標簽、label_ch1和label_ch2,然后連接這兩個字符串以創建最終標簽fin_label。我們將使用plt.text來創建文本標簽。第一個和第二個 參數(0.2, 3)是文本的 x 和 y 位置。第三個參數是 要顯示的字符串。第四和第五個參數是文本樣式和 框,分別。
接下來,讓我們創建偏移滑塊。此滑塊的目的是調整 波形的參考電平。將主圖調整到左側以提供空間 滑塊。plt.軸定義 滑 塊。滑塊功能用于為偏移滑塊創建對象 特定屬性。
創建update_offset函數并將其注冊到offset_slider對象。每次我們更改滑塊的值時,此功能都會向波形添加偏移量。
運行代碼,并期望看到類似于圖 7 的圖形。
圖7.默認 2 通道正弦波輸出,帶偏移滑塊。
嘗試使用滑塊調整偏移量。您將看到波形向上移動 或實時關閉。
圖8.調整偏移滑塊(左側滑塊)以調整兩個通道輸出的偏移。
總結
本文解釋了擁有虛擬電子實驗室的重要性和便利性。它還演示了如何使用 ADALM2000和Python。軟件要求和硬件設置 在介紹三個例子之前進行了討論。
審核編輯:郭婷
-
放大器
+關注
關注
143文章
13428瀏覽量
212147 -
示波器
+關注
關注
113文章
6091瀏覽量
183366 -
python
+關注
關注
53文章
4752瀏覽量
84061
發布評論請先 登錄
相關推薦
評論