Electronics > Metrology

Ultra Low Noise Reference 2DW232, 2DW233, 2DW23x

<< < (127/129) > >>

Pipelie:
Hi edavid,

the LNA I'm using is this one. https://www.eevblog.com/forum/metrology/diy-low-frenquency-noise-meter/50/
also check post #195 for user manual. https://www.eevblog.com/forum/metrology/diy-low-frenquency-noise-meter/175/

test method:
[attachimg=1]

result of 2DW234:
[attachimg=2]

and others


serg-el:
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

--- Code: ---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.                                             
--- End code ---


edit: Correction of the description of the macro.

serg-el:
After preheating with a current of 11.4 mA for an hour.
The measurement is more accurate.
The macro is the same.



The noises are low.
No telegraph noise visible.


Kleinstein:
With only some 12 mA the current is still moderate. In the earier reports the current to reach zero TC showed quite some scattering, possibly to high for practical use. The 12 mA are already higher than the nominal 7.5 mA, and the power loss makes it a little tricky to get a stable temperature.  AFAIK large temperature variations can still be a problem, as the voltage over temperature  looks like a parabola. To get a really stable voltage one still needs to be within some 5 K of the maximum.

The noise looks good - the big problem is that a direct measurement gives the combined noise of the DUT and reference inside the meter. It looks like the R6871E has a low noise reference. Chances are that much of the noise is from the meter and not so much from the DUT.
For a more stringent test, one may have to use 2 of the zeners and measure the difference.

dietert1:
Does this noise determination include the R6871E noise or is this a difference between two low noise references? As far as i understand it should be very easy for you to build a setup with two such references and the R6871E as a null meter.

By the way, the standard deviation of 0.29 uV means about 0.041 ppm of 7 V. Looks familiar - the two LTFLU references i made in Mai 2020 give about 0.030 ppm when looking at hourly and daily averages. In addition they exhibit drift processes that one wouldn't call noise. As far as i know a LTZ1000 performs similar as long as you forget about the price. So one might assume the noise of one zener can be as low as 0.02 ppm = 0.03 ppm / Sqrt(2)

Regards, Dieter

Navigation

[0] Message Index

[#] Next page

[*] Previous page

There was an error while thanking
Thanking...
Go to full version