邵偉恒,顧 昂,隋俊杰
(工業和信息化部電子第五研究所,廣州 510610)
在工業控制領域4~20 mA恒流源作為一種工業標準被廣泛應用。傳感器、變頻器、調功器、控制器PLC和DCS系統都對4~20 mA十分青睞。為了調試測試設備方便,往往需要精度高、功能強大、便攜的電流源儀表。目前,國內此類儀表大都具有精度不高、功耗偏大、攜帶不方便等缺點[1-2]。
針對傳統恒流源儀表存在的問題,本文采用專用電流源芯片DAC161和24位AD芯片ADS1246,實現了單線通訊控制、檢測輸出隔離、高精度程控的恒流輸出及檢測系統。通過卡爾曼濾波、DAM直接傳輸采集數據、系統校準等方法,實現了快速高精度的電流輸出和檢測。儀器已成功應用于現場調試,精度高、功耗低且運行穩定。
該系統硬件主要由電源模塊、STM32控制模塊、DA輸出模塊、鍵盤顯示模塊以及AD輸入模塊組成。系統結構如圖1所示。

圖1 系統結構Fig.1 System construction diagram
電源模塊主要完成系統各級供電,包括AD基準電壓電路、5 V~24 V的DC/DC升壓電路、控制芯片供電電路;控制模塊首選STM32芯片,它具有性能穩定、接口完備、成本低等優點[3]。控制模塊主要完成輸入掃描、輸出顯示、驅動數模/模數轉換芯片和處理采集數據等功能;DA輸出部分主要完成4~20 mA電流的輸出;鍵盤顯示模塊來完成必要的人機交互;AD輸入模塊主要完成模數轉換。
此外,系統通過自動關機電路來管理系統的電源以降低系統的能耗。通過對開關器件的控制來實現有源和無源的切換,以滿足各種傳感器場合的測試測量需求。通過控制轉換芯片的“sleep”功能來降低系統的功耗。
本系統硬件設計主要包括上述5大模塊,文中主要針對AD輸入模塊和DA輸出模塊進行詳述。
DAC161的輸出方式有2種,一種為內部電源輸出方式,一種為外部電源輸出方式。前者稱為有源輸出,后者稱為無源輸出(或模擬輸出)。有源輸出根據采用的輸出電流位置不同可以分為2種,一種是電源回路輸出,一種是三極管回路輸出。由于DAC161自身供電需要電流,因此電源回路輸出的最小電流要比三極管回路輸出大0.2 mA。模擬輸出的最小電流與電源回路輸出最小電流均為0.4 mA。對于4~20 mA電流這三者的電流均相同。如圖2所示為DAC161電源回路輸出方式的電路圖。

圖2 DAC161電路Fig.2 Circuit diagram of DAC161
圖2中,+24 V_IN接24 V電源的正極,Iout為電流輸出的端子,輸出端子接負載返回到24 V電源的負極形成供電輸出電流回路。
本設計中DAC161與STM32通訊采用的是單線接口協議 SWIF(single-wire interface),隔離 SWIF電路如圖3所示。74LVC125的11、12、13引腳連接STM32,DIN和DBACK為DAC161的通訊接口。單線隔離通訊的設計可以方便輸出電流的擴展,進而實現多路電流輸出,不用擔心回路電流擴展對系統的影響。

圖3 SWIF電路Fig.3 Circuit diagram of SWIF
ADS1246是TI公司推出的24位單通道AD芯片,其電路如圖4所示。輸入模擬信號通過差分線AINP輸入 (7號腳為+,8號腳為-)。ADS1246與STM32的通訊采用SPI的通訊方式,引腳包括SCLK,DIN,DOUT,DRDY,CS 等。 ADS1246 的 SPI在下降沿鎖存數據,上升沿更新數據。此外,設計中采用130 Ω的精密采樣電阻進行采樣,采樣信號經過跟隨放大濾波進入ADS1246芯片。

圖4 ADS1246電路Fig.4 Circuit diagram of ADS1246
該系統的軟件主要包括AD模塊的DMA存儲設計、DA模塊單線隔離通訊協議設計、采樣數據濾波算法設計、按鍵及顯示電路設計、串口通訊設計及輸出電流波形算法設計等。文中主要針對前3個重要部分進行詳述。
ADS1246與STM32的通訊方式采用SPI。在ADS1246使用前需要進行寄存器配置,使其采樣效果又快又好,主要配置寄存器包括系統增益校準、系統偏移自校準、設置采樣增益和速率等。
STM32提供了強大的DMA功能。DMA在傳輸數據的過程中,主處理器可以執行其他任務,在數據塊傳輸結束時才會中斷處理器。可以在對系統性能產生較小影響下,實現大量數據的傳輸。對于處理24位AD芯片是很好的選擇。通過DMA實時刷新內存中的AD采樣數據,刷新結束時由STM32處理器統一處理。
DAC161采用單線接口協議與STM32進行通訊,協議的具體形式如圖5所示。

圖5 單線接口協議Fig.5 Interface protocol of single-wire interface
從圖5中可以看出,單線接口協議是通過電平的高低來判斷數據的類型,主要包括3種數據類型和1種應答類型。3種數據類型分別是TH0,THD,TH1,其中TH0和TH1對應數字0和數字1,THD為空閑位。應答類型為ACKB引腳發送,占用2個大周期。應答位主要用來檢測輸出回路是否正常。
由于STM32沒有單線接口協議,因此需要用定時器+IO口進行模擬。通過STM32中IO口的PWM比較輸出功能可以很好地實現單線通訊協議的模擬。DAC161的數據幀的個數是固定不變的。其數據幀協議如圖6所示。

圖6 DAC161數據幀協議Fig.6 Data frame protocol of DAC161
根據圖6就可以進行通訊編程,按位發送數據,每到定時中斷就修改比較寄存器的值,在發送到第19和20位時需要計算奇偶校驗。奇偶校驗流程如圖7所示。

圖7 奇偶校驗流程Fig.7 Flow chart of parity check
卡爾曼濾波器是一種最優化自回歸數據處理算法,在計算過程中不需要存儲歷史數據,適合計算機遞推運算[4]。卡爾曼是基于狀態空間模型的最優估計,利用當前時刻的測量值和上一時刻的估計值通過計算來更新狀態變量的估計值。并以狀態變量的估計值作為當前時刻的估計值。
為了消弱AD采樣白噪聲的影響,文中進行了系統采樣的卡爾曼濾波器設計,并給出了相關的設計算法。為了描述方便,作如下假設[5]:1)物理系統的狀態轉換過程可以描述為一個離散時間的隨機過程;2)系統狀態受控制輸入的影響;3)系統狀態及觀測過程都不可避免受噪聲影響;4)對系統狀態是非直接可觀的。
在以上的假設下,系統的狀態隨機差分方程為

式中:Wk為系統過程激勵噪聲;Uk為系統控制輸入;Xk為系統的狀態變量。
定義采樣器AD的觀測變量為Zk,觀測噪聲為Vk,得到測量方程為

其中,Vk和Wk是相互獨立的,且為正態分布的白噪聲,它們的協方差分別為Q和R,即:

式(1)~式(4)為卡爾曼濾波的建模方程,A,B,H統稱為狀態變換矩陣。A是對X建模的結果;B是由輸入量對X的影響決定的,可以為0;H是對X的觀測矩陣,如果Xk所有變量直接可測,則H為單位矩陣。
為了方便計算機編程,方便編寫時間更新方程和測量更新方程,給出卡爾曼濾波器表達形式:

式中:X(k|k-1)為利用上一狀態預測的結果;X(k-1|k-1)為上一狀態最優的結果;U(k)為控制量,可以是0;P為X的協方差;Kg為卡爾曼增益;E為單位矩陣,對于單模型單測量時為1。
其中式(9)的目的是為了卡爾曼濾波器便于計算機實現。根據式(5)~式(9)即可對采集信號進行卡爾曼濾波器設計。
為了讓設計更合理,需要對系統的輸入輸出進行校準,由于本設計包含串口通訊功能,可以將數據發送到上位機進行分析。測試時將輸出電流回路、測試電流回路、測量儀表串聯在一起進行測試。表1給出濾波校準之后的檢測和輸出測試數據來檢驗所設計系統的精度和可靠性。經過測試,電流在4~20 mA范圍內輸出電流精度可以達到2 μA。檢測電流的精度可以達到1 μA以內。

表1 電流檢測和輸出測試數據表格Tab.1 Test data table of current detection and output
文中設計了基于STM32的便攜式恒流源檢測與輸出系統,利用STM32的SPI和DMA功能,控制24位ADS1246實現快速高精的電流檢測,卡爾曼濾波器的應用降低了系統的檢測噪聲,提高了恒流源檢測的精度;采用16位DAC161芯片實現了高精度的電流輸出;通過繼電器、電源管理電路和芯片睡眠等功能降低了系統功耗。實驗和測試結果表明,該設計的檢測精度可以達到1 μA以下,輸出精度可以達到2 μA以下。目前該儀表已經成功應用于4~20 mA檢測與輸出場合,系統運行穩定。
[1]王立華,韓敬東,邵玉芹,等.基于DSP的4~20 mA電流環的設計[J].工礦自動化,2008(2):121-123.
[2]馬秋芳,潘浩,王微微.基于AD421的便攜電流源設計[J].自動化與儀表,2014,29(7):73-76.
[3]陳志奇,黃偉志,張攀.基于ARM和LabVIEW的嵌入式振動信號檢測系統[J].儀表技術與傳感器,2013(7):42-45.
[4]劉祿,潘峰,薛定宇.一種分數階卡爾曼濾波器[J].東北大學學報:自然科學版,2014,35(8):8-11.
[5]姜霞,年曉紅,宋學瑞.多通道高精度電壓電流檢測系統設計[J].電源技術,2014,38(9):145-148.