DZ239大功率激光二極管的精密恒溫制冷系統(tǒng)
DZ239大功率激光二極管的精密恒溫制冷系統(tǒng),dz239,大功率,激光二極管,精密,恒溫,制冷系統(tǒng)
1摘要這篇論文主要介紹了一種大功率激光二極管的精密恒溫制冷系統(tǒng),利用半導(dǎo)體制冷器對(duì)大功率激光二極管進(jìn)行制冷和精密溫控,構(gòu)成全固態(tài)制冷系統(tǒng)。本系統(tǒng)使用 MCU 機(jī)作為控制平臺(tái),采用自整定 PID 算法,采用 A/D 轉(zhuǎn)換器對(duì)環(huán)境溫度進(jìn)行采樣,數(shù)據(jù)處理后由 LED 顯示,人機(jī)界面友好,控制精度高,溫度精度可達(dá)±0.1℃,激光二極管輸出光功率波動(dòng)峰峰值小于 1.5‰。本論文詳細(xì)分析闡述了元件的選擇,電路的設(shè)計(jì)及相關(guān)軟件的設(shè)計(jì)。并給出了各設(shè)計(jì)模塊的程序流程圖,實(shí)際電路圖等。關(guān)鍵詞: 模數(shù)轉(zhuǎn)換,數(shù)模轉(zhuǎn)換,單片機(jī),半導(dǎo)體制冷器,自整定 PID 算法。2AbstractThis system uses MPU machine as the control platform, adopting the A/D converter to sample environmental temperature, displaying the data processed through LED. So the man-machine interface is friendly. The error of the temperature controlled which can reach ±0.1℃ is high and the fluctuation of laser diode output is less than 1.5‰. This thesis analyses in detail the choice of the components and parts, the design of the circuit and the relevant software by giving the procedure flow charts of each module and actual circuit diagrams.Keywords: A/D, D/A, MCU, TEC, PID.3目錄前言…………………………………………………………………………………………5第一章 恒溫控制器的性能指標(biāo)及方案論證…………………………………………6第一節(jié) 系統(tǒng)的性能指標(biāo)………………………………………………………6第二節(jié) 方案論證………………………………………………………………6第三節(jié) 控制算法的確定………………………………………………………7第二章 硬件系統(tǒng)的設(shè)計(jì)與芯片的選擇………………………………………………11第一節(jié) 硬件系統(tǒng)的設(shè)計(jì)原則和采用方法…………………………………11第二節(jié) 單片機(jī)的選擇………………………………………………………12第三節(jié) 存儲(chǔ)器的選擇………………………………………………………20第四節(jié) 熱敏電阻的介紹……………………………………………………23第五節(jié) A/D 及 D/A 轉(zhuǎn)換器的選用與設(shè)計(jì)……………………………………25第三章 恒溫控制系統(tǒng)的設(shè)計(jì)…………………………………………………………29第一節(jié) 恒溫控制系統(tǒng)及其特點(diǎn)……………………………………………29第二節(jié) 恒溫控制系統(tǒng)的設(shè)計(jì)…………………………………………………29第三節(jié) 半導(dǎo)體制冷器和驅(qū)動(dòng)電路……………………………………………35第四節(jié) 系統(tǒng)的數(shù)學(xué)模型………………………………………………………39第五節(jié) 實(shí)驗(yàn)方法和結(jié)果分析…………………………………………………40第四章 軟件部分設(shè)計(jì)…………………………………………………………………43第一節(jié) 軟件的分析設(shè)計(jì)及流程圖…………………………………………43第二節(jié) 程序的具體編制……………………………………………………44結(jié)束語(yǔ)……………………………………………………………………………………46附錄 AT89C51 部分程序清單……………………………………………………………47參考書(shū)目…………………………………………………………………………………50致謝 ………………………………………………………………………………………514前言光纖通信技術(shù)發(fā)展迅速,目前廣泛應(yīng)用于光纖通信系統(tǒng)的光源器件是采用Ⅲ-Ⅴ族化合物半導(dǎo)體材料 InCaAsP/InP 制作的激光二極管。InCaAsP/InP 材料體系的發(fā)光波長(zhǎng)正好滿(mǎn)足了石英光纖的需要。但是,由于材料本身的特性的限制,該激光器表西那出一個(gè)明顯的缺點(diǎn),就是對(duì)溫度特別敏感,在室溫下工作得很好的器件,溫度較高時(shí)激光射出會(huì)明顯減少,甚至不能正常工作。為此,人們?cè)谑褂眉す馄鲿r(shí)一般要給它加上半導(dǎo)體熱電制冷器,使其恒溫工作。在激光二極管泵浦固體激光器(DPL)中,為實(shí)現(xiàn)對(duì)激光晶體的譜線耦合,必須調(diào)整激光二極管的輸出波長(zhǎng)使其與激光晶體的吸收峰值匹配。激光二極管的輸出波長(zhǎng)主要由其摻雜濃度、工作電流和工作溫度決定,一般通過(guò)改變激光二極管的工作溫度來(lái)微調(diào)其輸出光的波長(zhǎng),其變化規(guī)律大致為 0.2~0.3nm/℃。另外,大功率激光二極管正常工作時(shí)熱耗很大,約占總功耗的 50%~75%,若不能及時(shí)散熱,就會(huì)使芯片溫度急劇升高,輸出功率嚴(yán)重下降,并影響使用壽命。所以工作溫度對(duì)于激光二極管十分重要,必須給激光二級(jí)管提供恒定而且能夠精密調(diào)整的工作溫度,才能保證激光二極管泵浦固體激光器具有最大的輸出功率和最小的功率波動(dòng)。以前對(duì)大功率激光二極管往往采用冰水循環(huán)方式制冷,通過(guò)調(diào)節(jié)熱沉中循環(huán)管道內(nèi)冰水的流量來(lái)達(dá)到溫控的目的。這種控制方法精度不高,使用也不方便。本文采用半導(dǎo)體制冷器對(duì)大功率激光二極管進(jìn)行制冷和溫控,并構(gòu)成全固態(tài)制冷系統(tǒng)??刂坪诵牟捎?PC 機(jī),人機(jī)界面友好,控制精度高,用于實(shí)驗(yàn)室的大型激光系統(tǒng)效果很好。若采用單片機(jī)作為控制系統(tǒng)的核心部件,即可構(gòu)成小型激光器的實(shí)用化系統(tǒng)。5第一章 恒溫控制器的性能指標(biāo)及方案論證第一節(jié) 系統(tǒng)的性能指標(biāo)本系統(tǒng)使用 MCU 機(jī)作為控制平臺(tái),采用自整定 PID 算法,采用 A/D 轉(zhuǎn)換器對(duì)環(huán)境溫度進(jìn)行采樣,數(shù)據(jù)處理后有 LED 顯示,人機(jī)界面好,控制精度高。系統(tǒng)要求的主要技術(shù)參數(shù)有:溫度控制范圍:-15℃——+80℃溫度控制精度:0.1℃短期穩(wěn)定度:0.02℃長(zhǎng)期穩(wěn)定度:0.05℃TEC 雙向電流輸出:±2.5A最大恒流輸出電壓范圍:±8V最大輸出功率:20W限制電流范圍:0——2500mA增益可調(diào):0——50積分時(shí)間:1S熱敏電阻類(lèi)型:NTC第二節(jié) 方案的確立本儀器要求在激光二極管正常工作時(shí),能持續(xù)保持恒定的出射波長(zhǎng),而波長(zhǎng)又受到溫度的影響,因此,在激光二極管正常工作時(shí),要加在此儀器上一個(gè)恒溫控制器,實(shí)現(xiàn)激光二極管的自動(dòng)恒溫控制。本論文所設(shè)計(jì)的恒溫控制器能很好的滿(mǎn)足0.1℃的精度。現(xiàn)在有兩種實(shí)現(xiàn)方案:1. F 變換器 LM331:其功能是把熱敏電阻的電壓降變換成單片機(jī)的輸入頻率信號(hào)。在理論上,量程為 100KHZ 可以實(shí)現(xiàn)溫度的反饋?zhàn)饔?,但是由于LM331 的頻率信號(hào)受熱敏傳感器實(shí)時(shí)電阻的影響,且外接電阻、電容在工作時(shí)其值也會(huì)有響應(yīng)的變化,因此穩(wěn)定性較差,不能滿(mǎn)足 0.1℃以?xún)?nèi)的溫度穩(wěn)定性的要求,因此這種方案不可取。2. 利用 A/D 變換:其原理是把熱敏傳感器上的壓降通過(guò) A/D 轉(zhuǎn)換器轉(zhuǎn)換成相應(yīng)的數(shù)字信號(hào),由于環(huán)境溫度值的連續(xù)變化性質(zhì),使 A/D 的電壓輸入值不會(huì)有太大的跳變。所以只要 A/D 轉(zhuǎn)換器的參考電壓非常穩(wěn)定,則單6片機(jī)就能實(shí)時(shí)監(jiān)測(cè)環(huán)境的溫度。此種方案比較好。為了達(dá)到 0.1℃以?xún)?nèi)的精度我們選用串行 A/D TLC2543.本文所設(shè)計(jì)的大功率激光二極管精密恒溫制冷系統(tǒng)由溫度采集器、PC 機(jī)(內(nèi)插12 位 A/D 轉(zhuǎn)換卡)、大功率程控恒流源、半導(dǎo)體制冷器(TEC)及強(qiáng)制風(fēng)冷熱沉組成,構(gòu)成閉環(huán)控制回路??刂瞥绦虿捎米哉?PID 算法控制 TEC 的電流,從而控制TEC 的制冷量,實(shí)現(xiàn)大功率激光二極管的恒溫制冷控制。用此激光二極管作為激光晶體的泵浦源時(shí),其峰值波長(zhǎng)必須調(diào)整為 807.5nm,在額定電流工作下的最佳工作溫度為 24.6℃,由本文所設(shè)計(jì)的精密恒溫制冷系統(tǒng)進(jìn)行控制,溫控精度可達(dá)±0.1℃。系統(tǒng)框圖如圖 1.1 所示。現(xiàn)在分別介紹各部分的功能和作用:半導(dǎo)體激光器的恒溫制冷系統(tǒng)組成框圖 1.1第三節(jié) 控制算法的確定1.3.1 控制算法的選擇PID 算法的優(yōu)點(diǎn):PID 調(diào)節(jié)之所以不變,而且在數(shù)字化的計(jì)算機(jī)時(shí)代仍能得到廣泛應(yīng)用,主要有下面優(yōu)點(diǎn).? 技術(shù)成就PID 調(diào)節(jié)是連續(xù)系統(tǒng)中技術(shù)最成就,且應(yīng)用最廣泛的一種控制方法.它的結(jié)構(gòu)靈活,不單可以用常規(guī)的 PID 調(diào)節(jié),而且可以根據(jù)系統(tǒng)的要求,采用各種 PID 的變種,如PI, PD 控制,不完全微分控制 ,積分分離式 PID 控制,變速積分 PID 控制,比例 PID 控制等.在 PID 控制系統(tǒng)中,系統(tǒng)參數(shù)整定方便,而且在大多數(shù)工業(yè)生產(chǎn)過(guò)程種效果比較好.? 易被人們熟悉它,并在實(shí)踐中積累了豐富的經(jīng)驗(yàn),特別是一些工作時(shí)間比較長(zhǎng)工作技術(shù)人員更是如此.? 不需要求出數(shù)學(xué)模型.7到目前為止,仍有許多工業(yè)對(duì)象得不到或很難得到精確的數(shù)學(xué)模型,應(yīng)用直接數(shù)字控制方法比較困難,甚至根本不可能,所以必須應(yīng)用 PID 算法.? 控制效果好雖然計(jì)算機(jī)控制是離散的,但對(duì)于時(shí)間常數(shù)比較大的系統(tǒng)來(lái)說(shuō),近似于連續(xù)變化,因此,用數(shù)字 PID 完全可以替代模擬調(diào)節(jié)器.所以,數(shù)字方式模擬 PID 調(diào)節(jié)器仍為目前應(yīng)用比較廣泛的方法之一.電爐控制是一個(gè)反饋調(diào)節(jié)過(guò)程:比較實(shí)際爐溫和需要爐溫得到偏差,通過(guò)對(duì)偏差的處理得到控制信號(hào),在去調(diào)節(jié)爐子的加熱功率,從而實(shí)現(xiàn)對(duì)爐子的控制,本設(shè)計(jì)采用的是 PID 控制形式,在模擬控制系統(tǒng)中被測(cè)參數(shù)由傳感器變換成統(tǒng)一的標(biāo)準(zhǔn)信號(hào)后輸入調(diào)節(jié)器。在調(diào)節(jié)器中與給定值進(jìn)行比較,再把比較的差值給 PID 運(yùn)算后送到執(zhí)行機(jī)構(gòu),改變輸入量,以達(dá)到自動(dòng)調(diào)節(jié)的目的。在數(shù)字控制系統(tǒng)中,則是用數(shù)字調(diào)節(jié)器來(lái)代替模擬調(diào)節(jié)器。其調(diào)節(jié)過(guò)程是首先采集過(guò)程參數(shù)信號(hào),并通過(guò)模擬量輸入通道將模擬量變成數(shù)字量,這些數(shù)字量通過(guò)計(jì)算機(jī)控制算法進(jìn)行運(yùn)算處理,運(yùn)算結(jié)果經(jīng) D/A 轉(zhuǎn)換成模擬量后由輸出通道輸出,并通過(guò)執(zhí)行機(jī)構(gòu)去控制輸入量,以達(dá)到給定值。PID 調(diào)節(jié)器是按偏差的比例,積分和微分進(jìn)行控制的調(diào)節(jié)器,是連續(xù)系統(tǒng)中技術(shù)成熟應(yīng)用最為廣泛的一種調(diào)節(jié)器。它的結(jié)構(gòu)簡(jiǎn)單,參數(shù)易于調(diào)整,在長(zhǎng)期應(yīng)用中已積累了豐富的經(jīng)驗(yàn)。凡是需要考慮采用串級(jí)調(diào)節(jié)的場(chǎng)合,工藝上對(duì)調(diào)節(jié)品質(zhì)的要求總是很高,不允許被調(diào)量有殘余偏差。所以在本設(shè)計(jì)系統(tǒng)中,采用 PID 調(diào)節(jié)器。1.3.2 PID 調(diào)節(jié)的原理PID 調(diào)節(jié)器是一種線性調(diào)節(jié)器,其框圖如下圖所示。PID 控制器把設(shè)定值 W 與實(shí)際輸出值 Y 相減,得到控制偏差 e,偏差 e 經(jīng)比例調(diào)節(jié)器 P,積分調(diào)節(jié)器 I,微分調(diào)節(jié)器 D 作用后通過(guò)線性組合構(gòu)成控制 U,然后用 U 對(duì)對(duì)象進(jìn)行控制。PID 控制器1.3.3 PID 控制算法的數(shù)字實(shí)現(xiàn)采用單片機(jī)作為控制器核心的自動(dòng)控制系統(tǒng)簡(jiǎn)化框圖如圖 4-2 所示,8031 單片機(jī)系統(tǒng)通過(guò) A/D 電路檢測(cè)過(guò)程變量 Y,并計(jì)算誤差 e 和控制變量 U,通過(guò) D/A 變換8后輸出到執(zhí)行機(jī)構(gòu),使過(guò)程變量 Y 穩(wěn)定在設(shè)定的值上。計(jì)算機(jī)控制根據(jù)采樣時(shí)刻誤差值計(jì)算控制變量 U,在采樣時(shí)刻 t=i×T(T 為采樣周期,i 為正整數(shù)) ,PID 調(diào)節(jié)規(guī)律可以通過(guò)數(shù)值公式近似計(jì)算。Ui=Kp(ei+ + (ei-ei-1))+U0,式(3-1),由于 PID 計(jì)算機(jī)控制是一種Ti??ije0d采樣控制,因此模擬 PID 控制算法公式中的積分項(xiàng)和微分項(xiàng)不能直接準(zhǔn)確計(jì)算,只能用數(shù)值計(jì)算的方法逼近。如果采樣周期取得足夠小,這種逼近可相當(dāng)準(zhǔn)確,被檢過(guò)程與連續(xù)過(guò)程十分接近。上式稱(chēng)為位置式算法。當(dāng)執(zhí)行機(jī)構(gòu)需要的不是控制量的絕對(duì)數(shù)值,而是其增量(例如驅(qū)動(dòng)步進(jìn)電機(jī))時(shí),由式(3-1)可寫(xiě)出增量式 PID 算法,這時(shí)只要將式Ui=Kp(ei+ + (ei-ei-1))+U0,式(3-2),及 Ue-1=Kp[ei+ + (ei-Ti??ije0d Ti???10ijed1-ei-2)]+U0],式(3-3)相減就可以導(dǎo)出下面的公式:△Ui=Ui-Ui-1=Kp[ei-ei-1+ ei+ (ei-2ei-1+ei-2)] 式(3-4)稱(chēng)為增量式TidPID 控制算法,式(3-1)稱(chēng)為位置式算法。式(3-4)也可以進(jìn)一步寫(xiě)為:△Ui-d0ei+diei-1+d2ei-2( 式 3-5) d0=Kp(1+ + ),d1=-Kp(1+ ),d2=Kp ;iTdTd2可是增量式 PID 算法只需保持現(xiàn)時(shí)以前的三個(gè)時(shí)刻的誤差(e i,ei-1,3i-2)即可,增量式 PID 算法與位置式 PID 相比,有下列優(yōu)點(diǎn):1.位置式 PID 算法每次輸出與整個(gè)過(guò)去狀態(tài)有關(guān),計(jì)算式中要用到過(guò)去誤差的累加值∑ej 容易產(chǎn)生較大的累積計(jì)算誤差。而增量式 PID 只需計(jì)算增量,計(jì)算誤差或精度不足時(shí)對(duì)控制量的影響較小。2.控制從手動(dòng)切換到自動(dòng)時(shí),位置式 PID 算法必須首先將計(jì)算機(jī)的輸出值置為原始閥門(mén)開(kāi)度 U0,才能保證無(wú)沖擊切換,如果采用增量式算法,則由于公式中不出現(xiàn) U0 次,易于實(shí)現(xiàn)手動(dòng)到自動(dòng)的無(wú)沖擊切換。在本單片機(jī)應(yīng)用系統(tǒng)中,執(zhí)行機(jī)構(gòu)需要的是控制度量的絕對(duì)值而不是其增量,但可用增量式計(jì)算。輸出則采用位置式的輸出形式,變換式(3-4)得:Ui=Ui-1+△Ui=Ui-1+Kp[△ei+I×ei+D×△ 2ei] (3-6)把△ei=ei-ei-1,△ 2ei=△ei-△ei-1 代入上式,得:Ui=Ui-1+Kp×[(ei-ei-1)+I×ei+D(ei-2+ei-1+ei-2)]式中,ei=W-yi,W 為設(shè)定值,Yi 為第 i 次實(shí)際輸出值,Kp 為比例系數(shù),積分系9數(shù) I= ,微分系數(shù) D= ,T 為采樣周期。Tid按偏差的比例、積分和微分進(jìn)行控制的調(diào)節(jié)方法,是技術(shù)成熟應(yīng)用最為廣泛的一種調(diào)節(jié)方法。它計(jì)算簡(jiǎn)單,參數(shù)易于調(diào)整,在長(zhǎng)期的應(yīng)用中已積累了豐富的經(jīng)驗(yàn)。在工業(yè)過(guò)程中,由于控制對(duì)象的精確數(shù)學(xué)模型難以建立,系統(tǒng)的參數(shù)又經(jīng)常發(fā)生變化,往往不能得到預(yù)期的效果,所以人們常采用 PID 調(diào)節(jié)器,并根據(jù)經(jīng)驗(yàn)進(jìn)行在線整定。由于單片機(jī)軟件系統(tǒng)的靈活性,PID 算法可以得到修正而更加完善。數(shù)字 PID的基本公式:其中:T:采樣周期;K:比例系數(shù);T i:積分時(shí)間;Td微分時(shí)間;e i:i 時(shí)刻的誤差值(i=n,n-1,n-2)湊試法是通過(guò)模擬或閉環(huán)運(yùn)行觀察系統(tǒng)的相應(yīng)曲線,然后根據(jù)各調(diào)節(jié)參數(shù)對(duì)系統(tǒng)響應(yīng)的大致影響,反復(fù)湊試參數(shù),以達(dá)到滿(mǎn)意的影響,從而確定 PID 的調(diào)節(jié)參數(shù)。A. 增大比例系數(shù) K 將加快響應(yīng),有利于減小靜差,但大的比例系數(shù)會(huì)使系統(tǒng)有較大的超調(diào)并產(chǎn)生震蕩使穩(wěn)定性變壞。B. 增大積分時(shí)間 Ti有利于減小超調(diào),減小震蕩使系統(tǒng)更加穩(wěn)定。但靜差消除隨之減慢。C. 增大微分時(shí)間 Td亦有利于加快系統(tǒng)響應(yīng),減小超調(diào)量,穩(wěn)定性增加,但對(duì)擾動(dòng)有敏感響應(yīng)。在湊試時(shí)刻參考以上參數(shù)對(duì)控制過(guò)程的影響趨勢(shì)對(duì)參數(shù)實(shí)行下述先比例,后積分,再微分的整定步驟。10第二章 硬件系統(tǒng)的設(shè)計(jì)與芯片的選擇第一節(jié) 硬件系統(tǒng)的設(shè)計(jì)原則和采用方法一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包括兩部分的內(nèi)容:一是系統(tǒng)的擴(kuò)展,即單片機(jī)內(nèi)部的功能單元,如 ROM、RAM、I/O 口,定時(shí)計(jì)數(shù)器能不能滿(mǎn)足要求,不能滿(mǎn)足要求的時(shí),必須在片外擴(kuò)展。選擇 適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的電路。二是系統(tǒng)配置。即按系統(tǒng)功能要求配置外用設(shè)備,如鍵盤(pán),顯示器 D/A 轉(zhuǎn)換器等,要求設(shè)計(jì)合適的借口電路。針對(duì)本設(shè)計(jì)系統(tǒng),選用 AT89C51 單片機(jī),它有 128*8 位內(nèi)部 RAM,所以需要擴(kuò)展一 EPROM 容量 8K,即 2732 一片 8K 內(nèi)存的 RAM,和低八位地址鎖存器,外用設(shè)備根據(jù)控制需要配置了顯示器,A/D 轉(zhuǎn)換器 TLC2543 和 D/A 轉(zhuǎn)換器 AD7521。在單片機(jī)內(nèi)部雖然設(shè)置了一定容量的存儲(chǔ)器,但這種存儲(chǔ)器一般容量較小,遠(yuǎn)遠(yuǎn)滿(mǎn)足不了實(shí)際的需要,因此需要從外部進(jìn)行擴(kuò)展,配置外部存儲(chǔ)器,包括程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。系統(tǒng)擴(kuò)展應(yīng)遵循以下原則:? 盡可能選擇典型電路,并符合單片機(jī)的常規(guī)方法,為硬件系統(tǒng)的標(biāo)準(zhǔn)化,模塊化打下基礎(chǔ)。? 系統(tǒng)擴(kuò)展與外圍設(shè)備水平應(yīng)當(dāng) 入侵滿(mǎn)足應(yīng)用系統(tǒng) 的功能要求,并留有適量余地,以便進(jìn)行再次開(kāi)發(fā).? 硬件結(jié)構(gòu)應(yīng)結(jié)合應(yīng)用軟件方案一并考慮,硬件結(jié)構(gòu)與軟件方案會(huì)相互影響.考慮的原則是:軟件能實(shí)現(xiàn)的功能盡可能采用軟件來(lái)執(zhí)行,以簡(jiǎn)化硬件結(jié)構(gòu),但必須注意,由軟件實(shí)現(xiàn)的硬件功能,其響應(yīng)時(shí)間比直接用硬件實(shí)現(xiàn)來(lái)的長(zhǎng),而且占 CPU 時(shí)間,因此選擇方案要考慮這些因素.? 整個(gè)系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配.例如:選用晶振頻率較高時(shí),存儲(chǔ)器的存儲(chǔ)時(shí)間有限,應(yīng)該選用允許存取速度高的芯片,選擇 CPU 芯片單片機(jī)構(gòu)成低功耗系統(tǒng)時(shí),系統(tǒng)中的所有芯片都應(yīng)該選用低功耗的產(chǎn)品.? 可靠性及干擾設(shè)計(jì)是硬件系統(tǒng)設(shè)計(jì)不可缺少的一部分,它包括芯片,器件選擇光偶濾波,印刷電路板布線,通道隔離等.? 單片機(jī)外接電路較多時(shí),必須考慮其驅(qū)動(dòng)能力,驅(qū)動(dòng)能力不足時(shí),必須考慮系統(tǒng)的工件不可靠,解決的方法是增加驅(qū)動(dòng)能力,增加驅(qū)動(dòng)器或減少芯片功耗,11降低總線負(fù)載.硬件設(shè)計(jì)就是根據(jù)總體的系統(tǒng)結(jié)構(gòu)框圖,設(shè)計(jì)每一個(gè)功能模塊。在本設(shè)計(jì)中,我們把硬件電路分成若干功能模塊,先設(shè)計(jì)單元電路,最后將進(jìn)行系統(tǒng)合成,把各單元電路組合起來(lái),構(gòu)成完整的硬件系統(tǒng)。第二節(jié) 微處理器的選擇2.2.1.單片機(jī)簡(jiǎn)介單片機(jī)是一種集成電路芯片,采用超大規(guī)模技術(shù)把具有數(shù)據(jù)處理能力(如算術(shù)運(yùn)算,邏輯運(yùn)算、數(shù)據(jù)傳送、中斷處理)的微處理器(CPU),隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),只讀程序存儲(chǔ)器(ROM),輸入輸出電路 (I/O 口),可能還包括定時(shí)計(jì)數(shù)器,串行通信口(SCI),顯示驅(qū)動(dòng)電路(LCD 或 LED 驅(qū)動(dòng)電路),脈寬調(diào)制電路(PWM),模擬多路轉(zhuǎn)換器及 A/D 轉(zhuǎn)換器等電路集成到一塊單塊芯片上,構(gòu)成一個(gè)最小但很完善的計(jì)算機(jī)系統(tǒng)。這些電路能在軟件的控制下準(zhǔn)確、迅速、高效地完成程序設(shè)計(jì)者事先規(guī)定的任務(wù)。由此來(lái)看,單片機(jī)有著微處理器所不具備的功能,它可單獨(dú)地完成現(xiàn)代工業(yè)控制所要求的智能化控制功能,這是單片機(jī)最大的特征。然而單片機(jī)又不同于單板機(jī),芯片在沒(méi)有開(kāi)發(fā)前,它只是具備功能極強(qiáng)的超大規(guī)模集成電路,如果賦予它特定的程序,它便是一個(gè)最小的、完整的微型計(jì)算機(jī)控制系統(tǒng),它與單板機(jī)或個(gè)人電腦(PC 機(jī))有著本質(zhì)的區(qū)別,單片機(jī)的應(yīng)用屬于芯片級(jí)應(yīng)用,需要用戶(hù)了解單片機(jī)芯片的結(jié)構(gòu)和指令系統(tǒng)以及其它集成電路應(yīng)用技術(shù)和系統(tǒng)設(shè)計(jì)所需要的理論和技術(shù),用這樣特定的芯片設(shè)計(jì)應(yīng)用程序,從而使該芯片具備特定的功能。不同的單片機(jī)有著不同的硬件特征和軟件特征,即它們的技術(shù)特征均不盡相同,硬件特征取決于單片機(jī)芯片的內(nèi)部結(jié)構(gòu),用戶(hù)要使用某種單片機(jī),必須了解該型產(chǎn)品是否滿(mǎn)足需要的功能和應(yīng)用系統(tǒng)所要求的特性指標(biāo)。這里的技術(shù)特征包括功能特性、控制特性和電氣特性等等,這些信息需要從生產(chǎn)廠商的技術(shù)手冊(cè)中得到。軟件特征是指指令系統(tǒng)特性和開(kāi)發(fā)支持環(huán)境,指令特性即我們熟悉的單片機(jī)的尋址方式,數(shù)據(jù)處理和邏輯處理方式,輸入輸出特性及對(duì)電源的要求等等。開(kāi)發(fā)支持的環(huán)境包括指令的兼容及可移植性,支持軟件(包含可支持開(kāi)發(fā)應(yīng)用程序的軟件資源)及硬件資源。要利用某型號(hào)單片機(jī)開(kāi)發(fā)自己的應(yīng)用系統(tǒng),掌握其結(jié)構(gòu)特征和技術(shù)特征是必須的。單片機(jī)控制系統(tǒng)能夠取代以前利用復(fù)雜電子線路或數(shù)字電路構(gòu)成的控制系統(tǒng),可以軟件控制來(lái)實(shí)現(xiàn),并能夠?qū)崿F(xiàn)智能化,現(xiàn)在單片機(jī)控制范疇無(wú)所不在,例如通信產(chǎn)品、家用電器、智能儀器儀表、過(guò)程控制和專(zhuān)用控制裝置等等,單片機(jī)的應(yīng)用領(lǐng)域越來(lái)越廣泛。12誠(chéng)然,單片機(jī)的應(yīng)用意義遠(yuǎn)不限于它的應(yīng)用范疇或由此帶來(lái)的經(jīng)濟(jì)效益,更重要的是它已從根本上改變了傳統(tǒng)的控制方法和設(shè)計(jì)思想。是控制技術(shù)的一次革命,是一座重要的里程碑。2.2.2.如何選擇單片機(jī)由于單片機(jī)需要控制編碼輸入,顯示電路,串行 A/D,并行 D/A 和外界存儲(chǔ)器的輸入輸出,需要的引線較多,而且,程序較大,因此考慮選用 ATMEL 公司生產(chǎn)的89C51 單片機(jī)(該機(jī)的詳細(xì)資料見(jiàn)軟件部分 )。AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能 CMOS8 位微處理器。該器件采用 ATMEL 高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 MCS-51 指令集和輸出管腳相兼容。它有128*8 位內(nèi)部 RAM,32 根可編程 I/O 引線,兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器,5 個(gè)中斷源,而且是 40 管腳塑料雙列直插 DIP 封裝。總之,AT89C51 的選用不僅減少成本,而且還減少所占的體積便于儀器的小型化,更重要的是它的低功耗,這對(duì)于溫控器是非常重要的。2.2.3.AT89C51 簡(jiǎn)介At89c51 是美國(guó) ATMEL 公司生產(chǎn)的低電壓,高性能 CMOS 8 位單片機(jī),片內(nèi)含 4k bytes 的反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(PEROM)和 128 bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM) ,器件采用 ATMEL 公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn) MCS-51 指令系統(tǒng),片內(nèi)置通用 8 位中央處理器(CPU)和 Flash 存儲(chǔ)單元,功能強(qiáng)大 AT89C51 單片機(jī)可為您提供許多高性?xún)r(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域?!ぶ饕阅軈?shù):·與 MCS-51 產(chǎn)品指令系統(tǒng)完全兼容·4k 字節(jié)可重擦寫(xiě) Flash 閃速存儲(chǔ)器·1000 次擦寫(xiě)周期·全靜態(tài)操作:0Hz-24MHz·三級(jí)加密程序儲(chǔ)存器·128*8 字節(jié)內(nèi)部 RAM·32 個(gè)可編程 I/O 口線·2 個(gè) 16 位定時(shí)/計(jì)數(shù)器·6 個(gè)中斷源·可編程串行 UART 通道·低功耗空閑和掉電模式·片內(nèi)震蕩器和時(shí)鐘電路·引腳功能說(shuō)明:13Vcc:電源電壓。GND:接地。P0 口:P0 口是一組 8 位漏極開(kāi)路型雙向 I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng) 8 個(gè) TTL 邏輯門(mén)電路,對(duì)端口寫(xiě)“1”可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低 8 位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。P1 口:P1 是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 口,P1 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯沒(méi)電路。對(duì)端口寫(xiě)“1” ,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(I) 。P2 口:P2 是一個(gè)帶有內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯門(mén)電路。對(duì)端口寫(xiě)“1” ,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(I) 。在訪問(wèn)外部程序存儲(chǔ)器或 16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX@DPTR 指令)時(shí),P2 口送出高 8 位地址數(shù)據(jù)。在訪問(wèn) 8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行 MOVX@RI 指令)時(shí),P2 口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中 R2 寄存器的內(nèi)容) ,在整個(gè)訪問(wèn)期間不改變。Flash 變成或校驗(yàn)時(shí),P2 亦接受高位地址和其它控制信號(hào)。P3 口:P3 口是一組帶有內(nèi)部上拉電阻的 8 位雙向 I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯門(mén)電路。對(duì) P3 口寫(xiě)入“1”時(shí),14它們被內(nèi)部上拉電阻拉高并可作為輸入端口。做輸入端時(shí),被外部拉低的 P3 口將用上拉電阻輸出電流(I) 。 P3 口除了作為一般的 I/O 口線外,更重要的用途是它的第二個(gè)功能,如下表所示:P3 口還接收一些用于 Flash 閃速存儲(chǔ)器變成和程序校驗(yàn)的控制信號(hào)。RST:復(fù)位輸入。當(dāng)震蕩器工作時(shí),RST 引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。ALE/PROG:當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE 仍以時(shí)鐘震蕩頻率的 1/6 輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè) ALE 脈沖。對(duì) Flash 存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG) 。如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR) 區(qū)中的 8EH 單元的 D0 位置位,可禁止 ALE 操作。該位置位后,只有一條 MOVX 和 MOVC 指令 ALE 才會(huì)被激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置 ALE 無(wú)效。PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng) AT89C51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次 PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,這兩次有效的 PSEN信號(hào)不出現(xiàn)。EA/VPP:外部訪問(wèn)允許。欲使 CPU 僅訪問(wèn)外部程序存儲(chǔ)器(地址為 0000H--FFFFH) ,EA 端必須保持低電平(接地) 。需注意的是:如果加密位 LB1 被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存 EA 端狀態(tài)。如 EA 端為高電平(接 Vcc 端) ,CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash 存儲(chǔ)器編程時(shí),該引腳加上+12V 的編程允許電源 Vpp,當(dāng)然這必須是該器件是使用 12V 編程電壓 Vpp。15XTAL1:遮擋器反向放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。XTAL2:震蕩器反向放大器的輸出端?!r(shí)鐘震蕩器:AT89C51 中有一個(gè)用于構(gòu)成內(nèi)部震蕩器的高增益反向放大器,引腳 XTAL1 和XTAL2 分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧震蕩器一起構(gòu)成自激震蕩器,震蕩電路參見(jiàn)下圖。外接石英晶體(或陶瓷諧振器)及電容 C1、C2 接在放大器的反饋回路中構(gòu)成并聯(lián)震蕩電路。對(duì)外接電容 C1、C2 雖然有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響震蕩頻率的高低、震蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用 30Pf±10pF,而如使用陶瓷諧振器建議選擇40pF±10。用戶(hù)也可以采用外部時(shí)鐘。采用外部時(shí)鐘的電路如圖 5 右圖所示。這種情況下,外部時(shí)鐘脈沖接到 XTAL1 端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2 則懸空。由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè) 2 分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以對(duì)外部時(shí)鐘信號(hào)的占空比沒(méi)有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求?!た臻e節(jié)電模式:AT89C51 有良種可用軟件變成的省電模式,它們是空閑模式和掉電工作模式。這兩種方式是控制專(zhuān)用寄存器 PCON(即電源控制寄存器)中的 PD(PCON.1 )和IDL(PCON.0)位來(lái)實(shí)現(xiàn)的。PD 是掉電模式,當(dāng) PD=1 時(shí),激活掉電工作模式,單片機(jī)進(jìn)入掉電工作狀態(tài)。IDL 是空閑等待方式,當(dāng) IDL=1,激活空閑工作模式,單片機(jī)進(jìn)入睡眠狀態(tài)。如需同時(shí)進(jìn)入兩種工作模式,即 PD 和 IDL 同時(shí)為 1,則先激活掉電模式。在空閑工作模式狀態(tài),CPU 保持睡眠狀態(tài)而所有片內(nèi)的外設(shè)仍保持激活狀態(tài),16這種方式由軟件產(chǎn)生。此時(shí),片內(nèi) RAM 和所有特殊功能寄存器的內(nèi)容保持不變。空閑模式可由任何允許的中斷請(qǐng)求或硬件復(fù)位終止。終止空閑工作模式的方法有兩種,其一是任何一條被允許中斷的事件被激活,IDL(PCON.0)被硬件清除,即刻終止空閑工作模式。程序會(huì)首先響應(yīng)中斷,進(jìn)入中斷服務(wù)程序,執(zhí)行完中斷服務(wù)程序并緊隨 RETI(中斷返回)指令后,下一條要執(zhí)行的指令就是使單片機(jī)進(jìn)入空閑模式那條指令后面的一條指令。其二是通過(guò)硬件復(fù)位也可將空閑工作模式終止。需要注意的是,當(dāng)由硬件復(fù)位來(lái)終止空閑工作模式時(shí),CPU 通常是從激活空閑模式那條指令的下一條指令開(kāi)始繼續(xù)執(zhí)行程序的,要完成內(nèi)部復(fù)位操作,硬件復(fù)位脈沖要保持兩個(gè)機(jī)器周期(24 個(gè)始終周期)有效,在這種情況下,內(nèi)部禁止 CPU 訪問(wèn)片內(nèi) RAM,而允許訪問(wèn)其他端口。為了避免可能對(duì)端口產(chǎn)生以外寫(xiě)入,激活空閑模式的那條指令后一條指令不應(yīng)是一條對(duì)端口或外部存儲(chǔ)器的寫(xiě)入指令。·掉電模式:在掉電模式下,震蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi) RAM 和特殊功能積存器的內(nèi)容在終止掉電模式前被凍結(jié)。退出掉電模式的唯一方法是硬件復(fù)位,復(fù)位后將重新定義全部特殊功能積存器但不改變 RAM 中的內(nèi)容,在 Vcc 恢復(fù)到正常工作電平前。撫慰應(yīng)無(wú)效,且必須保持一定時(shí)間以使震蕩器重啟動(dòng)并穩(wěn)定工作?!こ绦虼鎯?chǔ)器的加密:AT89C51 可使用對(duì)芯片上的 3 個(gè)加密位 LB1、LB2、LB3 進(jìn)行編程(P )或不編程(U)來(lái)得到如下表所示的功能:17當(dāng)加密位 LB1 被編程時(shí),在復(fù)位期間,EA 端的邏輯電平被采樣并鎖存,如果單片機(jī)上電后一直沒(méi)有復(fù)位,則鎖存起的初始值是一個(gè)隨即數(shù),且這個(gè)隨即數(shù)會(huì)一直保存到真正復(fù)位為止。為使單片機(jī)能正常工作,被鎖存的 EA 電平值必須與該引腳當(dāng)前的邏輯電平一致。此外,加密位只能通過(guò)整片擦除的方法清除?!lash 閃速存儲(chǔ)器的編程:AT89C51 單片機(jī)內(nèi)部有 4k 字節(jié)的 Flash PEROM,這個(gè) Flash 存儲(chǔ)陣列出廠時(shí)已處于擦除狀態(tài)(即所有存儲(chǔ)單元的內(nèi)容均為 FFH) ,用戶(hù)隨時(shí)可對(duì)其進(jìn)行編程。編程接口可接收高電壓(+12V )或低電壓(Vcc)的允許編程信號(hào)。低電壓編程模式適合于用戶(hù)在線編程系統(tǒng),而高電壓編程模式可與通用 EPROM 編程器兼容。AT89C51 單片機(jī)中,有些屬于低電壓編程方式,而有些則是高電壓變成方式,用戶(hù)可從芯片上的型號(hào)和讀取芯片內(nèi)的簽名字節(jié)獲得該信息,見(jiàn)下表。AT89C51 的程序存儲(chǔ)器陣列是采用字節(jié)寫(xiě)入方式編程的,每次寫(xiě)入一個(gè)字節(jié),要對(duì)整個(gè)芯片內(nèi)的 PEROM 程序存儲(chǔ)器寫(xiě)入一個(gè)非空字節(jié),必須使用片擦除的方式將整個(gè)存儲(chǔ)器的內(nèi)容清除?!ぞ幊谭椒ǎ壕幊糖?,須按表 6 和圖 6 所示設(shè)置好地址、數(shù)據(jù)及控制信號(hào),編程單元的地址加在 P1 口和 P2 口的 P2.0—P2.3(11 位地址范圍為 0000H—0FFFH) ,數(shù)據(jù)從 P0 口輸入,引腳 P2.6、P2.7 和 P3.6、P3.7 的電平設(shè)置見(jiàn)秒 6,PSEN 為低電平,RET 保持高電平,EA/Vpp 引腳是編程電源的輸入端,按要求加上編程電壓, ALE/PROG引腳輸入編程脈沖(負(fù)脈沖) 。編程時(shí),可采用 4—20MHz 的時(shí)鐘震蕩器,AT89C51編程方法如下:1. 在地址線上加上要編程單元的地址信號(hào)。2. 在數(shù)據(jù)線上加上要寫(xiě)入的數(shù)據(jù)字節(jié)。3. 激活相應(yīng)的控制信號(hào)。4. 在高電壓編程方式時(shí),將 EA/Vpp 端加上+12V 編程電壓。5. 每對(duì) Flash 存儲(chǔ)陣列寫(xiě)入一個(gè)字節(jié)或每寫(xiě)入一個(gè)程序加密位,加上一個(gè)18ALE/PROG 編程脈沖。改變編程單元的地址和寫(xiě)入的數(shù)據(jù),重復(fù) 1-5 步驟,知道全部文件變成結(jié)束。每個(gè)字節(jié)寫(xiě)入周期是自身定時(shí)的,通常約為 1.5ms?!?shù)據(jù)查詢(xún):AT89C51 單片機(jī)用數(shù)據(jù)查詢(xún)方式來(lái)檢測(cè)一個(gè)寫(xiě)周期是否結(jié)束,在一個(gè)寫(xiě)周期中,如需讀取最后寫(xiě)入的那個(gè)字節(jié),則讀出的數(shù)據(jù)的最高位(P0.7)是原來(lái)寫(xiě)入字節(jié)最高位的反碼。寫(xiě)周期完成后,有效的數(shù)據(jù)就會(huì)出現(xiàn)在所有輸出端上,此時(shí),可進(jìn)入下一個(gè)字節(jié)的寫(xiě)周期,寫(xiě)周期開(kāi)始后,可在任意時(shí)刻進(jìn)行數(shù)據(jù)查詢(xún)。19第三節(jié) 存儲(chǔ)器的選擇為了反映實(shí)際溫度,根據(jù)熱敏電阻傳感器的 R-T 曲線可以求出環(huán)境的實(shí)際溫度。有兩種實(shí)現(xiàn)的方法:公式法和查表法。由于 T-R 曲線不是一個(gè)正規(guī)的函數(shù)曲線,即我們不能給出準(zhǔn)確的計(jì)算公式,因此公式法不可取。廠家給我們提供了 R-T 的一組對(duì)應(yīng)數(shù)據(jù),為我們應(yīng)用查表法提供了方便,對(duì)于兩給定點(diǎn)之間的數(shù)據(jù)可以近似用線性差值的方法求出。鑒于本實(shí)驗(yàn)數(shù)據(jù)太多可以連接一個(gè)外部存儲(chǔ)器 24C02。這樣既節(jié)省了內(nèi)部空間又可以方便數(shù)據(jù)的修正。24C02 是可擦除可存儲(chǔ) 256 字節(jié)數(shù)據(jù)的 EEPROM 外部存儲(chǔ)器。利用 I2C 總線的虛擬技術(shù)可以實(shí)現(xiàn) EEPROM 與單片機(jī)的串行數(shù)據(jù)傳送。對(duì)于本實(shí)驗(yàn) I2C 總線系統(tǒng)工作在單主方式下,單片機(jī)為主節(jié)點(diǎn),24C02 為從節(jié)點(diǎn)。不存在總線競(jìng)爭(zhēng)。24C02 可以解決單片機(jī)片內(nèi) EEPROM 不足的問(wèn)題,用以保存諸如用戶(hù)設(shè)置參數(shù)、采集到的數(shù)據(jù)等。由于部分單片機(jī)不具備 I2C 總線接口,在應(yīng)用時(shí)必須用軟件法加以解決。在軟件編制時(shí)應(yīng)當(dāng)嚴(yán)格遵循 I2C 總線規(guī)則,并注意 24C02 的片內(nèi)讀寫(xiě)周期時(shí)間,調(diào)整好程序流程,以避免寫(xiě)不進(jìn)、讀不出的問(wèn)題2.3.1 硬件電路(如下圖所示) 。使用微處理的任意兩個(gè)通用 I/O 端口(圖中用 CE0、CE1、CE2)作為與 24C02的連接,其中一個(gè)作為時(shí)鐘 SCL 線,另外一個(gè)作為數(shù)據(jù) SAD 線。2.3.2 軟件設(shè)計(jì)20首先簡(jiǎn)要介紹一下用 EEPROM 的 I2C 總線的規(guī)則。初始狀態(tài)時(shí),SCL、SDA 兩線都為高。當(dāng) SCL 為高電平時(shí),如果 SDA 線跌落,認(rèn)為是“起始位” 。當(dāng) SCL 為高電平時(shí),如果 SDA 線上升,認(rèn)為是“停止位” 。除此之外,在發(fā)送數(shù)據(jù)的過(guò)程中當(dāng) SCL 為高電平時(shí),SDA 應(yīng)保持穩(wěn)定。ACK 應(yīng)答位指在此時(shí)鐘周期內(nèi)由從器件(EEPROM)把 SDA 拉低,表示回應(yīng)。這時(shí)主器件(PLC16 微處理器)的 SDA 口的屬性應(yīng)該變?yōu)檩斎胍员銠z測(cè)。1.在寫(xiě)數(shù)據(jù)周期應(yīng)該依次執(zhí)行以下過(guò)程:1/發(fā)“起始位” 。2/發(fā)“寫(xiě)入代碼” (8bit) ,1010(A1A2A3)0,其中的A1、A2、A3 三位是片地址,由 24C02 的硬件決定,文中采用 000。3/收“ACK”應(yīng)答(1bit) 。4/發(fā) EEPROM 片內(nèi)地址(即要寫(xiě)入 EEPROM 的什么位置) (8bit) 。從 00 到FF 中的任意一個(gè),對(duì)應(yīng) EEPROM 中的相應(yīng)位。5/收“ACK” 應(yīng)答(1bit) 。6/發(fā)要發(fā)送的數(shù)據(jù)(8bit) ,即要存儲(chǔ)到 EEPROM 中的數(shù)據(jù)。7/發(fā) “停止位” 。接下來(lái),如圖2所示,進(jìn)入輪詢(xún)程序以便檢驗(yàn) 24C02 片內(nèi)寫(xiě)周期是否完成。如果已經(jīng)完成則進(jìn)入下一個(gè)字節(jié)的寫(xiě)操作過(guò)程。如果沒(méi)有完成則繼續(xù)等待,直到完成。2.在讀數(shù)據(jù)周期,依次執(zhí)行以下過(guò)程:1/發(fā)“起始位” 。2/發(fā)“寫(xiě)入代碼” (8bit) ,1010(A1A2A3)0,其中A1、A2、A3 三位是片地址,由 24C02 的硬件決定,文中采用 000。3/收“ACK”應(yīng)答(1bit) 。4/發(fā) EEPROM 片內(nèi)地址(即要讀出 EEPROM 的位置) (8bit) 。從 00 到 FF 中的任意一個(gè),對(duì)應(yīng) EEPROM 中的相應(yīng)位。5/收“ACK”應(yīng)答( 1bit) 。6/發(fā)“起始位”(81bit) 。7/發(fā)“讀出代碼” (8bit) ,1010(A1A2A3) 1,其中 A1、A2、A3 三位是片地址,由 24C02 的硬件接線決定,文中采用 000。8/ 接收。9/發(fā) ACK 應(yīng)答。10/發(fā)“停止位” 。要特別注意的兩個(gè)問(wèn)題是:1/24C02 有一個(gè)約 10ms的片內(nèi)寫(xiě)周期。在這個(gè)周期內(nèi),24C02 是不對(duì)外界的操作作出反應(yīng)的。2/在發(fā)送數(shù)據(jù)的過(guò)程中,要確保當(dāng) SCL為高電平時(shí),SDA 保持穩(wěn)定。解決第一個(gè)問(wèn)題的常見(jiàn)方法有兩個(gè),其一為采用延時(shí)等待,確保在寫(xiě)過(guò)程中,在一個(gè)字節(jié)完成發(fā)送了停止位之后,微處理器等待足夠的時(shí)間,通常應(yīng)該超過(guò)10ms,再送下一個(gè)字節(jié),這段時(shí)間用來(lái)等待 EEPROM 完成片內(nèi)寫(xiě)周期。另一個(gè)是采用輪詢(xún)的方式,判斷 EEPROM 是否完成了片內(nèi)寫(xiě)周期。這種方式的主導(dǎo)思想是,當(dāng)向EEPROM 發(fā)送寫(xiě)標(biāo)志后,正常情況下,EEPROM 應(yīng)該有 ACK 應(yīng)答。但是當(dāng) EEPROM 在進(jìn)行片內(nèi)寫(xiě)周期的時(shí)候,則不會(huì)產(chǎn)生這樣的應(yīng)答。程序據(jù)此判斷,EEPROM 是否完成了片內(nèi)的寫(xiě)周期程序。如果完成,則可以繼續(xù)寫(xiě)入下一個(gè)要寫(xiě)的內(nèi)容,否則繼續(xù)等待。21第一種方法編程較為簡(jiǎn)單,但是會(huì)浪費(fèi)大量的機(jī)器時(shí)間,并且程序的延時(shí)時(shí)間不好確定。第二種方法的優(yōu)點(diǎn)在于,雖然編程較為復(fù)雜,但是較為快速,對(duì)其余的程序模塊影響較少,便于完成程序的模塊化設(shè)計(jì)。對(duì)于在發(fā)送數(shù)據(jù)的過(guò)程中,要確保當(dāng) SCK 為高電平時(shí),SDA 必須保持穩(wěn)定,應(yīng)該在程序中利用軟件給予保證。如果可以很好的解決以上兩個(gè)問(wèn)題,數(shù)據(jù)的寫(xiě)入和讀出是方便快捷和可靠的。主方式下的 I2C 總線虛擬,應(yīng)按照 I2C 總線數(shù)據(jù)傳送時(shí)序,主方式下的操作格式設(shè)計(jì)出主方式下的時(shí)序模擬子程序,主發(fā)送/主接收子程序,并將這些子程序歸納成虛擬 I2C 總線的軟件包。在軟件包的基礎(chǔ)上給出歸一化的 I2C 總線操作命令。只需將軟件包裝入程序存儲(chǔ)器中,利用歸一化操作指令即可實(shí)現(xiàn)相應(yīng)的 I2C 總線應(yīng)用程序。其 N 字節(jié)的數(shù)據(jù)操作格式如下:(1) 寫(xiě) N 個(gè)字節(jié)的操作格式:(2) 讀 N 個(gè)字節(jié)的操作格式:其中: 主節(jié)點(diǎn)發(fā)送,從節(jié)點(diǎn)接收。主節(jié)點(diǎn)發(fā)送,從節(jié)點(diǎn)發(fā)送。SLAW 尋址字節(jié)(寫(xiě))DATA1-DATAn 讀/寫(xiě)的 n 個(gè)字節(jié)數(shù)據(jù)SLAR 尋址字節(jié)(讀)A 應(yīng)答信號(hào) 非應(yīng)答信號(hào)22第四節(jié) 熱敏電阻的介紹熱敏電阻可分為負(fù)溫度系數(shù)(NTC)與正溫度系數(shù)(PTC)熱敏電阻。熱敏電阻其阻值隨溫度變化而變化,該特性使得熱敏電阻在電流和溫度相關(guān)的運(yùn)用場(chǎng)合非常理想。由于正溫度系數(shù)的熱敏電阻單調(diào)特性范圍比較窄,工作穩(wěn)定性較差;而負(fù)溫度系數(shù)熱敏電阻的單調(diào)范圍比較寬,工作穩(wěn)定性較好,所以一般我們選用負(fù)溫度系數(shù)的熱敏電阻。現(xiàn)只對(duì)此種熱敏傳感器作一下介紹。NTC 元件的電阻值隨溫度的升高而降低。對(duì)應(yīng)用于某些物體表面的溫度檢測(cè)或某些環(huán)境溫度的檢測(cè)時(shí)為了適應(yīng)檢測(cè)環(huán)境和便于安裝,通常將熱敏電阻元件根據(jù)具體場(chǎng)合做成各種各樣的封裝形式,這時(shí)通常稱(chēng)它們?yōu)闊崦魝鞲衅?。使用熱敏元件的原因首先關(guān)心的就是熱敏元件的三性,即:一致性,可靠性,重復(fù)性。熱敏元件的溫度檢測(cè)范圍和檢測(cè)精度也是被關(guān)心的主要特征。事實(shí)上,精度越高的熱敏元件制造成本相對(duì)也高,所以根據(jù)實(shí)際使用的場(chǎng)合選用恰當(dāng)?shù)臋z測(cè)精度的熱敏元件具有現(xiàn)實(shí)的經(jīng)濟(jì)意義。熱敏電阻主要用于航天機(jī)械,軍用坦克,空調(diào),熱水器,電暖氣,糧倉(cāng)測(cè)溫,工業(yè)儀表,醫(yī)療儀器,火災(zāi)報(bào)警,汽車(chē)水箱等方面。NTC 熱敏電阻的物理特性用下列參數(shù)表示:電阻值 B 值,熱時(shí)間常數(shù),電阻溫度系數(shù)。電阻值:R[Ω]電阻值的近似值表示為:其中:R1:絕對(duì)溫度為 T1[K]時(shí)的電阻[Ω]R2:絕對(duì)溫度為 T2[K]時(shí)的電阻[Ω]熱時(shí)間常數(shù):τ[sec.]熱敏電阻在零能量條件下,由于步階效應(yīng)使熱敏電阻本身的溫度發(fā)生改變,當(dāng)溫度在初始值和最終值之間發(fā)生改變 63.2%所需的時(shí)間就是熱時(shí)間系數(shù) τ。電阻溫度系數(shù):α[%/℃]23a 是表示熱敏電阻器溫度每變化 1℃,其電阻值變化程度的系數(shù){即變化率},用表示。本實(shí)驗(yàn)選擇常州精達(dá)公司生產(chǎn)的 3978NTC 熱敏電阻,其 R-T 曲線如下圖所示:NTC 熱敏電阻 R-T 特性曲線由 R-T 曲線可以看出此款負(fù)溫度系數(shù)熱敏電阻的變化范圍是-20℃-100℃,足以滿(mǎn)足本實(shí)驗(yàn)的要求。24第五節(jié) A/D 及 D/A 轉(zhuǎn)換器的選用與設(shè)計(jì)2.5.1 A/D 的選用模數(shù)轉(zhuǎn)換器是連接模擬和數(shù)字世界的一個(gè)重要接口。A/D 轉(zhuǎn)換器將現(xiàn)實(shí)世界的模擬信號(hào)變換成數(shù)字位流以進(jìn)行處理、傳輸及其他操作。A/D 轉(zhuǎn)換器的選擇是至關(guān)重要的。所選擇的 A/D 轉(zhuǎn)換器應(yīng)能確保模擬信號(hào)在數(shù)字位流中被準(zhǔn)確地表示,并提供一個(gè)具有任何必需的數(shù)字信號(hào)處理功能的平滑接口,這一點(diǎn)很重要。目前的高速 A/D 轉(zhuǎn)換器已被應(yīng)用于各種儀表、成像以及通信領(lǐng)域中。對(duì)用戶(hù)而言,所有這些應(yīng)用都有著相似的要求,即以較低的價(jià)格實(shí)現(xiàn)更高的性能。在選擇高速 A/D 轉(zhuǎn)換器時(shí),必須考慮下面幾個(gè)因素:● 終端系統(tǒng)的要求● 成本● 分辨率或精度● 速度 ● 性能對(duì)終端系統(tǒng)要求的清晰了解將簡(jiǎn)化 A/D 轉(zhuǎn)換器的選擇過(guò)程。在某些場(chǎng)合,它可以把所需考慮的選擇參數(shù)限制為屈指可數(shù)的幾個(gè)。例如,很多超聲波應(yīng)用采用的是每個(gè)通道需要一個(gè) A/D 的數(shù)字光束成形系統(tǒng)。對(duì)于一個(gè)具有多達(dá) 256 個(gè)通道的系統(tǒng)而言,具有多通道和低功耗的 A/D 轉(zhuǎn)換器是一個(gè)合適的選擇。對(duì)于 8 進(jìn)制 A/D 轉(zhuǎn)換器來(lái)說(shuō),超聲波應(yīng)用是主要的終端應(yīng)用。位于 A/D 之后的DSP 或 ASIC 所使用的電源電壓也是必需加以考慮的。越來(lái)越多的高速 A/D 將采用3V、2.5V 和 1.8V 的工作電源。價(jià)格是始終需要考慮的因素。如今的轉(zhuǎn)換器設(shè)計(jì)師正在制作性?xún)r(jià)比更為優(yōu)越的 A/D。TLC2543 是 TI 公司的 12 位串行模數(shù)轉(zhuǎn)換器,使用開(kāi)關(guān)電容逐次逼近技術(shù)完成A/D 轉(zhuǎn)換過(guò)程。由于是串行輸入結(jié)構(gòu),能夠節(jié)省 51 系列單片機(jī) I/O 資源;且價(jià)格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應(yīng)用。下圖是 TLC2543 的接口電路。TLC2543 的 CLOCK,DATA OUT, DATAINPUT 和/CS 分別與 AT89C51 的 P3.0,P3.1,和 P3.3 連接。其接口軟25件由主程序和兩個(gè)子程序組成,主程序主要是對(duì) AT89C51 的初始化,子程序是對(duì)89C51 和 TLC2543 的具體操作。(1)外部引腳TLC2543 有三個(gè)控制輸入端:片選(/CS),輸入/輸出時(shí)鐘(I/O CLOCK)以及地址輸入端(DATA INPUT)。它還可以通過(guò)一個(gè)串行的 3 態(tài)輸出端(DATA OUT)與主處理器或其外圍的串行口通訊,輸出轉(zhuǎn)換結(jié)果。本器件可以從主機(jī)高速傳輸數(shù)據(jù)。除了高速的轉(zhuǎn)換器和通用的控制能力外,本器件有一個(gè)片內(nèi)的 14 通道多路器可以在 11 個(gè)輸入通道或 3 個(gè)內(nèi)部自測(cè)試 (self-test)電壓中任意選擇一個(gè)。采樣-保持是自動(dòng)的。在轉(zhuǎn)換結(jié)束時(shí),轉(zhuǎn)換結(jié)束輸出端(/EOC)變高以指示轉(zhuǎn)換的完成。本器件中的轉(zhuǎn)換器結(jié)合外部輸入的差分高阻抗的基準(zhǔn)電壓,具有簡(jiǎn)化比率轉(zhuǎn)換刻度以及模擬電路與邏輯電路和電源噪聲隔離的特點(diǎn)。開(kāi)關(guān)電容的設(shè)計(jì)可以是在整個(gè)溫度范圍內(nèi)有較小的轉(zhuǎn)換誤差。TLC2543 的工作溫度范圍內(nèi) 10μs 轉(zhuǎn)換時(shí)間;11 個(gè)模擬輸入通道;固有的采樣與保持;線性誤差±1LSB(mas);有轉(zhuǎn)換結(jié)束(/EOC)輸出;具有單、雙極性輸出;可編程的 MSB 或 LSB 向?qū)?;可編程的輸出?shù)據(jù)長(zhǎng)度。(2)工作說(shuō)明一開(kāi)始片選/CS 為高,I/O CLOCK 和 DATA INPUT 被禁止以及 DATA OUT 為高阻抗?fàn)顟B(tài)。/CS 變低開(kāi)始轉(zhuǎn)換過(guò)程,I/O CLOCK 和 DATA INPUT 使能,并使 DATA OUT 端脫離高阻抗?fàn)顟B(tài)。輸入數(shù)據(jù)是一個(gè)包括一個(gè) 4 位模擬通道地址(D7-D4),一個(gè) 2 位數(shù)據(jù)長(zhǎng)度選擇(D3-D2),一個(gè)輸出 MSB 或 LSB 在前的位(D1)以及一個(gè)單極性或雙極性輸出選擇位(D0)的 8 位數(shù)據(jù)流,這個(gè)數(shù)據(jù)流是從 DATA INPUT 端 加入的,輸入/輸出時(shí)鐘系列是加在 I/O CLOCK 端,以傳送這個(gè)數(shù)據(jù)到輸出數(shù)據(jù)寄存器。在這個(gè)傳送的同時(shí),輸入?輸出時(shí)鐘系列也將前一次轉(zhuǎn)換的結(jié)果從輸出數(shù)據(jù)寄存器移到 DATA OUT 端。I/O CLOCK 接受輸入系列的 8,12,或 16 個(gè)時(shí)鐘長(zhǎng)度取決于輸入數(shù)據(jù)寄存器中的數(shù)據(jù)長(zhǎng)度選擇位。模擬輸入的采樣開(kāi)始于輸入。I/O CLOCK 的度 4 個(gè)下降沿而保持則在 I/O 26CLOCK 的最后一個(gè)下降沿之后。I/O CLOCK 的最后一個(gè)下降沿也使 EOC 變低并開(kāi)始轉(zhuǎn)換,寄存器的格式與功能如下:a. 數(shù)據(jù)輸入地址位:數(shù)據(jù)寄存器的前四位(D7-D4),規(guī)定了從 11 個(gè)輸入通道中選 1,基準(zhǔn)測(cè)試電壓或掉電方式。b. 輸出數(shù)據(jù)長(zhǎng)度:數(shù)據(jù)寄存器的隨后兩位(D3 和 D2)選擇輸出數(shù)據(jù)的長(zhǎng)度,可選擇 8,12 或 16 位的數(shù)據(jù)長(zhǎng)度,但分辨率為 12 位。c. 數(shù)據(jù)寄存器,LSB 導(dǎo)前:在輸入數(shù)據(jù)寄存器中的 D1 位(LSBF)控制輸出的二進(jìn)制數(shù)的傳送。d. 數(shù)據(jù)寄存器,雙極性格式:在輸入數(shù)據(jù)寄存器中的 D0 位(BIP)控制用來(lái)表示轉(zhuǎn)換結(jié)果的二進(jìn)制數(shù)據(jù)格式。本實(shí)驗(yàn)要求工作精度為 0.1℃,為了方便單片機(jī)的控制,我們選擇用/CS,位數(shù)據(jù)傳送以 MSB 導(dǎo)線的工作方式。其時(shí)序如圖所示:用/CS 進(jìn)行 12 位數(shù)據(jù)傳送,以 MSB 導(dǎo)前的時(shí)序圖·注釋 A:為了減少由于 CS 的噪聲引起的誤差,在 CS↓后內(nèi)部電路在響應(yīng)控制輸入信號(hào)之前等待一個(gè)設(shè)置時(shí)間。所以,在最小的設(shè)置時(shí)間消逝以前不要企圖輸入地址。272.5.2 D/A 的選用AD7521 是并行輸入的 12 位數(shù)模轉(zhuǎn)換器,具有外部參考電壓端,由于不具備寄存器,其輸出是隨輸入的變化而實(shí)時(shí)變化,在溫控器電路中,為了能實(shí)現(xiàn)連續(xù)的電壓驅(qū)動(dòng),應(yīng)在 AD7521 轉(zhuǎn)換器的輸入端加寄存器。AD7521 是 12 位的數(shù)模轉(zhuǎn)換器,其最大計(jì)數(shù)值為 212-1=4095,對(duì)應(yīng)的電壓變化范圍是 0-10V,對(duì)應(yīng)溫度范圍為 0℃-80℃,其平均分辨為 0.02℃/數(shù)字。其轉(zhuǎn)換精度足以滿(mǎn)足溫度控制器 0.1℃的要求。此器件在電路中連接方便,工作穩(wěn)定,價(jià)格適中,是一款實(shí)用的理想元器件。其引腳圖如下AD7521 引腳圖28第三章 恒溫控制系統(tǒng)的設(shè)計(jì)為了得到相等的泵浦激光器輸出,使半導(dǎo)體激光器工作在恒定的溫度下,我們?cè)O(shè)計(jì)了一種恒溫控制系統(tǒng),并建立了該系統(tǒng)的理論模型,分析得出最佳控制方案。該系統(tǒng)采用 TEC 雙向電流制冷(制熱) ,可用多種溫度傳感器作為測(cè)溫元件,運(yùn)用PID 控制原并獲得了滿(mǎn)意的效果。第一節(jié) 恒溫控制系統(tǒng)及其特點(diǎn)半導(dǎo)體激光器恒溫控制系統(tǒng)由微型制冷器(TEC) ,熱敏元件,恒流源,PID 控制器等控制電路構(gòu)成的一閉環(huán)控制回路。熱敏元件監(jiān)測(cè)激光器的結(jié)溫,與設(shè)定的基準(zhǔn)溫度比較,放大后,驅(qū)動(dòng)制冷器的控制電路改變制冷量,從而保持激光器在恒定的溫度下工作。方框圖如圖所示:為了提高制冷效率和控制精度,溫度控制采用內(nèi)制冷方式,即將制冷器和熱敏電阻封裝在激光器管殼內(nèi)部,熱敏電阻直接探測(cè)結(jié)區(qū)溫度,制冷器直接和激光器的熱沉接觸。該系統(tǒng)可以控制激光器的結(jié)溫在±0.05℃范圍內(nèi),從而使激光器有較恒定的輸出光功率和發(fā)射波長(zhǎng)。第二節(jié) 恒溫控制系統(tǒng)的設(shè)計(jì)本系統(tǒng)整個(gè)反饋控制通過(guò)熱敏電阻將泵浦源的溫度反饋到輸入端,經(jīng)差動(dòng)放大和緩沖隔離后送入 PID 控制器,通過(guò)控溫執(zhí)行元件實(shí)現(xiàn)溫度控制。測(cè)溫部分用具有29高靈敏度的負(fù)溫度系數(shù)的熱敏電阻(NTC)作為溫度傳感器,將實(shí)際溫度與設(shè)置溫度值相減,差值送 PID 控制器驅(qū)動(dòng)溫控執(zhí)行部分。用 TEC 作為制冷器件,TEC 用可調(diào)的壓控電流源驅(qū)動(dòng)。數(shù)碼顯示部分用顯示設(shè)置溫度和實(shí)時(shí)監(jiān)視泵浦源溫度。電路如圖所示,各部分電路原理分述如下。3.2.1 前級(jí)電路這一部分電路主要包括恒流源電路和基準(zhǔn)電壓電路。恒流源主要是給熱敏電阻提供一個(gè)恒定的電流,在溫度變化的時(shí)候,熱敏電阻的阻值也發(fā)生相應(yīng)的變化。給熱敏電阻通一個(gè)恒定的電流,可以使電阻的變化轉(zhuǎn)化成熱敏電阻上電壓的變化?;鶞?zhǔn)電壓電路主要是給出一個(gè)電壓,這個(gè)電壓可以預(yù)先與設(shè)定的溫度一一對(duì)應(yīng),這樣在調(diào)節(jié)溫度的時(shí)候,實(shí)際上就是調(diào)節(jié)電壓到某一個(gè)值。這個(gè)電壓就作為基準(zhǔn)電壓與熱敏電阻上的電壓相比較。當(dāng)熱敏電阻上的電壓高與這個(gè)電壓的時(shí)候,就輸出一個(gè)正值。當(dāng)熱敏電阻的電壓低與這個(gè)電壓的時(shí)候,就輸出一個(gè)負(fù)值。當(dāng)熱敏電阻上的電壓和這個(gè)電壓相等的時(shí)候,就輸出就為零值。恒流源具體電路如下:恒流源它的工作原理具體為:穩(wěn)壓二極管提供一個(gè)恒定的 2.5V 電壓,運(yùn)放與它后邊的三極管放大器接成一個(gè)電壓跟隨器,且最上端四點(diǎn)的電壓恒為穩(wěn)壓二極管上的電壓2.5V。這樣就會(huì)形成恒定的電流。如果想改變電流的大小,可以從電鍵接入不同大30小的電阻。從而,可以改變電路中電流的大小。這個(gè)電流流過(guò)熱敏電阻,將熱敏電阻上的電壓取出來(lái)后,在接到一個(gè)電壓跟隨器上輸出,實(shí)現(xiàn) R-V 轉(zhuǎn)變。接入電壓跟隨器的目的就是為了減少后邊電路對(duì)前端電路的影響,增加它的穩(wěn)定性。3.2.2 基準(zhǔn)電壓電路的設(shè)計(jì)這一部分工作原理是,由于穩(wěn)壓二極管的穩(wěn)壓作用,在滑動(dòng)變阻器的
收藏