?? max6675.txt
字號:
1.引言
在工業檢測系統中,熱電偶作為一種主要的測溫元件,具有結構簡單、制造容易、使用方便、測溫范圍寬、測溫精度高等特點,被廣泛應用于工業溫度控制過程中。但熱電偶輸出電勢及其微弱,而且存在冷端溫度誤差和輸出電勢與被測溫度的非線性問題,易引起較大測量誤差,尤其在以單片機為核心器件的智能裝置中,需進行復雜的信號放大、A/D轉換、查表線性、溫度補償及數字化輸出接口等軟硬件設計,硬件芯片使用過多,軟件編寫任務重,不能適應現階段產品集成化、模塊化的需要。MAX6675是MAXIM公司推出的K型熱電偶串行模數轉換器,它能獨立完成信號放大、冷端補償、線性化、A/D轉換及SPI串口數字化輸出功能,大大簡化了熱電偶測量智能裝置的軟硬件設計。
2.MAX6675的物理特點
MAX6675封裝在SO-8腳的芯片中,推薦工作電壓為一單+5V直流電壓,連續工作時的功耗僅為47.1mW,電流為50mA,適用于體積不大,不利散熱的裝置條件下使用,其引腳圖如圖1所示。
其中SO為SPI串行輸出端口引腳; 為片選信號;SCK為串行時鐘輸入;T+、T-分別接熱電偶的測量端和冷端。
3.MAX6675的工作原理與功能
根據熱電偶測溫原理,熱電偶的輸出熱電勢不僅與測量端的溫度有關,而且與冷端的溫度有關,使用硬件電路進行冷端補償時,雖能部分改善測量精度,但由于熱電偶使用環境的不同及硬件電路本身的局限性,效果并不明顯;而使用軟件補償,通常是使用微處理機表格法或線性電路等方法來減小熱電偶本身非線性帶來的測量誤差,但同時也增加了程序編制及調試電路的難度。MAX6675對其內部元器件參數進行了激光修正,從而對熱電偶的非線性進行了內部修正。同時,MAX6675內部集成的冷端補償電路、非線性校正電路、斷偶檢測電路都給K型熱電偶的使用帶來了極大方便,其工作原理如圖2所示。
MAX6675內部集成有冷端補償電路;帶有簡單的3位串行SPI接口;可將溫度信號轉換成12位數字量,溫度分辨率達0.25℃;內含熱電偶斷線檢測電路。冷端補償的溫度范圍-20℃~80℃,可以測量0℃~1023.75℃的溫度,基本符合工業上溫度測量的需要,其串行接口時序如圖3所示。
由接口時序可以看出,當MAX6675的 引腳從高電平變為低電平時,MAX6675將停止任何信號的轉換并在時鐘SCK的作用下通過SO引腳向外輸出已轉化的數據(此數據是經過放大了的A/D轉換后的數字量與冷端補償之和);相反,當 從低電平變回高電平時,MAX6675將進行新的轉換。在 引腳從高電平變為低電平時,第一個字節D15出現在引腳SO上,一個完整的數據讀過程需要16個時鐘周期,數據的讀取通常在SCK的下降沿完成。值得指出的是此芯片的AD轉換速度在0.17~0.22s之間,比之一般的AD轉換芯片微秒級的轉換速度要長得多。
4.MAX6675與89C52的接口實現
MAX6675采用標準的SPI串行外設總線與單片機接口,因此它只能作為從設備即串行接口芯片。SPI(Serial Peripheral Interface)總線系統是一種同步串行外設接口,是Motorola公司推出的總線標準,它可以使單片機與各種外圍設備以串行方式進行通信以交換數據。
以單路熱電偶為例來說明MAX6675與C51系列單片機的接口連接。由于C51系列單片機不具有SPI串行總線接口,可以使用軟件來模擬SPI操作,包括串行時鐘、數據輸入和數據輸出。如圖4所示,串行外部時鐘由P3.1提供,它是單片機的串行輸出口TXD,對應于SCK的串行時鐘輸入;片選信號由P3.2提供;轉換數據由P3.0讀取,它是單片機的串行輸入口RXD,對應于SO的串行輸出。MAX6675的轉換結果在SCK的控制下連續輸出。
值得指出的是我們將串行時鐘輸出口P3.1的初始狀態設置為1,而在允許接口后再置P3.1為0。這樣,單片機在輸出1位SCK時鐘的同時,將使接口芯片串行左移,從而輸出一位數據至單片機的P3.0口(模擬MISO線),以后再置P3.1為1。至此,模擬一位數據輸入過程完成。
5.MAX6675的軟件設定
由以上的敘述可知MAX6675是可編程的K型熱電偶A/D轉換器,可以使用C匯編程序完成。MAX6675的輸出數據為16位,其中D15始終無用且一直為零,D14~D3對應于熱電偶模擬輸入電壓的數字轉換量,D2用于檢測熱電偶是否斷線(D2為1表明熱電偶斷開),D1為MAX6675的標識符,D0為三態。其轉換結果與對應溫度值具有較好的線性關系:溫度值=1023.75 轉換后的十進制數/4096。
溫度信號讀取程序如下所示,程序中定義的ADH和ADL分別對應轉換后的數據高4位和低8位。程序里面還附加了掃描D2位的子程序,若其為1,標志flag置1,返回相應的錯誤代碼,顯示何路出現斷偶,這樣做減少了熱電偶檢修的難度,具體采樣與AD轉換源程序如下:
#include <reg52.h>
#include <absacc.h>
sbit SO=P3^0;
sbit CS=P3^2;
sbit SCK=P3^1;
unsigned char ADH,ADL;
unsigned char flag;
void read (void)
{
unsigned char i,j;
ADH=ADL=0;
SCK=0;
CS=0;
SCK=1; a
CS=0;
SCK=0; /*輸出數據D15*/
SCK=1;
For(i=4;i>0;i--) /*讀取轉換結果高4位*/
{SCK=0;
ADH0=SO;
ADH=ADH<<1; /*數據左移*/
SCK=1;
}
for(i=8;i>0:i++) /*讀取轉換結果低8位*/
{SCK=0;
ADL0=SO;
ADL=ADL<<1; /*數據左移*/
SCK=1;
}
SCK=0;
flag=SO; /*讀取D2斷偶標志*/
SCK=1;
SCK=0; /*輸出數據D0*/
CS=1;
Delay(10);}
void delay(unsigned int c)
{TMOD=0x10; /*設置定時器T1工作在16位定時方式*/
TR1=1;
while(c--!=0)
{TH1=(65536-11000)/256; /*預置高8位定時初值*/
TL1=(65536-11000)%256; /*預置低8位定時初值*/
EA=1; /*允許全局中斷*/
ET1=1; /*允許定時器中斷*/
do{}
while(!TF1);
TF1=0; /*重置標志位*/
}
}
對于上文提出的AD轉換速度較慢的問題,使用了T1定時器控制,延遲22us,共延遲220us,足夠芯片完成AD轉換。
6.試驗總結
MAX6675作為測量熱電偶的專用芯片,最大的特點是內部集成有冷端補償電路,它類似一個AD590這樣的溫度傳感器,通過感應芯片周圍的溫度來得到此時熱電偶的冷端溫度值,即是通過冷端補償檢測和校正周圍溫度變化的。當熱電偶的冷端與芯片溫度相等時,MAX6675可獲得最佳的測量精度。因此在實際測溫應用中,應盡量避免在MAX6675附近放置發熱器件,這樣會造成冷端誤差。同時熱電偶的輸入負極T-必須接地,且盡可能地靠近MAX6675的引腳地;由于冷端溫度是由MAX6675本身檢測到的,在設計印刷電路板時,為了提高測量的精確度,地線盡可能地加粗。
由實驗結果來看,MAX6675成功解決了熱電偶非線性、冷端補償等影響熱電偶測量精度的問題,試驗結果誤差在0.5℃左右,相對與測量范圍在幾百度的熱電偶來說,完全達到了測量精度,因此它可廣泛使用在熱電偶溫度信號的采集裝置中,從而大大減少裝置的體積,減輕系統軟硬件設計的困難,提高裝置運行的可靠性。除此之外,此芯片亦可用于熱電偶自動檢定等其他需要使用熱電偶測量的場合中。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -