a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

博客專欄

EEPW首頁 > 博客 > LabVIEW控制Arduino采集熱電偶溫度數值(進階篇—2)

LabVIEW控制Arduino采集熱電偶溫度數值(進階篇—2)

發布人:美男子玩編程 時間:2022-06-22 來源:工程師 發布文章

1


項目概述


在之前的博文中,介紹了LabVIEW控制Arduino采集LM35溫度傳感器數值和LabVIEW控制Arduino采集熱敏電阻溫度數值的方法。本篇博文將基于熱電偶搭建一款溫度監控系統。


熱電偶測溫具有技術成熟,測溫范圍寬,測量精度高,性能穩定,結構簡單,動態響應較好,價格相對較便宜的優點。


熱電偶是將兩種不同材料的導體或半導體A和B焊接起來,構成一個閉合回路,當導體A和B的兩個連接點1和2之間存在溫差時,兩者之間便產生電動勢,因而在回路中形成一個回路電流。這種現象稱為熱電效應,而這種電動勢稱為熱電勢。熱電效應原理圖如下圖所示:


圖片


熱電偶就是利用熱電原理進行溫度測量的,其中,直接用作測量介質溫度的一端叫作工作端(也稱為測量端),另一端叫作冷端(也稱為補償端)。


熱電偶實際上是一種能量轉換器,它將熱能轉換為電能,用所產生的熱電勢測量溫度。對于熱電偶的熱電勢,應注意如下幾個問題:

1、熱電偶的熱電勢是熱電偶工作端的兩端溫度函數的差,而不是熱電偶冷端與工作端之間溫度差的函數;

2、當熱電偶的材料均勻時,熱電偶所產生的熱電勢的大小,與熱電偶的長度和直徑無關,只與熱電偶材料的成分和兩端的溫差有關;

3、當熱電偶的兩個熱電偶絲材料成分確定后,熱電偶熱電勢的大小,只與熱電偶的溫度差有關;若熱電偶冷端的溫度保持一定,熱電偶的熱電勢僅是工作端溫度的單值函數。


關于熱電偶更詳細的測溫原理可參見博文:熱敏電阻、RTD、熱電偶的原理和特性



2


項目架構


本篇博文主要介紹采用熱電偶、MAX6675、Arduino Uno與LabVIEW來實現上下位機高溫監測系統。其中,MAX6675實現熱電偶的線性化與冷端補償,Arduino Uno作為下位機,負責MAX6675的讀寫以及數據傳輸,LabVIEW編寫的監測軟件作為上位機,上下位機利用USB-TTL接口實現通信。系統框圖架構如下圖所示:


圖片



3


硬件環境


將K型熱電偶兩端接至MAX6675模塊的接線座上,確保正負兩極連接無誤。將MAX6675模塊的VCC、GND、SO、CS、SCK分別接至Arduino Uno控制板上的+5V、GND、數字端口5、6、7上。熱電偶高溫監測系統硬件連接如下圖所示:


圖片



4


Arduino功能設計


Arduino下位機部分需要完成以下功能:溫度測量和溫度傳輸,Arduino Uno控制板通過USB—TTL電纜接收上位機發來的命令,完成相應的溫度測量,并將測量的溫度數據回傳至LabVIEW上位機軟件。


溫度測量即通過Arduino Uno控制器操作MAX6675以讀取K型熱電偶的溫度數據MAX6675完成K型熱電偶信號的模數轉換、冷端補償和線性化。


Arduino Uno控制器負責讀取LabVIEW上位機發來的熱電偶溫度采集命令,并讀取MAX6675從而獲取熱電偶的溫度數據,通過串口發送回上位機LabVIEW軟件。Arduino Uno控制器的程序代碼如下所示:



























































#include "Max6675.h" Max6675 ts(8, 9, 10);// Max6675 module: SO on pin #8, SS on pin #9, CSK on pin #10 of Arduino UNO// Other pins are capable to run this library, as long as digitalRead works on SO,// and digitalWrite works on SS and CSK byte comdata[3]={0};      //定義數組數據,存放串口命令數據int LED = 13;                 //定義LED連接的管腳 void receive_data(void);      //接受串口數據void test_do_data(void);         //測試串口數據是否正確,并更新數據  void setup(){  Serial.begin(9600);        pinMode(LED, OUTPUT);  ts.setOffset(0);  // set offset for temperature measurement.  // 1 stannds for 0.25 Celsius} void loop(){  while (Serial.available() > 0)   //不斷檢測串口是否有數據   {        receive_data();            //接受串口數據        test_do_data();               //測試數據是否正確并更新數據   }}  void receive_data(void)       {   int i ;   for(i=0;i<3;i++)   {      comdata[i] =Serial.read();      //延時一會,讓串口緩存準備好下一個字節,不延時可能會導致數據丟失,       delay(2);   }} void test_do_data(void){  if(comdata[0] == 0x55)            //0x55和0xAA均為判斷是否為有效命令   {     if(comdata[1] == 0xAA)     {        if(comdata[2] == 0xff)          {                 Serial.print(ts.getCelsius(), 2);          }      }   }}



5


LabVIEW功能設計


LabVIEW上位機部分需要完成以下功能:向下位機發送數據和接收數據并顯示在前面板上,Arduino Uno控制板通過串口接收上位機命令,完成相應的溫度測量,并將數據回傳至上位機。


5.1、前面板設計


LabVIEW前面板分為當前溫度數據顯示和溫度波形數據顯示兩個部分,波形數據主要用于顯示溫度的變化趨勢,LabVIEW上位機前面板設計如下圖所示:


圖片


5.2、程序框圖設計


LabVIEW上位機主程序的結構為順序結構+While循環。首先,在順序結構中的第幀中,通過設置的串口號來初始化串口通信。然后,程序進入While循環中,每間隔1秒讀取一次熱電偶的溫度,并顯示在前面板上的數值框和波形圖。最后,關閉串口通信。


為了保證通信的正確性,在數據幀中設置0X55和0XAA的校驗幀,0XFF為熱電偶溫度采集命令碼。LabVIEW上位機程序框圖如下圖所示:


圖片


本篇博文介紹的熱電偶高溫監測系統可以實現較寬范圍的溫度測量,將Arduino Uno與LabVIEW的通信方式更改為RS-485總線,適用于鍋爐等工業現場的高溫測量。


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: LabVIEW Arduino

相關推薦

技術專區

關閉