欢迎光临专业集成电路测试网~~欢迎加入IC测试QQ群:111938408

专业IC测试网

当前位置: 网站主页 > 测试工程 >

IC Test(Hardward Check)

时间:2023-09-25 19:55来源:chengcheng 饮了二壶酒 作者:ictest8_edit 点击:

 

 
HW-KelvinTest
加流测压,Kelvin VI源的FH\SH、FL\SL同时参考同一个地,形成回路。
 
 
 
 
class HW_Kelvin_test
{
public:
  HW_Kelvin_test(VISource_FOVI _channel, char *_ParamName1, unsigned int _K1, double _OutVal)
  {
    channel = _channel;
    ParamName1 = _ParamName1;
    K1 = _K1;
    OutVal = _OutVal;
  }
 
  ~HW_Kelvin_test() {}
  void hw_test()
{
    double l_results[NUM_SITES] = {0.0};
    double l_voltage[NUM_SITES] = {0.0};
    double l_current[NUM_SITES] = {0.0};
 
    CBIT_ABRelayOn(K1, -1); // Set up closing relay K17_S1B
    DelaymS(3);
    FOVI_SetMode(channel, pFI, pFOVI_5V, pFOVI_10mA);
    DelaymS(3.0);
    FOVI_SetOutVal(channel, OutVal mA); // Current output 1 mA
    DelaymS(1.0);
    // Measure the channel KELVIN output voltage and sampling times 10 and time interval 0.01ms
    FOVI_MeasureVSamp(channel, Average_Value, 0.01, 10);
    GetResultAll(NUM_SITES, l_voltage);
    FOVI_MeasureISamp(channel, Average_Value, 0.01, 10);
    GetResultAll(NUM_SITES, l_current);
    FOR_EACH_SITE(g_site, NUM_SITES)
    {
      l_results[g_site] = l_voltage[g_site] * 1E3 / (l_current[g_site] + 1E-12);
    }
    LogResultAll(ParamName1, NUM_SITES, 0, l_results);
 
    FOVI_SetOutVal(channel, 0 mA);
    CBIT_ABRelaySetOff(K1, -1);
    DelaymS(0.2);
    FOVI_Init(channel);
    DelaymS(1);
  }
 
private:
  VISource_FOVI channel;
  char *ParamName1;
  unsigned int K1;
  double OutVal;
};
void HW_KelvinTest(VISource_FOVI channel, char *ParamName1, unsigned int K1, double OutVal)
{
  double l_results[NUM_SITES] = {0.0};
  double l_voltage[NUM_SITES] = {0.0};
  double l_current[NUM_SITES] = {0.0};
 
  CBIT_ABRelayOn(K1, -1); // Set up closing relay K17_S1B
  DelaymS(3);
  FOVI_SetMode(channel, pFI, pFOVI_5V, pFOVI_10mA);
  DelaymS(3.0);
  FOVI_SetOutVal(channel, OutVal mA); // Current output 1 mA
  DelaymS(1.0);
  // Measure the channel KELVIN output voltage and sampling times 10 and time interval 0.01ms
  FOVI_MeasureVSamp(channel, Average_Value, 0.01, 10);
  GetResultAll(NUM_SITES, l_voltage);
  FOVI_MeasureISamp(channel, Average_Value, 0.01, 10);
  GetResultAll(NUM_SITES, l_current);
  FOR_EACH_SITE(g_site, NUM_SITES)
  {
    l_results[g_site] = l_voltage[g_site] * 1E3 / (l_current[g_site] + 1E-12);
  }
  LogResultAll(ParamName1, NUM_SITES, 0, l_results);
 
  FOVI_SetOutVal(channel, 0 mA);
  CBIT_ABRelaySetOff(K1, -1);
  DelaymS(0.2);
  FOVI_Init(channel);
  DelaymS(1);
}


 
Capatitence Test
 
电容充电过程:
 
 
 
电容微分公式,C = I * dt / du,给一个电流(例如电容单位uF,电压单位V,时间单位mS,则应给到mA量级的电流),取电压线性的两个点,求电容。
 
// C = I * dt / du
void FOVISourceCapatitanceTest(VISource_FOVI channel, char *ParamName1, unsigned int k1, FOVI_Irange IRange, FOVI_Vrange VRange, double OutVal)
{
  double l_results[NUM_SITES] = {0.0};
  double l_voltage[NUM_SITES] = {0.0};
  double l_voltage1[NUM_SITES] = {0.0};
 
  FOVI_SetMode(channel, pFI, VRange, IRange);
  DelaymS(3);
  CBIT_ABRelayOn(k1, -1);
  DelaymS(3);
  FOVI_SetOutVal(channel, OutVal);
  DelaymS(3);
  FOVI_MeasureVSamp(channel, Average_Value, 0.01, 10);
  GetResultAll(NUM_SITES, l_voltage1);
  DelaymS(1.5);
  FOVI_MeasureVSamp(channel, Average_Value, 0.01, 10);
  GetResultAll(NUM_SITES, l_voltage);
  for (g_site = 0; g_site<NUM_SITES; g_site++)
  {
    l_results[g_site] = OutVal * 1.5 / (l_voltage[g_site] - l_voltage1[g_site] + 1e-12);  
    //g_results[g_site] = g_results[g_site] * 1e6;     //////F to uF
  }
  LogResultAll(ParamName1, NUM_SITES, 0, l_results);
  FOVI_SetOutVal(channel, 0 mA);
  CBIT_ABRelaySetOff(k1, -1);
  DelaymS(0.2);
  FOVI_Init(channel);
  DelaymS(1);
}
打开继电器,测量电容,关闭继电器。
 
void FOVISourceAWG_CapatitanceTest(/*unsigned int K1, */VISource_FOVI Channel, AWG_VISOURCE emTrigChannel, double TrigVal,
  double OutVal, int DataNum, int start_point, int end_point, int unitChange, char *ParamName, FOVI_Irange IRange, FOVI_Vrange VRange)
{
  double l_results[NUM_SITES] = {0.0};
  double l_voltage[NUM_SITES] = {0.0};
  double l_current[NUM_SITES] = {0.0};
 
  double l_AwgData[2000] = { 0.0 };
  double l_DataResultV[2000] = { 0.0 };
  double l_DataResultI[2000] = { 0.0 };
  double l_Samptime = 0.02 ; //100uS one ramp_step
  int l_SampleNumber = 1;
 
  //CBIT_ABRelayOn(K1,-1);
  FOVI_SetMode(Channel, pFI, VRange, IRange);
  DelaymS(3);
 
  AWG_CreateRampData(l_AwgData, DataNum, OutVal, OutVal);
  FOVI_AwgLoader(Channel, "WAVE1", l_AwgData, DataNum);
  FOVI_AwgSelect(Channel, l_Samptime, l_SampleNumber, DataNum);
  FOVI_AwgSetTrigVal(Channel, Voltage, TrigVal, Pos_Edge);
  FOVI_AwgSetSync(Channel, Sync_ON);
  AWG_RunTrigSync(emTrigChannel, emTrigChannel);
  FOVI_AwgSetSync(Channel, Sync_OFF);
  FOR_EACH_SITE(g_site, NUM_SITES)
  {
    FOVI_AwgMeasResult(g_site,  Channel,  MV,  l_DataResultV);
    FOVI_AwgMeasResult(g_site,  Channel,  MI,  l_DataResultI);
    l_results[g_site] = l_Samptime * (end_point - start_point) *  l_DataResultI[(end_point - start_point)/2] * unitChange / (l_DataResultV[end_point] - l_DataResultV[start_point] + 1E-12);
  }
  LogResultAll(ParamName, NUM_SITES, 0, l_results);
  FOVI_SetOutVal(Channel, 0 mA);
  //CBIT_ABRelaySetOff(K1, -1);
  //DelaymS(1);
  //FOVI_Init(Channel);
  //DelaymS(1);
}
Resistance Test
R = U / I
 
 
void FOVISourceResistanceTest(VISource_FOVI channel, char* ParamName1, double OutVal, int SampleN, unsigned int k1, int unitChange)
{
  double l_results[NUM_SITES] = {0.0};
  double l_voltage[NUM_SITES] = {0.0};
  double l_current[NUM_SITES] = {0.0};
 
  CBIT_ABRelaySetOn(k1, -1);
  FOVI_SetMode(channel, pFI, pFOVI_10V, pFOVI_10mA);
  DelaymS(3);
  FOVI_SetOutVal(channel, OutVal);
  DelaymS(5);
  FOVI_MeasureVSamp(channel, Average_Value, 0.01, SampleN);
  GetResultAll(NUM_SITES, l_voltage);
  FOVI_MeasureISamp(channel,Average_Value,0.01,10);
  GetResultAll(NUM_SITES, l_current);
  FOR_EACH_SITE( g_site, NUM_SITES )
  {
    l_results[g_site] =l_voltage[g_site] * unitChange / (l_current[g_site]+ 1e-12);
  }
  LogResultAll(ParamName1, NUM_SITES, 0, l_results);
  FOVI_SetOutVal(channel, 0 mA);
  CBIT_ABRelaySetOff(k1, -1);
  DelaymS(1);
  FOVI_Init(channel);
  DelaymS(1);
}
 
 
Contact Test
 
Test method:
 
Ground for all pins(Usually, force 0V with 1mA current range)
 
Force -0.1mA with 2V voltage range on the on-test pin
 
 
 
 
-if contact well, MV-->0.5V(forward voltage of protection diode. The value is variable in practice)
 
-if contact Open, MV >> 2V
 
-if contact Short, MV-->0V
 
不建议直接加硫测压,因为当相邻两个pin短路时,并联分流导致测的结果不准;加压钳流的好处,并联对Open/Short的结果不影响。
 
void FOVISourceOpenShortTest(VISource_FOVI channel, char* ParamName1, double OutVal, int SampleN)
{
  double l_results[NUM_SITES] = {0.0};
  double l_voltage[NUM_SITES] = {0.0};
  double l_current[NUM_SITES] = {0.0};
 
  FOVI_ChangeIRang(channel, pFOVI_100uA);
  FOVI_SetOutVal(channel, OutVal V);
  DelaymS(2);
  FOVI_MeasureVSamp(channel, Average_Value, 0.01, SampleN);
  GetResultAll(NUM_SITES, l_voltage);
  LogResultAll(ParamName1, NUM_SITES, 0, l_voltage);
  FOVI_SetOutVal(channel, 0 V);
  FOVI_ChangeIRang(channel,pFOVI_1mA);
  DelaymS(1);
  FOVI_Init(channel);
  DelaymS(1);
}
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片