《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 基于Matlab的一種小型溫度檢測系統
基于Matlab的一種小型溫度檢測系統
摘要: 基于Matlab環境下PC機與單片機實時串行通信及數據處理的方法,設計了一個小型溫度檢測系統,由單片機和DS18B20完成數據采集,PC機實現通信數據的分析處理及圖形顯示,并得到溫度隨時間變化的函數解析式。使用Matlab編程,提高了開發效率,具有一定的實用性。
Abstract:
Key words :

  1 前言

  溫度是表征環境的一個重要的參數。在工程領域,尤其像工程熱力學等,溫度檢測非常普遍,對溫度精確測量以便實時控制也顯得尤為重要。

  在控制系統中,上位機與下位機之間實現通信的方法和應用平臺很多。目前,以VB和VC開發的通信軟件較多,然而,這類軟件雖然功能完善,但是數據采集到計算機后要進行各種處理(例如濾波,系統辨識,曲線擬合等)就顯得不方便,編程比較復雜。Matlab具有強大的數據處理能力及功能豐富的工具箱,被廣泛的應用于信號處理、自動控制等領域[1]。它編程語言簡單易學,利用簡單的命令就可以代替復雜的代碼,極大地提高了開發效率。

  本實驗基于Matlab環境下設計了一個小型溫度檢測系統,下位機使用AT89S51單片機和DS18B20完成溫度數據采集,上位機在Matlab環境下,調用設備控制箱serial類操作RS-232串口,用串行通信方式交換數據,進而借助Matlab對數據進行分析和處理,得到了溫度隨時間變化的函數解析式,同時介紹了基于Matlab環境下PC機與單片機串行通信的實時數據處理的實現方法。

  2 系統總體設計

系統結構圖

  
圖1  系統結構圖

  溫度檢測系統的整體結構如圖1所示。PC機串口與單片機USART口通過MAX232電平轉換芯片相連,構成一個主從式通信系統。系統工作時,單片機對串口和DS18B20初始化,在讀取溫度的同時等待中斷。PC機通過調用Matlab設備控制工具箱中的serial類及相關函數來創建串口設備對象,并以讀寫文件的方式實現對PC機串行口的訪問,PC機通過Matlab向串行口發送特殊指令從而觸發單片機中斷系統,單片機調用中斷服務例程,讀取即使溫度并將采集的數據通過串行口回送給PC機。此時,Matlab通過查詢的方式,實時接收單片機發送的數據,并完成對數據的分析處理及圖形顯示。                   

  3 下位機部分

  下位機部分由AT89S51單片機和DS18B20溫度傳感器構成,主要負責溫度數據的采集工作,并通過串行通信實時地將數據傳送到上位機進行處理,PC機與MUC串口通信技術相對而言已經比較成熟。

  3.1串行通信協議

  串口通信協議SPCP(Serial Port Communication Protocol)設計思想是基于幀傳輸方式,在本實驗中,設定字符格式為1個起始位,8個數據位和一個停止位,無奇偶校驗,中間8位即為有效數據,波特率設置為9600,為保證數據可靠傳輸,在傳送數據前通過握手建立連接,軟件握手協議規定如下:

  上位機發送握手信號0xff給下位機,下位機如果接受到上位機的信號為握手信號,則回送數據包給上位機,其中第一個數據為握手信號,以二個數據為溫度傳感器采集到的溫度數據,此時,上位機如果接受到的第一個數據不是握手信號,則丟棄該數據包,若是,則表示握手成功,直接存儲第二個數據。

  3.2溫度數據采集(DS18B20)

  本系統中采用DALLAS生產的“一線總線”可編程數字化溫度傳感器DS18B20,與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊,在使用中不需要任何外圍元件,設計可用數據線供電,簡化系統的硬件,同時支持多點組網功能,多個DS18B20可以并聯在惟一的三線上,實現多點測溫,使用起來非常方便。盡管如此,DS18B20是以犧牲軟件資源換取硬件資源的,由于采用單總線數據出數方式,DS18B20的數據I/O均由同一根線完成,因此,對讀寫的操作時序要求非常嚴格。

  根據DTASHEET,對DS18B20的編程主要注意以下幾個方面:

  1,精確延時問題[2]:為了保證DS18B20的嚴格時序,可以將延時分為2種:10us以下的短延時和10us以上的長延時。短延時可以使用C51提供的內部函數_nop_()來實現,一個nop()函數相當于一條DJNZ匯編指令,約2us;長延時主要有15us,90us,270us,540us等,這些延時均為15us的整數倍,一次可以使用nop()函數編寫一個延時15us的函數delay15(n)。

  2,基本操作:DS18B20的一線工作協議流程是:初始化→ROM操作指令→存儲器操作指令→數據傳輸。對DS18B20 進行所有的讀寫操作都是從初始化開始的,主要分為初始化操作,讀操作和寫操作。

 

  基于以上分析,對DS18B20的編程源碼如下:

  Init_DS18B20(void)  //初始化函數

  {DQ = 1;    //DQ復位

 

   Delay15(1);   //稍做延時

   DQ = 0;    //單片機將DQ拉低

   Delay15(32);  //精確延時 大于 480us

   DQ = 1;    //拉高總線

   Delay15(6); //延時90us

   x=DQ;      //讀存在脈沖

   delay15(20); //延時約270us

  } 

  Write_DS18B20(unsigned char dat)//寫一個字節

  {

   unsigned char i="0";//定義循環變量

   for (i=0; i<8; i++)

   {

    DQ = 0; //復位

    DQ = dat&0x01;//取數據的第i位并送出

  Delay15(1);//延時

  DQ = 1; //停止

    dat>>=1;//右移

   }

  }

  Read_DS18B20(void)//讀一個字節

  {

  unsigned char i="0";

  unsigned char dat = 0;

  for (i=8;i>0;i--)

   {

    DQ = 0; // 復位

    dat>>=1;

    DQ = 1; // 給脈沖信號

    if(DQ)

     dat|=0x80;//取位脈沖并存入dat

    delay15(1);//延時

   }

   return(dat);

  }

  4 上位機部分(PC)

  上位機通過串口向下位機發送命令實現對下位機的控制,并實時地接受下位機傳送過來的數據,對其分析處理,將結果用圖形顯示并存儲,完成人機交互過程。

  Matlab并不具備直接訪問硬件的能力,但是支持面向對象技術,通過調用Instrument Control Toolbox中的serial類函數來創建串口對象,對串口對象操作就是對串口操作,使用起非常方便。同時,Matlab封裝的串口對象支持對串口的異步讀寫操作,使得計算機在讀寫串口時能同時進行其他處理工作,因而能大大提高計算機執行效率。Matlab用多線程技術實現這種異步操作,通過異步讀寫設置,計算機在執行讀寫串口函數時能立即返回不必等待串口把數據傳輸完畢, 當指定的數據傳輸結束時就觸發事件,執行事件回調函數,可以在事件回調函數中編程,進行數據處理,這樣就不會造成因等待串口傳輸數據引起的時間浪費。

  4.1 Matlab下串口編程

  MATLAB的Instrument Control Toolbox提供了 MATLAB與儀器儀表通信的功能 ,它支持 GPIB 通用接口總線 、VISA、TCP/ IP、UDP、RS2232等多個協議 ,具有同步和異步讀寫功能以及事件處理和回調操作功能,可讀寫和記錄二進制和ASCII文本數據。與串口有關的主要函數如下[3]:

  (1)建立串口對象函數:obj=seril(’port’,’property name’,propertyvalue……),其中主要的屬性有:baudrate(波特率),databits(數據位),parity(校驗方式),stopbits(終止位)等,可以在初始化時進行賦值或者使用set函數。

  (2)打開串口設備對象:fopen(obj)

  (3) 串口讀寫操作:當matlab通信數據采用二進制格式時,讀寫串口設備的命令為fread()和fwrite();當通行數據采用文本(ASCII)格式時,讀寫串口設備的命令為fscanf()和fprintf()。

  (4)關閉并清除設備對象:

  Fclose(obj);%關閉串口設備對象

  Delete(obj);%刪除內存中的串口設備對象

  基于本系統串口通信協議,對串口對象的讀寫部分程序如下:

  Obj=serial(’com1’,’baudrate’,9600,’parity’,’none’,’databits’,8,’stopbits’,1);%初始化串口

  Fopen(obj);%打開串口對象

  Fwrite(obj,256);%向串口發送握手信號0xff

 

  TMP=fread(obj,3,’unit8’);%從串口讀取3字節數據,后2個即是16bit溫度數據

  If TMP(1)= =256   %判斷第一個字節受否是握手信號

    For i = 1:3

  Dat(i)=TMP(i+1);%剔除第一個握手信號字節

  End

  End

  Fclose(obj);%關閉串口設備對象

  Delete(obj);%刪除內存中的串口設備對象

 

  4.2 Matlab數據分析

  單片機一般能處理簡單的8位無符號數的四則運算,而DS18B20可以程序設定9~12位的分辨率,精度可達±0.5℃,溫度以16bit帶符號位擴展的二進制補碼形式讀出,如果使用單片機進行快速的實時處理則比較費力,同時單片機還要與DS18B20及上位機通信,系統資源也比較緊張。因而可以將讀取的16bit溫度數據直接送往PC機,由上位機來完成。Matlab強大的計算能力和繪圖功能給數據分析帶來了極大的方便,這不僅可以合理利用系統資源,也使得系統的通信過程更流暢。

  圖2所示的是用DS18B20測得的連續10個溫度數據的變化曲線圖。使用max()和min()函數可以求出溫度的極大極小值,調用polyfit()函數還可以進行最小二乘回歸分析與曲線擬合,進而求出溫度變化的解析式,本實驗中使用二階擬合后,得到的溫度隨時間變化的函數解析式為:F(T)= 0.0125*T2 - 0.0145T+27.3083.

DS18B20測得的變化曲線圖

  5 結語

  Matlab是一款在控制領域應用十分廣泛的軟件,本實驗基于Matlab環境下PC機與單片機實時通信及數據處理的方法,設計了一個小型溫度檢測系統,串口通信使用Matlab編程,極大的提高了開發效率,充分利用了Matlab的強大的數據分析能力,得到了溫度隨時間變化的函數解析式,取得了較好的效果,擴展了Matlab的使用范圍,具有一定實用性。

  本文作者創新觀點:使用DS18B20傳感器簡化了硬件結構,采用Matlab編程,充分利用其數據分析能力,合理利用系統資源,提高了開發效率,擴展了Matlab的使用范圍。

  參考文獻:

  [1] 趙云鵬.MATLAB串口通信在數據采集中的應用.[J]微計算機信息.2006,22(1):111~112

  [2] 顧振宇.劉魯源,杜振輝.DS18B20接口的C語言程序設計.[J] 單片機與嵌入式系統應用.2005 .12(6):22~24

  [3] 向先波,徐國華. Matlab環境下PC機與單片機的串行通信及數據處理.[J] 單片機與嵌入式系統應用.2004 .12:27~31

  [4] 李群芳, 張士軍,黃建. 單片微型計算機與接口技術(第二版). [M].電子工業出版社.2005

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧洲日本一区二区三区| 欧美香蕉视频| 亚洲乱亚洲高清| 欧美日韩精品一区视频| 宅男噜噜噜66一区二区| 亚洲一区二区视频| 国产一区二区无遮挡| 欧美成人精精品一区二区频| 日韩一级裸体免费视频| 在线亚洲欧美专区二区| 国产乱码精品一区二区三区av| 久久久国产亚洲精品| 91久久国产综合久久| 99re6这里只有精品| 国产亚洲一区二区三区在线播放| 国产精品v日韩精品| 国产精品va在线| 欧美日韩一区二区三区四区五区| 欧美一级二区| 亚洲人成在线影院| 亚洲午夜久久久久久尤物| 99热精品在线| 一区二区三区免费网站| 日韩一二三区视频| 亚洲视频视频在线| 狠狠爱综合网| 欧美日韩国产小视频| 欧美顶级少妇做爰| 欧美日本亚洲韩国国产| 欧美怡红院视频| 亚洲欧美日韩国产一区二区三区| 亚洲看片一区| 日韩亚洲国产欧美| 一区二区日韩| 亚洲一区三区视频在线观看| 亚洲第一色中文字幕| 国产精品久久久久久久9999| 免费一级欧美片在线播放| 亚洲免费视频观看| 午夜视频精品| 一本色道久久综合亚洲二区三区| 欧美在线影院| 国产精品99久久不卡二区| 日韩视频免费看| 亚洲无人区一区| 午夜影院日韩| 亚洲香蕉网站| 欧美一级视频精品观看| 亚洲色图自拍| 午夜在线视频一区二区区别| 久久精品一区二区| 午夜激情亚洲| 久久国产精品72免费观看| 亚洲日本va午夜在线影院| 一区二区高清在线| 午夜精品网站| 久久五月天婷婷| 久久成人免费日本黄色| 亚洲手机在线| 欧美在线观看视频| 亚洲天堂av在线免费观看| 亚洲尤物视频网| 亚洲成色www久久网站| 亚洲一区二区三区四区在线观看 | 国产在线视频欧美一区二区三区| 欧美先锋影音| 国产综合网站| 亚洲精品一区二区网址| 亚洲国产精品小视频| 国内精品嫩模av私拍在线观看 | 国产精品自拍在线| 亚洲激情电影中文字幕| 一区二区在线视频播放| 国产欧美精品在线播放| 国产精品久久久久影院亚瑟 | 亚洲国产精品热久久| 亚洲新中文字幕| 亚洲日本久久| 欧美专区在线观看一区| 午夜免费电影一区在线观看| 蜜臀a∨国产成人精品| 久久中文字幕导航| 久热成人在线视频| 国产精品久久久久7777婷婷| 在线观看视频一区二区欧美日韩| 狠狠入ady亚洲精品| 亚洲最黄网站| 亚洲视频axxx| 亚洲全部视频| 久久国产手机看片| 欧美色欧美亚洲高清在线视频| 欧美日韩中文字幕日韩欧美| 国语精品中文字幕| 亚洲欧美大片| 久久爱www| 亚洲欧美成人网| 欧美区一区二| 亚洲第一主播视频| 久久精品国产欧美亚洲人人爽| 亚洲一区二区三区中文字幕在线 | 亚洲一区二区三区免费在线观看| 裸体一区二区| 国产一区二区在线观看免费| 亚洲尤物精选| 亚洲欧美一区在线| 欧美日韩在线第一页| 亚洲清纯自拍| 亚洲乱码国产乱码精品精| 99国产精品国产精品久久| 久久香蕉国产线看观看网| 国产乱码精品一区二区三区av | 亚洲国产乱码最新视频| 亚洲精品乱码久久久久久蜜桃91| 久久成人人人人精品欧| 国产精品丝袜xxxxxxx| 国内精品久久久久影院薰衣草| 亚洲欧美电影在线观看| 亚洲一区在线免费| 欧美日韩国产成人在线观看| 亚洲激情欧美激情| 日韩天堂在线视频| 欧美裸体一区二区三区| 亚洲精品欧美日韩专区| 一本大道av伊人久久综合| 亚洲欧美综合v| 欧美日韩亚洲一区三区| 日韩一级不卡| 一本色道久久88亚洲综合88| 欧美人成在线视频| 99在线视频精品| 亚洲私人黄色宅男| 国产精品久久久久久久久久三级| 亚洲视屏一区| 午夜在线视频观看日韩17c| 国产精品美女久久久久久免费| 亚洲一二区在线| 久久国产天堂福利天堂| 国内精品久久久久久 | 亚洲人成人一区二区在线观看| 美女精品网站| 亚洲精品在线视频观看| 亚洲天堂av综合网| 国产精品日韩| 欧美在线视屏| 欧美激情精品久久久久久久变态| 国产精品一区二区欧美| 午夜精品一区二区三区电影天堂| 久久久国产午夜精品| 在线欧美不卡| 亚洲天堂av电影| 国产欧美日韩亚洲精品| 久久不射中文字幕| 欧美成人免费va影院高清| 日韩亚洲欧美中文三级| 欧美一区1区三区3区公司| 狠狠色丁香婷综合久久| 99re热精品| 国产精品视频导航| 久久精品卡一| 欧美日韩免费观看一区| 亚洲一区二区三区四区中文| 久久男人资源视频| 亚洲精品在线观| 欧美一区二区在线免费播放| 在线成人性视频| 国产精品99久久久久久久vr| 国产日韩欧美精品在线| 亚洲人体影院| 亚洲欧美影音先锋| 黄色一区二区三区四区| 一区二区三区免费看| 国产日本亚洲高清| 亚洲日本一区二区| 国产精品久久国产精麻豆99网站| 久久国产直播| 欧美三日本三级三级在线播放| 欧美一区二区日韩| 欧美日本精品在线| 欧美一区二区视频网站| 欧美日韩视频在线一区二区| 久久se精品一区二区| 欧美日韩午夜| 久久精品国产精品| 国产精品www.| 亚洲日本va午夜在线影院| 国产精品一级久久久| 日韩一区二区电影网| 国产午夜精品一区理论片飘花| 99综合电影在线视频| 国产在线播精品第三| 亚洲伊人第一页| 亚洲国产三级网| 久久精品成人一区二区三区| 亚洲老板91色精品久久| 久久久久久久久久码影片| 国产手机视频一区二区| 亚洲免费黄色| 国产主播一区| 欧美一区二区三区视频免费| 亚洲免费观看高清完整版在线观看熊 |