工欲善其事必先利其器,要將模擬訊號精準轉換為數碼訊號,乙個高精度的模數轉換器不可或缺,選用合適的模數轉換晶元對實現設計應用要求尤為重要。
本設計要求高精度和高穩定性的測量,主要用於溫度感測器,預留了多個溫度感測器介面,所以相應的adc的通道數也要預留幾個,不然要新增額外的多路開關選擇器。
本設計選擇adi公司的ad7794作為模數轉換器,片內整合了放大器,程式控制訊號放大倍數,避免放大電路設計, ad7794內部架構如圖所示。
ad7794具有低功耗、低雜訊、高精度的特性,滿足高精度測量應用要求,如圖,內建24位低雜訊的多路差分輸入 型adc。 每款模數轉換器均內建乙個低雜訊、低溫漂、高精度的基準源,除此之外可以採用差分型外部基準源。
ad7794 電流最大為400ua,是一款低雜訊可程式設計增益儀表放大器,更新速度為4.17hz至470hz,與spi、qspi、microwire、dsp相容,適用溫度範圍為-40℃至+105℃。
本設計cpu採用的stm32,這塊晶元也是目前高精度感測器普遍使用的。溫度感測器種類繁多,但是精度及穩定性相差較大。本設計選擇a級pt100鉑電阻作為溫度感測器,它精度較高,穩定性好。
溫度採集電路設計如圖所示。lm4040a41基準電壓源給ad7794的外部參考電壓以及四線制接法的溫度感測器電路的恆壓源供電,溫度的差分訊號經過片內放大器進入ad7794。
測溫模組測量pt100阻值依據的是恆壓源激勵分壓的原理,溫度感測器介面電路採用四線制接線方法,四線制可以有效的消除導線自身阻值對pt100阻值的影響,四根線中,外側的兩根線為四線制電路提供電流,內側兩線連線ad7794通道採集pt100兩端的電壓值,ad7794開啟片內輸入緩衝的模式將會產生較高的輸入阻抗,電流就不經過ad7794,而是全部流經pt100鉑電阻,這樣就能精確採集鉑電阻的電壓值,進而算出鉑電阻的阻值。
本設計採用比率方式得出鉑電阻的阻值。如圖所示,電阻r2是精度為 ±0.1%,溫漂為5ppm/℃的直插式rj711精密電阻。之所以採用直插式,是因為表貼封裝的精密電阻在焊接時容易受到烙鐵高溫而引起特性改變。
由於是串聯電路,電阻比值就是電壓之比,經過fluke測溫電橋測得實際的精密電阻的阻值為99.987472ω。首先通過取樣r2的上的電壓值得到ur2,再通過取樣pt100上的電壓值得到upt100,通過公式
r2
/rpt100
=ur2
/upt100
計算出pt100的電阻值。
鉑電阻測溫電路中,cpu是通過spi協議與ad7794通訊的。cpu與ad7794的讀寫具體通過cs、sclk、dout、din四個引腳實現。cs是片選輸入引腳,低電平有效。sclk是時鐘輸入或輸出引腳,通過它可以提供內部時鐘。dout和din分別是資料輸出和資料輸入引腳。ad7794讀寫時序分別如圖所示。
要讓ad7794工作,首先需要編寫程式對ad7794的暫存器進行初始化配置,本設計採用4.17hz取樣頻率,訊號增益倍數設定為16,基準源選擇4.096v外部基準源,具體初始化程式如下所示:
void
ad7794init
(void
)
初始化設定完畢後,ad7794按照spi協議將採集的資料輸出到cpu,由於ad7794資料採集完後會產生下降沿訊號並將dout所在io口電平拉低,所以我們在程式中將dout引腳設定為下降沿中斷觸發。然後就可以在與之對應的中斷服務函式中讀取採集的資料並進行處理。
鉑電阻測溫模組在採集到pt100的阻值後需要將其轉換成溫度值。本設計擯棄普遍使用但精度不高的查表法,而利用國家標準的溫度和阻值關係式以及牛頓迭代法的非線性補償演算法將阻值轉化為溫度值。我們將上述關係以及演算法以c語言的形式編寫成程式並寫入stm32,主要程式如下:
double func
(double res,double t); //定義函式
double funcdao
(double t) ; //定義函式求導
double root
(double res,double t)
//牛頓迭代法,res為阻值,t是溫度
return x1;
} temperature=
root
(res
,t0)
;//阻值轉換為溫度值
最後,通過參考國家標準的溫度和阻值關係式以及牛頓迭代法的非線性補償將阻值轉化為溫度,精度可達±0.05℃,滿足高精度溫度測量的需求。 基於DSP的溫度採集系統設計
這學期終於要結束了,對於電子的工科學生來說,嘗試了文科期末考試背書的感覺。dsp這門課還是很有趣的,上課老師講的也很不錯,其中給我們布置了乙個用dsp設計的溫度採集系統,花了半天時間來了解dsp系列晶元的原理,又花了兩天時間在軟體上和文字上,最後迫於期末臨近,不得不拋棄些許質量上的考量,在此共享,不...
藍橋杯練習系統 高精度加法
問題描述 輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。演算法描述 由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。定義乙個陣列a,a 0 用於儲存a的個位,a 1 用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。計算c ...
UWB高精度室內定位系統
uwb高精度室內定位系統 1 系統建設背景 以裝置及人員進出室內的具體位置資訊為切入點,提供更多數位化 資訊化 智慧型化應用為傳統管理模式公升級改革,重構管理新模式,實現 集中管控 異常干預 的新形態。在室內通過部署uwb高精度室內定位系統,將定位標籤整合至胸卡 手環等裝置上,可提供集風險管控 人員...