AnsweredAssumed Answered

Agilent 34420A

Question asked by jey11 on Sep 28, 2010
Latest reply on Sep 29, 2010 by jey11
I am using 4wire method to measure small resistance which is less than 1 Ohm. This test is done by automated, using labwindows. The range is set 100 and the resolution is MIN. Some times it reads negative resistance or higher reading. The following the code is return the resistance. How can I improve the measurements?

Your help is much appreciated.



TEST(MMMeasureResistance){
     short nestNumber;
     char      szBuffer[100], szErrMsg[128], szResponse[128];
    int status;
    double CorrectionForLeads=GetParameterReal64(GetTestParameterString(1,1,0),"ResistanceOfLeads");;


     DisconnectPowerSupply();
     

     
     

     
     sprintf(szBuffer, "CONF:FRES %s,%s", GetTestParameterString(2,1,0),GetTestParameterString(2,2,0));
     GPIBpnp_command( GetVi("MICROOHMMETER"),szBuffer );


     
     if( 0!=(status = GPIBpnp_command( GetVi("MICROOHMMETER"), "TRIGGER:SOURCE IMM"))){
            ErrorPrintf("Could not perform: \"TRIG:SOUR IMMEDIATE\"  err#%d", status);
            return;
     }

     if( 0!=(status = GPIBpnp_command( GetVi("MICROOHMMETER"), "FRES:NPLC 10"))){ //was NPLC 10 20100913
            ErrorPrintf("Could not perform: \"FRES:NPLC 10\"  err#%d", status);
            return;
     }
     if( 0!=(status = GPIBpnp_command( GetVi("MICROOHMMETER"), "FRES:OCOM ON"))){
            ErrorPrintf("Could not perform: \"FRES:OCOM ON\"  err#%d", status);
            return;
     }     
     sprintf(szBuffer, "MEAS:FRES?");

     IORouteClose("/4W_Mux/DMM_CONNECT,%s", GetTestParameterString(1,1,0));
     Sleep(500);  //was 50 20100910

     
     ForEachNest( nestNumber ){
          memset(szBuffer,      0,      sizeof(szBuffer));
          memset(szResponse,      0,      sizeof(szResponse));
          sprintf(szBuffer, "MEAS:FRES?");
          
          if( 0!=(status = GPIBpnp_command_Q( GetVi("MICROOHMMETER"), szBuffer, szResponse ))){
             GPIBpnp_error_message(GetVi("MICROOHMMETER"), status, szErrMsg );
             ErrorPrintf( szErrMsg );
              continue;
             }
          SetTestResultReal64( nestNumber, atof(szResponse)-CorrectionForLeads);
     }
    TracePrintf("TEST:%d  MMMeasureResistance:  %s", GetTestNumber(), szResponse);
//        ConnectPowerSupply();

     IORouteOpen("/4W_Mux/DMM_CONNECT,%s", GetTestParameterString(1,1,0));

}  

Outcomes