国产一区二区三区三州86295_视频一区二区国产_国产日韩综合导航_日韩亚洲大尺度高清

你的位置:首頁 > 測試測量 > 正文

如何使用Python編程語言和ADALM2000創(chuàng)建虛擬示波器

發(fā)布時間:2022-08-08 來源:ADI 責(zé)任編輯:wenwei

【導(dǎo)讀】一個功能齊全的物理實驗室造價不菲,其中的各式實驗儀器常常價格昂貴,而且管理復(fù)雜。試想如果能夠構(gòu)建一個可放入口袋、隨時便攜的虛擬電子實驗室,那么將為未來帶來無限的可能。虛擬電子實驗室,是通過一系列基于軟件的應(yīng)用來實現(xiàn)的仿真電子儀器所組成的模擬實驗室環(huán)境,用戶可以在該環(huán)境中開展大量電子實驗。


本文旨在演示用戶如何使用ADI ADALM2000和簡單的開源編程語言Python開發(fā)所需的虛擬實驗室儀器。通過Python與ADALM2000相結(jié)合,可以開發(fā)多種虛擬實驗室儀器,如示波器、信號發(fā)生器、數(shù)字萬用表等。其中,示波器作為物理電子實驗室中常用的基本儀器之一,是個不錯的入門選擇,將在下文中重點討論。


什么是示波器?


示波器可用于常見電路和復(fù)雜電路的信號分析,是電子工程的重要組成部分。如今的示波器能夠與計算機連接,因此在示波器中捕獲的信號能夠以數(shù)字形式存儲,供日后分析。


1658742784984133.jpg

圖1.示波器示意圖


示波器用于直觀呈現(xiàn)模擬或數(shù)字波形的電壓和時間特性。前面板控件(放大器觸發(fā)、掃描時間和顯示屏)用于調(diào)整顯示內(nèi)容,以更好地直觀呈現(xiàn)信號。


示波器可展示信號輸入在特定時間段內(nèi)的行為,這對于分析常見電路至關(guān)重要。此外,它有助于驗證這些電路的功能。這也是示波器成為不可或缺的電子實驗設(shè)備的主要原因。ADI允許工程師定制自己的示波器來滿足需求,從而可以改進特定電子電路的分析。


ADALM2000是什么?


ADALM2000是主動學(xué)習(xí)模塊,具有數(shù)字示波器、函數(shù)發(fā)生器、邏輯分析儀、電壓表、頻譜和數(shù)字總線分析儀,以及兩個可編程的電源。對于基礎(chǔ)用戶或?qū)W生,可以將Scopy與ADALM2000連接。對于應(yīng)用開發(fā)人員,可使用libm2k庫開發(fā)應(yīng)用接口。對于固件開發(fā)人員,還可以選擇開發(fā)能夠直接在ADALM2000上運行的定制軟件或HDL。


開始使用


安裝Python和PyCharm


Python是功能強大、簡單易學(xué)的開源編程語言。Python可從Python官方網(wǎng)站下載。如果不確定要使用哪個版本,請選擇Python 3.7。


Python可在沒有集成開發(fā)環(huán)境(IDE)的情況下使用,但為了更輕松地下載庫和進行調(diào)試,可以使用PyCharm。PyCharm是一個IDE,為開發(fā)人員提供多個必需的工具,因而是用于Python開發(fā)的熱門IDE。在JetBrains官方網(wǎng)站下載最新版PyCharm Community。


安裝庫


Python庫包含可用于特定應(yīng)用的方法或函數(shù)。在本文中,將使用libm2k、matplotlib和NumPy。


Libm2k


若要使用Python與ADALM2000交互,需要安裝libm2k庫。這是C++庫,帶有可用于Python、C#、MATLAB?和LabVIEW?的綁定,具備以下功能:


   ○ AnalogIn用于示波器或電壓表。我們將重點介紹該功能。

   ○ AnalogOut用于信號發(fā)生器。

   ○ Digital用于邏輯分析儀或模式發(fā)生器。

   ○ PowerSupply用于恒壓發(fā)電機。

   ○ DMM用于數(shù)字萬用表。


安裝Libm2k


安裝該庫的一種方法是按照以下步驟操作:


   ○ 轉(zhuǎn)到發(fā)布頁面。


■下載該庫的最新可執(zhí)行版本。示例:Libm2k-0.4.0-Windows-Setup.exe


   ○ 運行可執(zhí)行文件。當(dāng)“設(shè)置”窗口提示選擇其他任務(wù)時,請務(wù)必選擇安裝libm2k Python綁定。


2.jpg

圖2.Libm2k安裝窗口


   ○ 安裝結(jié)束。Libm2k將安裝在Python的默認環(huán)境中。


Matplotlib


若要創(chuàng)建示波器顯示,您需要使用matplotlib庫。該庫備受歡迎且易于使用,用于在Python中定制和顯示可視化內(nèi)容。有關(guān)該庫的詳細信息,請訪問matplotlib網(wǎng)站。


NumPy


簡單的示波器仍將需要大量數(shù)學(xué)計算。NumPy庫可以為復(fù)雜的計算提供簡單的函數(shù)。有關(guān)該庫的詳細信息,請訪問NumPy網(wǎng)站。


安裝Matplotlib和NumPy


若要安裝matplotlib和NumPy,請在PyCharm中按照以下步驟操作:


   ○ 轉(zhuǎn)到“文件”>“設(shè)置”>“項目解釋器”。

   ○ 點擊“設(shè)置”窗口右側(cè)的+圖標(biāo)。

   ○ 將出現(xiàn)“可用軟件包”窗口。在搜索框中,搜索matplotlib和NumPy。

   ○ 指定要安裝的版本(選擇最新版本)。

   ○ 點擊安裝軟件包按鈕。


1658742713343599.jpg

圖3.在PyCharm中安裝庫包


硬件設(shè)置


在開始編碼前,我們先設(shè)置硬件組件。需要使用以下硬件組件:


   ○ 信號源(或信號發(fā)生器,如適用)

   ○ ADALM2000

   ○ 探頭和限幅器


如果信號發(fā)生器可用,請按照圖4中顯示的配置,使用探頭和/或限幅器將ADALM2000設(shè)備連接到通道1和通道2。


1658742696233711.jpg

圖4.使用信號發(fā)生器和ADALM2000的實際設(shè)置


表1.引腳配置

5.png


對于其他可用的信號源,也可以遵循相同配置。最后,通過USB端口將ADALM2000設(shè)備連接到PC。


簡單的虛擬示波器


在這一部分將逐個代碼塊介紹程序,還將討論代碼的作用,并說明以這些方式編寫代碼的原因。隨后的部分中將演示修改基礎(chǔ)代碼,以添加更多功能,從而滿足開發(fā)人員用例要求。


首先,導(dǎo)入將用于開發(fā)虛擬示波器的三個庫(libm2k、matplotlib和NumPy)。


6.jpg


統(tǒng)一資源標(biāo)識符(URI)是連接到PC的每個ADALM2000的唯一標(biāo)識符。該代碼塊確保ADALM2000連接到PC。如果沒有ADALM2000設(shè)備插入PC,代碼將自動退出。


7.jpg


通過檢測到的URI連接到ADALM2000?!皍ri[0]”是在連接了多個設(shè)備的情況下檢測到的第一個ADALM2000設(shè)備的URI。


8.jpg


對ADC和DAC運行校準(zhǔn)。這是確保獲得準(zhǔn)確測量的重要步驟。


9.jpg


設(shè)置采樣速率和時長。可用采樣速率有1 kHz、10 kHz、100 kHz、1 MHz、10 MHz和100 MHz。采樣速率是在1秒內(nèi)獲得樣本的次數(shù),時長是獲得這些樣本的持續(xù)采樣時間。例如,如果將采樣速率設(shè)為1000,時長設(shè)為3,那么每秒將獲得1000個樣本,并持續(xù)采樣3秒。因此,共有3000個樣本。


10.jpg


啟用并將通道1設(shè)置為示波器的模擬輸入。


1658742632445294.jpg


Linspace用于創(chuàng)建等間距的樣本陣列,并可使用該NumPy函數(shù)創(chuàng)建時間x軸數(shù)據(jù)陣列。該函數(shù)的第一和第二個參數(shù)分別表示陣列的起始和結(jié)束值。最后一個參數(shù)是希望在起始和結(jié)束值范圍內(nèi)生成的樣本數(shù)。


在該示例中,起始值是0,結(jié)束值是設(shè)置的時長,也就是3。對于樣本數(shù),將duration與sample_rate相乘,即可獲得所需的總樣本數(shù),也就是3000個樣本。這3000個樣本將


均勻放置在0和3之間。該數(shù)組將存儲在time_x中。


data_y存儲我們使用ADALM2000設(shè)備收集的波形樣本。通道1的樣本存儲在data_y[0]中,通道2的樣本存儲在data_y[1]中。為了顯示精確的波形頻率,必須使用與time_x相同的樣本數(shù)量。


12.jpg


創(chuàng)建將處理的圖形。plt.subplots函數(shù)將返回圖形對象(存儲在g中)和軸對象(存儲在ax中),這些對象將用于自定義整個圖形。


這里可以添加網(wǎng)格線,作為波形的參考坐標(biāo)。添加軸標(biāo)簽和y限制,以添加有關(guān)圖形的更多細節(jié)。


13.jpg


顯示圖形。


14.jpg


在代碼末尾銷毀上下文。


15.jpg


運行代碼,將會看到類似圖5的圖形。


16.jpg

圖5.單通道正弦波輸出;一個信號發(fā)生器輸出:10 Hz,2 V p-p


雙通道虛擬示波器

在這一部分,將使用上一部分中的代碼,并添加更多代碼塊,以創(chuàng)建雙通道虛擬示波器。


若要添加另一個通道,請復(fù)制ocsi.enableChannel和ocsi.setRange行代碼,并將第一個參數(shù)從


1658742559585018.jpg


在創(chuàng)建圖形時,為通道2添加另一個圖形。通道2的數(shù)據(jù)在data_y[1]陣列中。也可以自定義兩個圖形的顏色,以便輕松區(qū)分二者。在該示例中,通道1使用淺珊瑚色,通道2使用鋼藍色。


18.jpg


運行代碼,應(yīng)該會得到類似圖6的結(jié)果。


19.jpg

圖6.雙通道正弦波輸出。通道1信號發(fā)生器輸出:10 Hz,2 V p-p;通道2信號發(fā)生器輸出:5 Hz,3 V p-p。


虛擬示波器的其他功能


在這一部分,將為虛擬示波器添加其他功能,以提升交互性。Matplotlib提供我們可以使用的多個小部件。在該示例中,將使用文本標(biāo)簽和滑塊小部件,并將繼續(xù)使用上一部分中的代碼。


為matplotlib滑塊添加另一次導(dǎo)入。


20.jpg


將時間和數(shù)據(jù)陣列轉(zhuǎn)換為NumPy陣列。在下一個代碼塊進行的計算中,將使用這些陣列。


21.jpg


獲取所有波形數(shù)據(jù)后,提取這些波形的特性將不在話下。在以下代碼塊中,從獲取的兩個通道的數(shù)據(jù)中提取了Vpp、Vave和Vrms。要計算Vpp,將data_y numpy陣列中找到的最大值和最小值的絕對值相加。要計算Vave,只需用Vpp除以pi。要計算Vrms,用Vpp除以2乘以√2。


22.jpg


該代碼塊與前面部分類似。唯一的區(qū)別是,為圖形使用NumPy陣列,而不是使用原始陣列。同時還根據(jù)圖形創(chuàng)建了波形對象。稍后將使用這些對象。


23.jpg


為了在圖形中顯示計算的Vpp、Vave和Vrms,將利用matplotlib庫中的文本標(biāo)簽小部件。創(chuàng)建字符串標(biāo)簽label_ch1和label_ch2,然后連接這兩個字符串,以創(chuàng)建最終標(biāo)簽n_label。通過使用plt.text創(chuàng)建文本標(biāo)簽。第一和第二個參數(shù)(0.2, 3)是文本的x和y位置。第三個參數(shù)是要顯示的字符串。第四和第五個參數(shù)分別是文本和框的樣式。


1658742501945304.jpg


接下來,創(chuàng)建偏移滑塊。該滑塊用于調(diào)整波形的參考電平。將主圖形向左調(diào)整,為滑塊留出空間。plt.axes定義滑塊的尺寸、位置和表面顏色。Slider函數(shù)用于為偏移滑塊創(chuàng)建具有特定特性的對象。


25.jpg


創(chuàng)建update_offset函數(shù),并將其注冊到offset_slider對象。每次更改滑塊的值時,該函數(shù)都會向波形添加偏移量。


26.jpg


運行代碼,將會看到類似圖7的圖形。


27.jpg

圖7.帶偏移滑塊的默認雙通道正弦波輸出


嘗試使用滑塊調(diào)整偏移量。將會看到波形實時上下移動。


1658742462750569.jpg

圖8.調(diào)整偏移量滑塊(向左滑動),用于調(diào)整兩個通道輸出的偏移量


總結(jié)


本文解釋了擁有虛擬電子實驗室的重要性和便利性。文中還演示了如何使用ADALM2000和Python開發(fā)虛擬示波器。討論了軟件要求和硬件設(shè)置,并提供了3個示例供參考。


關(guān)于ADI公司


ADI是全球領(lǐng)先的高性能模擬技術(shù)公司,致力于解決最艱巨的工程設(shè)計挑戰(zhàn)。憑借杰出的檢測、測量、電源、連接和解譯技術(shù),搭建連接現(xiàn)實世界和數(shù)字世界的智能化橋梁,從而幫助客戶重新認識周圍的世界。詳情請瀏覽ADI官網(wǎng)www.analog.com/cn。


關(guān)于作者


Arnie Mae Baes于2019年12月加入ADI公司,擔(dān)任固件工程師。在進入公司的第一年,她重點負責(zé)GUI和固件開發(fā)。2020年12月,她加入消費電子軟件工程部門,現(xiàn)在重點負責(zé)固件測試開發(fā)。她畢業(yè)于菲律賓八打雁國立大學(xué),獲電子工程學(xué)士學(xué)位。聯(lián)系方式:arniemae.baes@analog.com。


Christian Jason Garcia是ADI公司的一名固件驗證工程師,工作地點在菲律賓垂亞斯將軍城。他擁有圣托馬斯大學(xué)電子和通信工程學(xué)士學(xué)位,于2018年11月加入ADI公司。他在電動交通部門專門負責(zé)SmartMesh網(wǎng)絡(luò)的軟件測試和系統(tǒng)驗證。聯(lián)系方式:christian.garcia@analog.com。


作者:ADI軟件系統(tǒng)工程師Christian Jason Garcia & Arnie Mae Baes



免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理。


推薦閱讀:


TDK如何助力于無線耳機音質(zhì)的不斷發(fā)展?

完整教程:設(shè)計一款小巧但強大的傳感器

深度解讀鎖存器和開關(guān)技術(shù)及其應(yīng)用

如何加速USB快充電池充電器設(shè)計

實現(xiàn)小型化電源設(shè)計的4個小技巧

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
共模電感 固態(tài)盤 固體繼電器 光傳感器 光電池 光電傳感器 光電二極管 光電開關(guān) 光電模塊 光電耦合器 光電器件 光電顯示 光繼電器 光控可控硅 光敏電阻 光敏器件 光敏三極管 光收發(fā)器 光通訊器件 光纖連接器 軌道交通 國防航空 過流保護器 過熱保護 過壓保護 焊接設(shè)備 焊錫焊膏 恒溫振蕩器 恒壓變壓器 恒壓穩(wěn)壓器
?

關(guān)閉

?

關(guān)閉