Something no one writes for a long time.
I will add my measurements 2DW232.
Purchased 30 pieces for aliexpress.
The logo and date are present.
The legs are entirely made of kovar.
They are attracted by the magnet quite strongly.
Measurements were performed by R6871E and TR6142.
Temperature sensors LM35.
Self-heating readings were taken after stabilization for 30 minutes.
2DW232 is wrapped in polyester quilt wadding and placed in a jar.
The jar is closed with a lid and crushed by a load.
The time of 30 minutes was chosen for a reason, but after the current was set and the temperature stabilized.
I got a stabilization time constant of ~ 25 minutes.
Despite the fact that according to the documentation, the operating current is not more than 30 mA, 2DW232 survived,
and did not change my reading after I applied a current of 110 mA to it.
The characteristics of the dependence of the voltage and temperature of self-heating on the current are taken.
To find the zero temperature coefficient point, a macro was compiled in EZGPIB.
Turn off the current - hold 10 seconds for a little cooling - set the current - turn on the current - hold 3 seconds - 50 voltage and temperature measurements - repeat.
In my case, it turned out 11.4 mA.
The dynamic resistance is calculated based on the set current and the measured voltage.
If you need data in CSV format, I'll be happy to provide.
Any suggestions and comments are welcome.
Macro EZGPIB
Program V_I_Logger; // Программа для снятия ВАХ
const MakeModel_DVM='R6871E'; // Указать модель мультиметра
const MakeModel_PS='TR6142'; // Указать модель источника питания
const GPIB_address_DVM = 1; // Указать адрес мультиметра на шине GPIB
const GPIB_address_PS = 4; // Указать адрес источника питания на шине GPIB
const Directory = 'C:\Incoming'; // Путь для сохранения файла CSV
const Timeout = 5;
//const Descript = 'тест тока TR6142 '; // Описание измерений
const Descript = '2DW232 1+ и 2- вывод CI5 IT6 11...13 mA'; // Описание измерений
var Filename : String;
var t_start_datetime: TDateTime;
var t_acq_datetime: TDateTime;
var tmp_str:String;
var elapsed_time:longint;
var Answer:String;
var Ivdc_set:String;
var Temp_in:String;
var Temp_out:String;
var Count:integer;
var Count_str:String;
var Count_single:single;
var Count2:integer;
var Make:String;
var Maker:TDateTime;
var i:integer;
var Answer_dbl:Double;
procedure Init_File;
begin;
Maker := EZGPIB_TimeNow; // Дата/время создания файла
EZGPIB_FileClearBuffer;
tmp_str:='date'; // First column
EZGPIB_ConvertAddToString(tmp_str,';');
EZGPIB_ConvertAddToString(tmp_str,'VDC' + ';' );
EZGPIB_ConvertAddToString(tmp_str,'Idc' + ';' );
EZGPIB_ConvertAddToString(tmp_str,'Temp_in °C'+';');
EZGPIB_ConvertAddToString(tmp_str,'Temp_out °C'+ #13 + #10); // + пустую строку для более простого выделения столбца в Excel
EZGPIB_FileAddToBuffer(tmp_str);
Filename := Directory +'\';
EZGPIB_ConvertAddToString(Make,Maker);
Make := AnsiReplaceText ( Make, ':', '_'); //Замена недопустимых символов в имени файла
EZGPIB_ConvertAddToString(Filename,Make);
EZGPIB_ConvertAddToString(Filename,' '+ MakeModel_DVM);
EZGPIB_ConvertAddToString(Filename,'.csv');
EZGPIB_FileWrite(Filename); // Save File
end;
procedure Save_Descript;
begin;
EZGPIB_FileClearBuffer;
tmp_str :='';
EZGPIB_ConvertAddToString(tmp_str,Descript +#13+#10); // Описание измерений
EZGPIB_FileAddToBuffer(tmp_str); // Add to file buffer
EZGPIB_FileWrite(Filename); // Save File
EZGPIB_ScreenWriteLn(tmp_str);
end;
procedure Save_File;
begin;
EZGPIB_FileClearBuffer;
tmp_str :='';
EZGPIB_ConvertAddToString(tmp_str,t_acq_datetime); // First column
EZGPIB_ConvertAddToString(tmp_str,';');
EZGPIB_ConvertAddToString(tmp_str,Answer); // Second column
EZGPIB_ConvertAddToString(tmp_str,';');
EZGPIB_ConvertAddToString(tmp_str,Ivdc_set);
EZGPIB_ConvertAddToString(tmp_str,';');
EZGPIB_ConvertAddToString(tmp_str,Temp_in);
EZGPIB_ConvertAddToString(tmp_str,';');
EZGPIB_ConvertAddToString(tmp_str,Temp_out);
EZGPIB_FileAddToBuffer(tmp_str); // Add to file buffer
EZGPIB_FileWrite(Filename); // Save File
EZGPIB_ScreenWriteLn(tmp_str);
tmp_str :='';
end;
procedure Init_Device_DVM;
begin;
EZGPIB_BusAutoOff; // Эквивалент команды ++auto 0
EZGPIB_BusWriteData(GPIB_address_DVM,'Z'); // Reset to defaults
EZGPIB_TimeSleep(5);
EZGPIB_BusWriteData(GPIB_address_DVM,'ac'); // Acal execute
EZGPIB_TimeSleep(3);
EZGPIB_BusWriteData(GPIB_address_DVM,'++read_tmo_ms 5000'); // установка таймаута 10 сек
EZGPIB_BusIFC; // Perform an Interface Clear
EZGPIB_BusEnableEoi;
EZGPIB_BusSetEos(0);
EZGPIB_TimeSleep(1);
// IT8 100 PLC
// IT7 50 PLC
// IT6 20 PLC
// IT5 10 PLC
// IT4 5 PLC
// IT3 1 PLC
// IT2 10 msec
// IT1 1 msec
// IT0 100 usec
//CI acal interval, min
//F1 --> VDC
//F2 --> VAC
//F3 --> 2W Ohm
//F4 --> 4W Ohm
//F5 --> ADC
//F8 --> VDC + ADC
//F9 --> ADC + AAC
//R5 --> 20 V
//R6 --> 200 V
//R5 --> 20 mA
//R6 --> 200 mA
EZGPIB_BusWriteData(GPIB_address_DVM,'F1,R5,M1,IT6,SI0,TD0,AZ1,RE7,CI5');
EZGPIB_TimeSleep(2);
EZGPIB_BusWriteData(GPIB_address_DVM,'H0,S0,SL2,DL0,CS');
EZGPIB_TimeSleep(5);
EZGPIB_BusAutoOn;
end;
procedure Init_Device_PS;
begin;
EZGPIB_BusAutoOff;
EZGPIB_BusWriteData(GPIB_address_PS,'C');
EZGPIB_TimeSleep(1);
EZGPIB_BusWriteData(GPIB_address_PS,'I3');
end;
// Main procedure
begin;
EZGPIB_screenclear; // Clear the Output Console
EZGPIB_BusEnableEoi;
EZGPIB_BusSetEos (0);
Init_Device_DVM; // Send command strings to meter
Init_Device_PS;
Init_File; //
Save_Descript;
//EZGPIB_BusWriteData(GPIB_address_PS,'D.5'); //если надо задать начальный ток
EZGPIB_BusWriteData(GPIB_address_PS,'E');
EZGPIB_TimeSleep(0.5);
t_start_datetime :=EZGPIB_TimeNow; // Get time at beginning of each cycle
elapsed_time:=0;
tmp_str :='';
while (Count <= 130) and (not ezgpib_kbdKeyPressed) do begin;
for Count:=110 to 130 do
begin
EZGPIB_BusAutoOff;
EZGPIB_BusWriteData(GPIB_address_PS,'H'); //выдержка времени для короткого остывания 2DW232
EZGPIB_TimeSleep(10); // -//-
EZGPIB_BusWriteData(GPIB_address_PS,'E'); // включение выхода TR6142
EZGPIB_TimeSleep(0.5);
Count_str := IntToStr (Count);
Count_single := EZGPIB_ConvertToFloatNumber(Count_str);
Count_single := Count_single /10 ;
Count_str := EZGPIB_ConvertToFixed(Count_single,1); // ;
Ivdc_set := Count_str;
EZGPIB_BusWriteData(GPIB_address_PS,'D'+Count_str);
EZGPIB_TimeWaitForMultipleOf(3); //Выдержка между циклами после установки тока
for Count2:=1 to 50 do
begin
EZGPIB_BusAddressDevice (1);
repeat
if ezgpib_kbdKeyPressed then exit ;
EZGPIB_BusAutoOff;
Answer:=''; // Clear previous reading
EZGPIB_BusWriteData(GPIB_address_DVM,'E');
EZGPIB_BusWriteData(GPIB_address_DVM,'++read');
i:=0;
repeat
EZGPIB_TimeSleep(0.0001);
i:=i+1;
until (EZGPIB_BusDataAvailable or (i>200000));
Answer:=EZGPIB_BusGetData;
until Length(Answer)>1;
Answer_dbl:=EZGPIB_ConverttoFloatNumber(Answer); //конвертирование ответа из str в экспоненциальный
Answer:=EZGPIB_ConvertStripToNumber(Answer_dbl); //конвертирование ответа из exp в числовой
Answer := AnsiReplaceText ( Answer, '.', ','); // переделка ответа под стандарт с цифровым разделителем запятой
EZGPIB_BusAutoOn;
repeat
Temp_in:=''; // Clear previous reading
EZGPIB_BusWriteData(GPIB_address_DVM,'++temp1');
// EZGPIB_TimeSleep(0.5);
// EZGPIB_BusWriteData(GPIB_address_DVM,'++read');
i:=0;
repeat
EZGPIB_TimeSleep(0.001);
i:=i+1;
until (EZGPIB_BusDataAvailable or (i>2000));
Temp_in:=EZGPIB_BusGetData;
until Length(Temp_in)>1;
Temp_in := AnsiReplaceText ( Temp_in, '.', ','); // переделка ответа под стандарт с цифровым разделителем запятой
repeat
Temp_out:=''; // Clear previous reading
EZGPIB_BusWriteData(GPIB_address_DVM ,'++temp3');
//EZGPIB_TimeSleep(0.5);
// EZGPIB_BusWriteData(GPIB_address_DVM,'++read');
i:=0;
repeat
EZGPIB_TimeSleep(0.001);
i:=i+1;
until (EZGPIB_BusDataAvailable or (i>2000));
Temp_out:=EZGPIB_BusGetData;
until Length(Temp_out)>1;
Temp_out := AnsiReplaceText ( Temp_out, '.', ','); // переделка ответа под стандарт с цифровым разделителем запятой
t_acq_datetime := EZGPIB_TimeNow;
Save_File; // If result contains data, write data to the file
end;
end;
end;
EZGPIB_BusAutoOff;
EZGPIB_BusWriteData(GPIB_address_PS,'H'); // выключать выход TR6142 после измерений
end.
edit: Correction of the description of the macro.