可編程數(shù)字電位器與AVR單片機(jī)的通信說明
START:
LDI R16,$A4;設(shè)置AVR單片機(jī)I2C總線控制寄存器
OUT TWCR,R16;軟件清除TWINT標(biāo)志W(wǎng)AIT1:
IN R16,TWCR;讀取控制寄存器TWCR
SBRS R16,7;等待硬件置位TWINT標(biāo)志
RJMP WAIT1;TWINT標(biāo)志沒置位,循環(huán)檢查等待
IN R16,TWSR;讀取狀態(tài)寄存器TWSR
ANDI R16,$F8;屏蔽無效位
CPI R16,$08:檢查"START"信號(hào)是否發(fā)送成功
BRNE ERROR;"START"信號(hào)發(fā)送未成功,轉(zhuǎn)入出錯(cuò)處理
LDI R16,$56;發(fā)送X9221器件地址56="5"器件標(biāo)識(shí),"6"器件地址
OUT TWDR,R16
LDI R16,$84
OUT TWCR,R16;軟件清除TWINT標(biāo)志
IN R16,TWSR
ANDI R16,$F8
CPI R16,$18;檢查X9221器件地址是否發(fā)送成功
BRNE ERROR;X9221器件地址發(fā)送未成功,轉(zhuǎn)入出錯(cuò)處理
LDI R16,$2F;設(shè)置所發(fā)送的數(shù)據(jù)(0~63有效,例中為47)
OUT TWDR,R16;數(shù)據(jù)輸出到數(shù)據(jù)寄存器TWDR
LDI R16,$84
OUT TWCR,R16;軟件清除TWINT標(biāo)志;檢查數(shù)據(jù)"2F"是否發(fā)送完成,類似于上述循環(huán)繼續(xù)
.
.
LDI R16,$94;發(fā)送"STOP"信號(hào),一次'$2F'數(shù)據(jù)發(fā)送完成
OUT TWCR,R16
ERROR:···;出錯(cuò)處理過程
END
在此例程中,器件的地址對(duì)X9221來說為56,其中"5"是器件本身固有的以區(qū)別于其它類型的設(shè)備,而"6"是設(shè)計(jì)硬件時(shí)規(guī)定的,可以是"0~F"任何十六進(jìn)制數(shù)值;例程中AVR單片機(jī)僅作為主機(jī)使用且向X9221發(fā)送數(shù)據(jù),其實(shí)從X9221中讀取當(dāng)前數(shù)據(jù)也是一樣的。本例程采用查詢方式,程序顯得繁瑣,但是如果采用中斷方式的話,程序就會(huì)顯得簡單多,只要標(biāo)志SREG寄存器中"I"位和I2C總線控制寄存器中的"TEWIE"置"1",即中斷使能有效,當(dāng)"TWINT"標(biāo)志置"1"立即產(chǎn)生中斷請(qǐng)求,表明完成當(dāng)前數(shù)據(jù)發(fā)送完成,可以準(zhǔn)備下一個(gè)字節(jié)數(shù)據(jù)發(fā)送或停止發(fā)送等操作。
4 X9221可編程數(shù)字電位器在半導(dǎo)體專用設(shè)備一些應(yīng)用研究
4.1用于測量微小電壓變化
圖4是微小電壓測量電路模型,用于芯片鍵合設(shè)備中去檢測吸頭上是否有芯片吸附以及吸頭是否堵塞、或者芯片是否丟失等現(xiàn)象。當(dāng)內(nèi)徑為大約0.1~0.15 mm的吸頭去吸附一個(gè)小芯片時(shí),如果芯片較透明,光敏傳感器檢測出來的電壓變化較小,一般在10~50 mV間;同樣當(dāng)吸頭吸附一個(gè)小芯片時(shí),氣路真空的壓力也會(huì)產(chǎn)生變化,這種壓力的變化以傳感器電壓變化輸出。為了改變電位器"中間抽頭"以便與傳感器檢測輸入電壓相匹配,計(jì)算機(jī)通過RS232接口向單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)收到數(shù)據(jù)后轉(zhuǎn)發(fā)給X9221可編程數(shù)字電位器以改變基準(zhǔn)電壓值。比較基準(zhǔn)電壓U∑+按下式確定:
U∑+是LM393運(yùn)放同相輸入端電壓(在這種狀態(tài)下,考慮到前級(jí)傳感器輸出基本上處于放大狀態(tài),所用傳感器電源電壓為+5 V,最高輸出電壓按3.5 V計(jì)算)
N是0~63共64種狀態(tài)變化值,那么,當(dāng)U∑+從0~3.5 V變化時(shí),最小分辨率可以達(dá)到55 mV左右,用手工進(jìn)行一般電位器調(diào)節(jié)達(dá)到這樣的分辨率是難以掌控的。
基準(zhǔn)電壓(即U∑+)通過機(jī)器的人機(jī)界面可以"直接調(diào)節(jié)",如果將電位器數(shù)值進(jìn)行標(biāo)定,隨時(shí)還可以看到當(dāng)前的基準(zhǔn)電壓大小。傳感器輸出電壓與基準(zhǔn)電壓比較,使電壓比較器輸出反應(yīng)當(dāng)前的狀態(tài),不同的時(shí)刻高低電平代表不同的意義,如"吸頭阻塞"、"芯片丟片"、"真空不足"等。
4.2測量微小電流變化
圖5是微小電流測量電路模型,用于引線鍵合設(shè)備中去檢測斷線、連線、短路等情況,被測器件是一個(gè)半導(dǎo)體元件,當(dāng)在焊盤上鍵合上一根金線時(shí),通過檢測漏電流來判斷這條金線與芯片鍵合過程中是否存在"斷線"、"連線"、"短路"等情況。計(jì)算機(jī)通過界面操作發(fā)送指令以改變X9221可編程數(shù)字電位器的阻值,進(jìn)而改變電壓源的放大倍數(shù)以改變加在被測元件的電壓,從而達(dá)到適應(yīng)不同品種的半導(dǎo)體器件性能要求。
設(shè):信號(hào)源的輸出為Us,運(yùn)放LM324輸出為U0,X9221電阻為Rx,被測元件阻抗為Rz,被測元件流過的漏電流為I0,則用以下兩個(gè)表達(dá)即可表達(dá)它們之間的關(guān)系:
通過主機(jī)界面改變Rx可編程電阻值,即可以改變U0,U0的改變等于改變了I0,而I0的改變等于改變了流過被測器件的最大允許電流,從而保護(hù)了被測器件不會(huì)因?yàn)闄z測漏電流而損壞,通過檢測被測器件上施加的電壓和U0之差值即可判斷漏電流大小,從而檢測金線是否與被測器件焊盤點(diǎn)鍵合上。I0是根據(jù)不同器件在工藝參數(shù)上需要經(jīng)常調(diào)節(jié)的量,以適應(yīng)不同場合的要求。
5 結(jié)束語
可編程數(shù)字電位器的最大優(yōu)點(diǎn)在于直接可以和帶有I2C總線單片機(jī)相連而無需特殊設(shè)計(jì),上位機(jī)可以隨機(jī)讀取電位器當(dāng)前設(shè)定值。利用它的這些優(yōu)點(diǎn),可以提高設(shè)備儀器的智能化水平,特別是在帶有I2C總線的嵌入式單片機(jī)中應(yīng)用十分靈活簡單。隨著電子技術(shù)的飛速發(fā)展,人們對(duì)設(shè)備、儀器以及家用電器的追求已不再僅僅滿足功能使用上,而是在產(chǎn)品應(yīng)用的人性化上要求越來越高,由于大多數(shù)自動(dòng)化設(shè)備上,都具有友好的人機(jī)界面,人們通過計(jì)算機(jī)界面想完成所有操作,比如調(diào)節(jié)一個(gè)電位器以調(diào)節(jié)電流、電壓或者電機(jī)速度、轉(zhuǎn)矩、頻率等物理量,利用可編程數(shù)字電位器完全可以通過界面完成。適時(shí)采用可編程數(shù)字電位器不但可以降低成本、簡化電路設(shè)計(jì)、提高可靠性,而且可以使設(shè)計(jì)更加人性化。另外,AVR單片機(jī)可以通過JTAG接口完成仿真調(diào)試、下載程序;片內(nèi)有FLASH和E2ROM存儲(chǔ)單元,有標(biāo)準(zhǔn)的串行接口、I2C總線接口、SPI接口增強(qiáng)了其硬件功能;支持C語言編程,便于掌握C語言者無需太多地了解硬件就能進(jìn)行一些編程。本文探討了AVR單片機(jī)、X9221可編程數(shù)字電位器及其接口和軟件編程的一些實(shí)際應(yīng)用,許多問題是筆者在應(yīng)用中的經(jīng)驗(yàn),可能會(huì)有些錯(cuò)誤,希望讀者批評(píng)指正。
評(píng)論