首先一定要注意,F(xiàn)VMI模式下,電流箝位下限值要小于0,上限要大于0!而且要保證上箝位值的絕對值比下箝位值的大;其次,要注意箝位精度是±5%;最后要注意選取合適的電壓、電流量程(可參照器件的工作指標(biāo))。
1)DVI1.XX版本的400mA檔,PVI的10A檔,由于是脈沖工作方式,不能用debug模式調(diào)試;
2)在調(diào)試程序時,建議用示波器觀察輸入、輸出信號波形,要特別注意不要有大的過沖、下陷和自激;
3)如果用到PVI板的大電流量程,建議用示波器觀察切換大電流量程時,是否有幅度較大的過沖。如果有,一定要在軟件硬件上采取措施消除,否則容易造成器件損毀;
4)切記:DVI1.XX和DVI2.XX一定不能混用,即不能混插在同一臺測試機里!
1)DVI2.XX 400mA檔是恒流輸出,而DVI1.XX則是脈沖工作模式;
2)DVI2.XX采用27V和48V供電,當(dāng)調(diào)用20V以下電壓檔位(包括20V)時用27V供電,40V檔時用48V供電。這樣做可以大大減小板的功耗,但必須注意:在編程時盡量避免電壓在20V以下檔和40V檔之間切換,這樣會額外增加硬件的切換時間;而DVI1.XX全部采用48V供電所以不需要這方面的考慮;
3)DVI2.XX的內(nèi)部電路做了修改,比DVI1.XX工作更加穩(wěn)定,動態(tài)性能等各個方面都得到比較大的提升。
通常情況可能發(fā)生了自激,建議用示波器看一下波形,看是否自激振蕩;如果是小電流值,可能延時不夠,沒達到穩(wěn)態(tài),建議增加延時時間,或在保證精度的前提下改變電流量程。
一旦發(fā)現(xiàn)輸入/輸出發(fā)生了自激振蕩,可以在器件管腳并聯(lián)101~104電容來消除自激振蕩。高頻干擾(>100kHz)適合接101~102或者更小的小電容;而低頻干擾適合接103~104相對大的電容。最好選擇高頻電容,并在能消除自激的情況下盡量選用容量小的電容!【建議】:調(diào)試程序時,每個參數(shù)都要用示波器監(jiān)視波形,看是否出現(xiàn)自激振蕩。用示波器觀察自激波形時,可在示波器表筆上串入一個1K的電阻,可以避免示波器接入影響測試線路,從而使觀測到的波形更真實。
1)初始化時,建議采用“AstInitAllDVI()”語句,該語句可以同時將所有DVI通道初始化。PVI也類似。
2)PVI切換量程或工作模式時,需要較長的時間。例如,PVI的100mA以下量程和1A、10A量程互切時,一次需要7~10ms;1A和10A量程互切時,一次需要15ms;一次connect/disconnect,需要7~10ms。所以,使用同一電流量程的參數(shù)盡量放在一起,避免不必要的量程切換。
3)當(dāng)需要對一個外接電容的管腳測試小電流(用4uA檔)時,建議先用大電流檔(例如4mA)給電容迅速充電,再切換到小電流檔進行測量,可以節(jié)省時間。
4)多工位掃描參數(shù),采用設(shè)置標(biāo)志位法進行并行掃描,可大大節(jié)省時間。
【例】
假設(shè)DVI1連接掃描輸入的管腳,DVI0連接判斷輸出的管腳:
float vx = 0; //掃描變量
float adresult[4], result[4];
BYTE k[4] = {0,0,0,0}; //工位標(biāo)志
dvi0.Connect();
dvi1.Connect();
delay_ms(1);
dvi1.SetModeFVMI(DVI_VRNG_5V, 3, DVI_IRNG_40MA, 40e-3, -40e-3); //先讓器件進入已知的穩(wěn)定狀態(tài)
dvi1.Enable();
dvi0.SetModeFIMV(DVI_IRNG_400UA, 0, DVI_VRNG_20V, 20, 0);
dvi0.Enable();
delay_us(200);
double vstep1=0.1; //設(shè)置掃描步進
vx=2.0; //設(shè)置掃描的起始電壓
for (; vx>0; vx-=(float)vstep1)
{
dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
dvi1.Enable();
delay_us(200);
dvi0.Measure(adresult, SAMPLE_TIMES);
for ( int i=0; i<4; i++)
{
if ((k[i] == 0) && (adresult[i] < 5)) //判斷掃描的結(jié)果及工位標(biāo)志
{
result[i] = vx;
k[i]=1; //將已經(jīng)符合條件的工位標(biāo)志為1,防止下次掃描后改變結(jié)果
}
}
if ((k[0] == 1) && (k[1] == 1) && (k[2] == 1) && (k[3] == 1)) //判斷四個工位是否都已經(jīng)掃描完畢
break;
}
for ( int i=0; i<4; i++)
{
vin.SetTestResult(i, 0, result[i]);
}
dvi0.Disable();
dvi1.Disable();
dvi0.Disconnect;
dvi1.Disconnect();
【注意】多工位并行掃描不僅可以用在逐步掃描算法,也可以用在二分法掃描算法。與多工位串行掃描相比,并行掃描的時間是多工位中掃描時間時間最長的那個工位的掃描時間,因此時間將得到大大的縮短。
5) 單工位掃描參數(shù),推薦使用先粗后細或二分法。
【例】
假設(shè)DVI1連接掃描輸入的管腳,DVI0連接判斷輸出的管腳:
a) 先粗掃后細掃,可用于施密特器件,時間較長。
float vx = 0; //掃描變量
float adresult[4],result[4];
dvi0.Connect();
dvi1.Connect();
delay_ms(1);
dvi1.SetModeFVMI(DVI_VRNG_5V, 3, DVI_IRNG_40MA, 40e-3, -40e-3); //先讓器件進入已知的穩(wěn)定狀態(tài)
dvi1.Enable();
dvi0.SetModeFIMV(DVI_IRNG_400UA, 0, DVI_VRNG_20V, 20, 0);
dvi0.Enable();
delay_us(200);
double vstep1=0.1; //設(shè)置粗掃步進
vx=2.0; //設(shè)置掃描的起始電壓
for (; vx>0; vx-=(float)vstep1)
{
dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
dvi1.Enable();
delay_us(200);
dvi0.Measure(adresult, SAMPLE_TIMES);
result[0]=vx;
if(adresult[0]<3) //判斷掃描結(jié)果
break;
}
vx=result[0]+vstep1; //將粗掃結(jié)果返回一個粗掃的步進作為細掃的起始電壓
double vstep2=0.01; //設(shè)置細掃步進
for (; vx>0; vx-=(float)vstep2)
{
dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
dvi1.Enable();
delay_us(200);
dvi0.Measure(adresult, SAMPLE_TIMES);
result[0]=vx;
if(adresult[0]<3) //判斷結(jié)果
break;
}
vin.SetTestResult(0, 0, result[0]);
dvi0.Disable();
dvi1.Disable();
dvi0.Disconnect;
dvi1.Disconnect();
b) 二分法,適用于非施密特器件,時間短。
float vx = 0; //掃描變量
float adresult[4];
int i=0;
dvi0.Connect();
dvi1.Connect();
delay_ms(1);
dvi1.SetModeFVMI(DVI_VRNG_5V, 3, DVI_IRNG_40MA, 40e-3, -40e-3); //先讓器件進入已知的穩(wěn)定狀態(tài)
dvi1.Enable();
dvi0.SetModeFIMV(DVI_IRNG_400UA, 0, DVI_VRNG_20V, 20, 0);
dvi0.Enable();
delay_us(200);
double vstep1=1; //設(shè)置二分法的長度,其取值與起始值和目標(biāo)值有關(guān)
vx=2.5; //設(shè)置掃描的起始值,保證目標(biāo)值在[vx-vstep1,vx+vstep1]
for (i=0;i<10;i++) //i的上限值決定了掃描的精度和掃描時間
{
dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
dvi1.Enable();
delay_us(200);
dvi0.Measure(adresult, SAMPLE_TIMES);
if(adresult[0]>3)
vx=vx-vstep1;
else if(adresult[0]<3)
vx=vx+vstep1;
vstep1=vstep1/2;
}
vin.SetTestResult(0, 0, vx);
dvi0.Disable();
dvi1.Disable();
dvi0.Disconnect;
dvi1.Disconnect();
如果發(fā)生這種情況,建議:在確認被測信號沒有自激的情況下用6位半電表測量,看其讀數(shù)和計算機顯示值是否一致。1)如果不一致,且電表讀數(shù)和correlation data接近,估計是測試機讀取數(shù)據(jù)的環(huán)節(jié)出錯,建議仔細排查錯誤;2)如果一致,需要檢查correlation data的測試方法、測試線路和測試條件,看是否和自己的完全一致,判斷是否是因為上述原因?qū)е虏町惍a(chǎn)生。
開機順序:打開電腦主機電源?打開測試機電源;關(guān)機順序:關(guān)掉測試機電源?關(guān)掉電腦主機電源。注:插拔電腦主機里的測試機接口卡或handler接口卡時,一定要先關(guān)掉電腦主機電源,再插拔?。?!