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.
![](https://img.radiokot.ru/files/98285/thumbnail/2fexz2n4au.jpg)
![](https://img.radiokot.ru/files/98285/thumbnail/2fexz2hdyx.jpg)
![](https://img.radiokot.ru/files/98285/thumbnail/2fexz2bf2k.jpg)
The legs are entirely made of kovar.
They are attracted by the magnet quite strongly.
![](https://img.radiokot.ru/files/98285/thumbnail/2fexz26hqh.jpg)
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.
![](https://img.radiokot.ru/files/98285/thumbnail/2fey3p9nqk.jpg)
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.
![](https://img.radiokot.ru/files/98285/thumbnail/2fexs4xhrr.jpg)
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.
![](https://img.radiokot.ru/files/98285/thumbnail/2fexs51mjt.jpg)
![](https://img.radiokot.ru/files/98285/thumbnail/2fexs4s67h.jpg)
The dynamic resistance is calculated based on the set current and the measured voltage.
![](https://img.radiokot.ru/files/98285/thumbnail/2fexs4kfdy.jpg)
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.