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