基於PXA310平臺的溫溼度傳感器設計與實現方法

2021-01-08 電子產品世界

摘要:在嵌入式應用領域,需要測量周圍環境的質量對生產和工作進行監控和預警。通過比較設計方案,提出在嵌入式Linux 下,基於PXA310 平臺溫溼度傳感器的設計與實現方法。在Linux 作業系統下通過對驅動程序接口調用,完成溫溼度數據讀取和預警,並對Linux 驅動程序編寫進行比較。實驗表明,本方案硬體和軟體設計切實可行,提高了環境測量的準確度和系統性能的實時性。

本文引用地址:http://www.eepw.com.cn/article/159806.htm

1 引言

在工業控制和工業生產領域中,傳感器對於工業控制和生產環境的監控作用不言而喻。傳統的傳感器監控系統大都採用單片機控制,其監控的準確度和實時性不太令人滿意。本文尋找到一套切實可行的傳感器設計方案,其利用溫溼度傳感器晶片,基於PXA310硬體平臺和Linux 作業系統,能有效監控現場溫溼度變化。在周圍環境發生變化,不能滿足工作要求時,可以獲取監控數據並提出預警,提高生產和工作環境檢測的可靠性及實時性。

2 溫溼度傳感器電路設計

比較了一些傳感器應用設計方案後,選用SHT10晶片為嵌入式溫溼度傳感器的核心部件。它外圍電路簡便,相比其他傳感器晶片(DS18B20)有其獨到優勢。

STH10 每秒可進行3 次溫溼度測量,數據精度14 bit並且工作穩定。其測量採用CMOSens 專利,所以在測量效率和精度上要好於DS18B20.DS18B20 採用單總線控制方案(1-wire),大約每秒測量一次,9 位數字式溫度數據;只提供溫度測量。其在生產環境檢測要求嚴格時,就顯得精度和功能有些不足。

2.1 sht10 簡介

SHT10 是一款高度集成的溫溼度傳感器晶片,提供全量程標定數字輸出。傳感器包括一個電容性聚合體溼度敏感元件和一個用能隙材料製成的溫度敏感元件,他們與一個14 位A/D 轉換器以及一個串行接口電路設計在同一個晶片上面。其通過標定得到校準係數以程序形式儲存在晶片OTP 內存中,並利用兩線制串行接口與內部電壓調整,使外圍系統集成變得快速而簡單。

2.2 SHT10 工作原理

SHT10 晶片電源3.3V .傳感器上電後,等待11ms 來完成休眠狀態。通信復位和啟動傳輸命令後,發送一組測量命令('00000101'表示相對溼度RH,'00000011'表示溫度T),控制器要等待測量結束。這個過程需要大約11/55/210ms ,分別對應8/12/14bit 測量。SHT10 通過下拉DATA 至低電平,表示測量結束。控制器觸發SCK 時鐘前,必須等待這個數據備妥信號才能將測量數據正確讀入。

測量和通訊結束後,SHT10 自動轉入休眠模式。數據傳送採用兩線制串行接口(與I2C 接口不兼容)。

2.3 SHT10 電路原理圖

SHT10 採用LCC 封裝,其DATA 和SCK 引腳分別連接到PXA310 的GPIO78 和GPIO79.PXA310通過模擬時序方式實現對外圍溫溼度傳感器的控制和數據讀寫操作。由於SHT10 對於溫溼度靈敏度很高,在系統集成時應儘量遠離發熱源(如MCU、LCD 等),否則測量結果會有所偏離;為SHT10 布線時,周圍應儘量鋪地減少周圍器件對其的幹擾。SHT10 電路原理圖如圖1 所示。

圖1 SHT10 電路原理圖


3 Linux溫溼度傳感器驅動程序實現

單片機控制的傳感器設備中,單片機通常是單線程運行。在進行溫溼度測量時,單片機需要等待測試結果返回,其方法阻礙了其他測試和操作的同步執行。

在嵌入式Linux 系統中,驅動程序將測試任務送入任務隊列,交出CPU 控制權,繼而進行其他實時任務運行,待內核空閒再進入任務隊列完成傳感器的測量,以此提高系統執行的效率和實時性。

3.1 Linux 溫溼度傳感器設備加載

溫溼度傳感器使用Linux 內核的Miscdevice 數據結構在驅動程序初始化時將設備註冊到內核。

Miscdevice 是字符設備,其主設備號為10,設備及設備接口函數定義如下所示。

驅動程序加載設備時將調用內核的註冊函數。在Linux2.4 和2.6 內核中,幾乎所有Linux 驅動程序都依靠如下函數加載模塊。

驅動程序初始化完成後,上層應用程式可以調用sht10_fops 中的sht10_read 函數進行溫溼度的讀取操作。

3.2 Linux 溫溼度傳感器設備操作

進行數據讀取前,首先要在驅動程序中開闢4 個字節的數據空間,用於存放溫度和溼度測量值。這裡定義全局變量數據緩衝區為unsigned char buf[4].

讀取SHT10 溫溼度數據前,需要進行埠初始化和SHT10 復位操作,然後將任務送於任務隊列並阻塞線程,當任務完成返回後再喚醒線程,將讀到數據傳遞給上層應用程式做進一步處理。程序流程圖和實現函數如圖2 所示。

圖2 驅動程序流程圖。

上述函數中start_trans; write_byte; read_data; read_byte 分別利用PXA310 引腳模擬時序完成啟動傳輸、寫字節,讀一位數據和讀字節的操作。

內核tasklet_schedule() 調度執行指定的tasklet,在獲得運行機會之前只會調度一次,如果在運行時被調度, 則完成後會被再次運行。

wait_for_completion()這個函數進行一個不可打斷的等待,如果有代碼調用它,並且沒有完成這個任務,結果會是一個不可殺死的進程。copy_to_user()將內核空間數據傳向上層用戶空間,並讓上層測試程序做進一步處理。


3.3 Linux 溫溼度傳感器設備阻塞操作

由於溫溼度傳感器測量需要一定時間,為提高系統運行效率和實時性,在驅動程序中阻塞線程,交出內核控制權,等待操作完成後喚醒線程,提高系統利用率。complete()在函數中就是喚醒一個等待的讀取線程。任務隊列實現函數如下所示。

Tasklet可以使測量操作在系統負荷不重時被調用,或是被立即執行,但始終不會晚於下一個CPU clock.

Tasklet 始終在中斷期間運行,並且在調度他的同一CPU 上運行。對比單片機系統,在單線程情況下,一般在sht10_read()中調用2 次measure_ sht10()來等待測量完成,測量效率依賴2 次測量消耗的時間;但在Linux 驅動程序中,使用Tasklet 方式操作,2 次測量過程不會對其他線程產生影響,在有其他實時事件需要及時處理時(如網絡,視頻),可以更有效提高驅動運行效率,降低對其他實時處理產生的影響。

4 溫溼度傳感器測試與驗證

驅動程序完成以後,需要相應測試程序驗證驅動程序編寫的正確性。由於驅動程序中不能對數據進行浮點數運算,所以測試程序必須將驅動程序傳遞來的數據進行浮點數運算才能得到相應的溫溼度值。

4.1 溫溼度傳感器測試環境

在實驗室常溫下,測試程序多次調用驅動程序中讀溫溼度的函數接口獲得測試數據,來驗證設計的正確和可靠。並考慮實驗室內常溫下,相對溼度與溫度具有非線性關係,計算溼度值時需要考慮溫度的補償關係,其關係如圖3 所示。

圖3 SORH 轉換到相對溼度。

為補償溼度傳感器的非線性以獲取準確數據,並考慮實際溫度與測試參考溫度(25℃)不同,使用如下公式修正讀數。

RHlinear 是溫度修正係數,RHtrue 是相對溼度,SORH是傳感器返回的溼度值。進行12bit 溼度檢測時,參數取值如下表所示。

表1 溼度轉換係數與溫度補償係數

由於能隙材料研發的溫度傳感器具有極好線性,14bit 溫度值參考如下公式。

Temperature = d1+d2 x SOT

溫度轉換係數取值如下表所示,SOT 是傳感器返回的溫度值。

表2 溫度轉換係數

利用上述溫溼度轉換公式和係數可以得出溫溼度測量值。

4.2 溫溼度傳感器測試途徑與效率驗證

在測試程序中,考慮上述測量環境下溫溼度之間的非線性,調用驅動程序的sht10_read 函數將讀到的溫溼度數據返回上層測試程序進行浮點數運算,將計算值通過串口輸出,達到測試驗證的目的。測試程序的實現如下所示。

static void calc_sht10(float *humi, float*temp)

{

float rh=*humi;

float t=*temp;

float rh_line;

float rh_true;

t=t*d2+d1; //溫度轉換公式

rh_line=C3*rh*rh+C2*rh+C1; //相對溼度轉換公式

rh_true=(t-25)*(t1+t2*rh)+rh_line;

//相對溼度溫度補償

if(rh_true>100)rh_true=100; //超出範圍

if(rh_true0.1)rh_true=0.1;

printf(Humidity is: %.2f%RHn,rh_true);

printf(Temperature is: %.2f'Cn,t);

}

int main(int argc, char *argv[]) //主函數

{

int fd;

float temp,humi; //溫溼度數據

char buffer[4]; //數據緩衝

fd = open(/dev/sht10, 0); //打開文件

if (fd 0) { //打開失敗,退出

perror(open device /dev/sht10);

exit(1);

}

read(fd,buffer,sizeof(buffer));// 讀取溫溼度值

temp=(float)((buffer[0]《8)|buffer[1]);

humi=(float)((buffer[2]《8)|buffer[3]);

calc_sht10(humi, temp); //溫溼度數值轉換

close(fd); //關閉文件

return 0; //退出

}

測試完成後,考察驅動程序運行效率,即在驅動程序的tasklet_schedule 和copy_to_user 前分別對PXA310 的OSCR 時間計數寄存器進行時間讀取,計算此次溫溼度測量所用時間。計算公式如下所示。

Time=(OSCR2-OSCR1)/OSCR_FREQ

OSCR2 是喚醒線程後的時間,OSCR1 是進入任務隊列前的時間。OSCR_FREQ 是PXA310 內部時鐘頻率3.25MHz.這樣就可以計算出每次溫溼度讀取消耗的時間,以此對比SHT10 開發文檔中理論測量時間值,確定實際驅動程序運行的效率。

5 實驗結果與分析

超級終端中插入驅動模塊,運行測試程序,可以在終端上看到測試結果(如圖4)。

圖4 超級終端測試結果

系統功能實現後,利用上述Time 計算公式計算驅動程序中溫溼度測量消耗的時間,實際測試結果如表3 所示。

表3 驅動程序中實際測量消耗的時間

上表的測試結果不僅和傳感器的響應速度有關,而且還與系統中其他運行的線程有關。當系統中有高一級任務到來或其他實時事件需要處理時,實際測量時間會大於上表中的測量時間,並且隨著任務的增加測量時間也會相應的增加,完成的時間也受到外界中斷的影響。內核會在任務不繁忙時完成測量操作。上表測試結果並未受到系統中其他驅動程序和中斷的影響。對比開發手冊中理論測量時間可以看到,使用任務隊列的方法對改善系統處理能力與實時性效果明顯。

此外,實現溫溼度傳感器驅動程序還需要清楚了解SHT10 讀寫時序,讀取溫度和溼度所需要的時間不同。如果應用程式中得出的溫溼度值超過預期值,就可以打開GPIO 驅動模塊,觸發系統板上的蜂鳴器達到預警效果。

6 結語

此設計方案已經應用於嵌入式無聲交互控制系統的檢測,並且運行正常。實踐證明,該嵌入式Linux溫溼度傳感器設計方案可行有效,線程阻塞提高系統運行效率,在環境測量準確度和系統實時性方面得到了令人滿意的效果。由於此方案基於Linux 作業系統和PXA310 平臺,其在多任務、實時快速處理上具有一定的優勢。

相關焦點

  • 基於傳感器SHT75和乙太網實現現場環境溫溼度數據採集系統的設計
    基於傳感器SHT75和乙太網實現現場環境溫溼度數據採集系統的設計 劉鋒,王平,付蔚 發表於 2020-04-28 10:14:22 引言 在工業現場,特別是那些環境因素對生產過程影響比較大的車間
  • 基於RS485總線的溫溼度監控系統設計
    下位現場數據採集與控制單元掛接於同一條數據通訊總線,總線為各現場單元共享,為避免總線通訊的競爭與衝突,系統網絡通訊採用主從式和廣播式通訊控制方法。由主控微機決定一次通訊過程的啟動和終止,通過給需要通訊的現場單元分配總線通訊使用權的方法來實現與下位單片機與主控微機之間的網絡通訊。網絡中的下位單片機請求通訊時必須等待主控微機將總線使用權分配給它後才能收發數據[2]。
  • 溫溼度傳感器有哪些類型 溫溼度傳感器選購方法介紹【詳解】
    溫溼度傳感器是一種能夠感受到溫度和溼度並轉換為輸出信號的設備,是一種電阻類設備,在各個行業都被廣泛使用。比如最常見的中央空調系統就 是 帶有溫溼度傳感器的,空調在一定程度上可以調節溼度,通過這種傳感器,空調能夠自動了解並平衡室內的溫溼度,下面一起來了解一下。
  • 基於ZigBee技術的大棚溫溼度無線監控系統研究
    而大棚內部的溫溼度對農作物的生長密切相關,因此對大棚內溫溼度數據的監控就顯得非常重要。大棚溫溼度監測與控制是農業現代自動化、數位化的關注熱點之一。基於ZigBee技術的大棚溫溼度無線監控系統具有低功耗、低成本、自組網等特點。滿足大棚溫溼度監控系統的需求,能夠對大棚內的溫溼度進行自動監測和控制,實現了真正意義上的自動化、數位化和網絡化。
  • 溫溼度傳感器的四種數據傳輸方式
    ,科技和物聯網的進步導致我們傳遞數據的方式也變的更加多種多樣,各類傳感器不僅能夠實時監測數據,還可以根據相應的使用場景選擇不同的數據傳輸方式上傳至雲平臺,方便我們在需要時隨時取用。下面溫溼度傳感器為例,來講一下傳感器的四種數據傳輸方式。 首先聲明一下,這四種數據傳輸方式並不局限於溫溼度傳感器。因為溫溼度傳感器作為我們日常生活常見的一款傳感器,數據上傳方式較為全面,相對來說具有一定代表性。
  • 溫溼度傳感器HTW-211用於醫藥保管倉庫溫溼度檢測
    應按藥品的溫、溼度要求將其存放於相應的庫中,藥品經營企業各類藥品儲存庫均應保持恆溫。對每種藥品,應根據藥品標示的貯藏條件要求,分別儲存於冷庫(2-10℃)、陰涼庫(20℃以下)或常溫庫(0-30℃)內,各庫房的相對溼度均應保持在45%—75%之間。
  • 一種關於無線測溫的系統的方式|傳感器|溫溼度|測點|組態_網易訂閱
    該系統的設計思想是:首先系統採用分散式就地安裝的溫度傳感器(防爆型或智能顯示型),與測溫位置直接接觸;然後通過無線方式將這些前端傳感器採集的溫度數據發送到無線數據採集單元(嵌入型或TFT7寸觸摸型);無線數據採集單元可以根據自定義的溫度進行相應的智能控制;之後無線數據採集單元通過RS485連接線與伺服器相連,構成料堆監控平臺系統;最後在無線測溫軟體平臺上進行數據存儲,實時監控,智能分析,實施在線監測
  • 智能化的溫溼度智能控制系統設計詳細講解
    人們通常使用溫度計、溼度計來測量倉庫的溫度和溼度,通過人工加熱、加溼、通風和降溫等方法來控制倉庫的溫、溼度,這種方法不但控制精度低、實時性差,而且操作人員的勞動強度大。同時溫度與相對溼度的大幅度變化可能導致種子大範圍腐爛或者影響種子的發芽率,從而帶來極大的經濟及財產損失。因此,保持適宜的倉庫溫度、溼度對保證農產品種子存儲質量十分重要。
  • 溫溼度傳感器在實驗室環境調控中的應用
    下面我們將從各項工作對環境溫溼度的需求、溫溼度傳感器的選擇以及如何根據設備制定監測方案等幾個方面進行展開。 實驗室溫溼度傳感器的選擇 考慮到實驗室的工作性質,我們通常選擇使用WIFI型溫溼度傳感器。
  • 溫溼度傳感器原理
    >  溫溼度傳感器是指能將溫度量和溼度量轉換成容易被測量處理的電信號的設備或裝置。由於溫度與溼度不管是從物理量本身還是在實際人們的生活中都有著密切的關係,所以溫溼度一體的傳感器就會相應產生。市場上的溫溼度傳感器一般是測量溫度量和相對溼度量。
  • 如何選用溫溼度傳感器
    隨著時代的發展,科研、農業、暖通、機房、航空航天、電力等工業部門,越來越需要採用傳感器,對產品質量的要求越業越高,對環境溫、溼度的控制以及對工業材料水份值的監測與分析都已成為比較普遍的技術條件之一。產品及溼度測量屬於90年代興起的行業。
  • 用於HVAC暖通空調通風管道中溫溼度檢測的溫溼度傳感器
    溼度的目的。暖通空調系統的設計應用到熱力學、流體力學及流體機械,是機械工程領域中的重要分支學科。暖通空調系統可以控制空氣的溫度及溼度,提高室內的舒適度,是中大型工業建築或辦公建築(如摩天樓)中重要的一環。在現代的建築中,上述機能(包括其控制系統,及系統的設計及安裝)會整合在一個或多個的暖通空調系統中。針對小型的建築,承包商會直接依需求選擇暖通空調系統及設備。
  • 採用神經網絡與模糊推理結合實現環境實驗室溫溼度監測系統的設計
    打開APP 採用神經網絡與模糊推理結合實現環境實驗室溫溼度監測系統的設計 伍文平,張智盛, 發表於 2020-05-12 09:31:24
  • 關於溫溼度傳感器在實驗室環境調控中的應用
    化學實驗室中試劑、儀器的儲存和各項化學實驗的進行,也都會不同程度受到溫溼度的影響。因此,在實驗室投入使用後,實時對環境溫溼度監測就十分有必要。 實驗室溫溼度控制要求 環境條件溫溼度的控制方面考慮的要素就是保證實驗操作的環境溫溼度是能夠滿足實驗程序各個過程的需要。下面我們將從各項工作對環境溫溼度的需求、溫溼度傳感器的選擇以及如何根據設備制定監測方案等幾個方面進行展開。
  • 一種智慧型手機獲取監測環境溫度、溼度的實現方法
    編者按:本文介紹一種利用智慧型手機耳機接口音頻傳輸,來實現智慧型手機拓展監測環境溫度、溼度的應用設計與實現方案,同時提出了可兼容2種不同耳機接口標準的解決方案,增強了智慧型手機拓展應用價值。
  • 深度科普——農業溫溼度傳感器中到底有什麼高科技?
    充分利用已架設好的通訊網絡實現遠距離的數據採集和傳輸,實現溫溼度數據的集中監控。可大大減少施工量,提高施工效率和維護成本。1、 乙太網型乙太網型溫溼度變送器,可採集溫溼度數據並通過乙太網方式上傳到伺服器。產品充分利用已架設好的乙太網通訊網絡實現遠距離的數據採集和傳輸,實現溫溼度數據的集中監控。可大大減少施工量,提高施工效率和維護成本。
  • 智能溫溼度傳感器的特點是什麼,它的應用有哪些
    智能溫度傳感器的特點是能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU);並且它是在硬體的基礎上通過軟體來實現測試功能的,其智能化程度也取決於軟體的開發水平。 建大仁科RS-WS-GPRS/4G-6系列是基於GPRS傳輸的溫溼度變送器,只需一張移動或聯通的SIM卡(4G選型支持全網通),採用大屏液晶顯示,具有溫溼度上下限雙控,限值自由設置,溫度、溼度憑密碼校準,GPRS數據傳輸等功能,內部集成報警功能模塊(蜂鳴器和繼電器),可實現超高、低溫、高、低溼時報警。產品採用瑞士原裝溫溼度測量單元,具有測量精度高,抗幹擾能力強等特點。
  • 溫溼度傳感器發展現狀及前景分析
    溫溼度傳感器發展   早期由於技術各方面的限制,傳感器並不能同時實現測量溫度和溼度這兩個功能,所以在早期我們為了測得溫度和溼度兩個重要參數,不得不同時使用溫度傳感器和溼度傳感器。   人類發明的最早期的就是溫度計,溫度計測溫的原理是利用液體受熱膨脹,利用液體柱的高度對應溫度的刻度來衡量當前溫度值,這種溫度計的缺點是量程有限、精度有限。
  • 小米溫溼度傳感器拆解:簡單得不可思議
    上月,小米帶來了一個全新的智能硬體產品小米溫溼度傳感器。外觀來看,小米溫溼度傳感器造型小巧,設計也是明顯的小米風格,可以隨意吸附在牆面、桌椅之上。
  • 溫溼度傳感器的三種模擬量換算關係
    ,如果想及時感知空氣中溫溼度的變化,那就需要溫溼度傳感器。在日常生活中,溫溼度傳感器種類有很多,按照數據上傳方式分有RS485型溫溼度傳感器、模擬量型溫溼度傳感器、網絡型溫溼度傳感器這三種。今天主要介紹模擬量型溫溼度傳感器。