#426

Поделиться
HTML-код
  • Опубликовано: 8 июн 2024
  • Episode 426
    Using a Keithley 2400 Source Meter to measure LED voltage currents curves
    RS232 controlled by Matlab (source code is down in the comments)
    Become a Patron
    / imsaiguy
  • НаукаНаука

Комментарии • 59

  • @taurnocerostradeguides
    @taurnocerostradeguides 3 месяца назад

    This was one of the instruments I just caught a eye on during a liquidation auction of a company. I am very grateful you have covered this machine !

  • @fredbloggs4829
    @fredbloggs4829 Год назад +1

    Hi. Thanks a lot for posting this.
    I have the 2015 and now I can do automated THD measurements from within Matlab - so I really appreciate you taking the effort to post this.
    Sometimes you just need someone to point you in the right direction to get something done.
    I think I'll transfer the code to Python and get Matlab to call Python, that way I can have generic Python scripts which can be called from different programs.

    • @IMSAIGuy
      @IMSAIGuy  Год назад +1

      I've had good luck with matlab but hit or miss using Octive. Let me know if you ever use that platform

  • @chrisgroenewegen3756
    @chrisgroenewegen3756 4 года назад

    Happy follower of your nice videos!!! Coincidentally I bumped into your LED test boxes. Well guess for which company I am working now (as an IT guy).

    • @IMSAIGuy
      @IMSAIGuy  4 года назад +1

      dutch last name? I can guess

  • @orgindy
    @orgindy 2 года назад

    hi thank you very much!
    if i want to measure more points and i change the numberofsteps something goes wrong in the graph.
    do you know this problem and how to fix? thanks again

  • @yueluo6530
    @yueluo6530 2 года назад

    Nice share. How to stay at the voltage when the sweep finished? Currently it shuts everything down.

  • @dixsusu
    @dixsusu Год назад

    12:02 LED people . Had a good laugh . That's a good one !

  • @hullinstruments
    @hullinstruments Год назад +1

    I feel dumb for asking this…
    I understand the importance of characterizing base components. But I was always a bit confused regarding smu's
    Most smu's I've seen only put out a very low amount of power usually under 20 Watts
    Obviously helpful for characterizing components but wouldn't it be more useful to have a source meter capable of higher powers?
    So that other pieces of test equipment and devices needing higher power could be tested and characterized?
    I feel really dumb asking this but any input would be greatly appreciated.

    • @IMSAIGuy
      @IMSAIGuy  Год назад

      read the datasheet. it outputs more power than you think
      www.testequipmentdepot.com/keithley/pdfs/2400_datasheet.pdf

  • @abujafarrasel9544
    @abujafarrasel9544 Год назад

    Hi,
    This code really helped me a lot. Do you think by modifying this code, I can use two Keithley 2400 together to get the transfer curve for a transistor?

    • @IMSAIGuy
      @IMSAIGuy  Год назад

      sure, one to set base current, the other do measure the curve

  • @ethanhill1757
    @ethanhill1757 Год назад

    Hello, would you be able to set this code up to make resistance measurements over a period of time? I am new to this, and am wondering if i just need to list a command with my time parameters.
    Thanks!

  • @OZ1LQO
    @OZ1LQO 2 года назад +1

    Envy is a sin, but holy cow do I ever wish an instrument like that was within my (economical) reach ;-) I have a decent lab, no complaints there, however I can still think of several situations where a box like this would come in handy :-)

  • @gulcindonmez2042
    @gulcindonmez2042 2 года назад

    Thank you for this work , could you say that which version of matlab did u use?

    • @IMSAIGuy
      @IMSAIGuy  2 года назад

      I don't know, fairly old. I tried to get GNU Octave running the code, but the RS232 are quite different and had problems.

    • @gulcindonmez2042
      @gulcindonmez2042 2 года назад

      @@IMSAIGuy thank you i tried also it gives many errors

    • @IMSAIGuy
      @IMSAIGuy  2 года назад

      @@gulcindonmez2042 which usb to 488 converter are you using?

    • @gulcindonmez2042
      @gulcindonmez2042 2 года назад

      @@IMSAIGuy usb to rs232

    • @IMSAIGuy
      @IMSAIGuy  2 года назад +1

      @@gulcindonmez2042 oh, rs232 is much easier. I would keep trying

  • @vikashkumar-cr7ee
    @vikashkumar-cr7ee 3 года назад

    Hi . I want to use Keithley source meter to get the V-I characteristic of laboratory-based fuel cell and solar cell, will it be possible to get it ?

    • @IMSAIGuy
      @IMSAIGuy  3 года назад

      you want to sink current and measure voltage? You will need to check the specs of the 2400. The current range may be too low for your application.

  • @Soren_Marodoren
    @Soren_Marodoren Год назад

    Hi,
    I have tried to use different SMUs during a couple of years and I don't understand them. I think it would be good to have a hands on tutorial. Can you make that?
    (Scripts and programs are very nice but it say anything about how complicated the instrument is to use. Did you spend 15 minutes or 15 hours making that script?)
    Yes, I have done several successful measurements with SMUs. But I have cheated a lot.
    I think the problem is my (and many others) mindset. I see the SMU as a PSU + DMM + some extra things...
    And PSUs are easy to use. Just turn them on, dial in the voltage and things start to work.
    So, when I try to configure the "SMU-PSU" as a voltage source and the "SMU-DMM" as a current meter to test my diode I get nothing out. It doesn't work.
    Then I try to add some parameters here and there, that I think can help, but it isn't. After 30 minutes of fiddeling, it starts working, and I don't understand why.
    I think the +10 lines for configuring the instrument in the video has a lot to tell here.
    The SMU is very special.
    So, I would like to have an introduction on HOW TO THINK when using an SMU.
    It shouldn't be that complicated. I just need to understand what is happening under the hood.
    (In the Keithely 2450 they have added quick settings that I really like. Keithley know the instrument is difficult to use.)
    Cheers,
    /Sören

    • @IMSAIGuy
      @IMSAIGuy  Год назад

      I have this: ruclips.net/video/qFVhe_uzxnE/видео.html

    • @IMSAIGuy
      @IMSAIGuy  Год назад

      they have a quick guide: www.tek.com/en/keithley-source-measure-units/smu-2400-series-sourcemeter-manual/2400-series-sourcemeter-quick-start

  • @muhammadsalik1900
    @muhammadsalik1900 Год назад

    Dear IMSAI Guy, with your code, I am ecnoutering an error which says that "The input buffer was filled before the Terminator was reached". Can please tell me how to solve it.

  • @MaverickTrustees
    @MaverickTrustees Год назад

    I love your video! Could you please share the GitHub link of the Matlab source code used in this video?

    • @IMSAIGuy
      @IMSAIGuy  Год назад +1

      read down the comments, I put the code there

  • @TastyTrekWithSoumya
    @TastyTrekWithSoumya 3 года назад

    how to use GPIB

  • @Kundizu
    @Kundizu 2 года назад

    I thought this would only work with LabVIEW. Thanks

  • @jeffmiskimins2357
    @jeffmiskimins2357 3 года назад

    Great demos! Can you share MATLAB code?

    • @IMSAIGuy
      @IMSAIGuy  3 года назад

      look down in the comments. I already did.

    • @jeffmiskimins2357
      @jeffmiskimins2357 3 года назад

      @@IMSAIGuy My apologies, I should've clicked on 'Read more' as that is where the code is hiding ;). By the way, you mentioned github in your video. Is the actual m-file there, and if so, could you post a link?

    • @IMSAIGuy
      @IMSAIGuy  3 года назад +1

      @@jeffmiskimins2357 no not there

  • @irishguy200007
    @irishguy200007 3 года назад

    Does it have a linear power supply

    • @IMSAIGuy
      @IMSAIGuy  3 года назад

      No it has switchers but non standard: xdevs.com/fix/kei2400/#mainsp

    • @irishguy200007
      @irishguy200007 3 года назад

      So it's has a switch mode power supply

  • @karmrachid2529
    @karmrachid2529 3 года назад

    Could you Please share the Matlab code !!!

    • @IMSAIGuy
      @IMSAIGuy  3 года назад

      look down the comments. it is there

  • @basmahempowers4810
    @basmahempowers4810 3 года назад

    Can you plz share the code? It is not down there.

    • @IMSAIGuy
      @IMSAIGuy  3 года назад +2

      yes it is, but here it is again:
      close all
      clear all
      maxcurrent = 0.030; %set max current in Amps
      minvoltage = 8; %set min voltage
      maxvoltage = 9; %set max voltage
      numberofsteps=18;
      numsteps=num2str(numberofsteps+1);
      maxv=num2str(maxvoltage);
      maxc=num2str(maxcurrent);
      stepc=num2str(maxcurrent/numberofsteps);
      stepv=num2str((maxvoltage-minvoltage)/numberofsteps);
      minv=num2str(minvoltage);
      obj1=serial('COM4','baudrate',19200,'terminator',13);
      % Model 2400 Specific Functions
      % Sweep current and measure back voltage
      fopen(obj1)
      fprintf(obj1,':*RST')
      % setup the 2400 to generate an SRQ on buffer full
      fprintf(obj1,':*ESE 0')
      fprintf(obj1,':*CLS')
      fprintf(obj1,':STAT:MEAS:ENAB 1024')
      fprintf(obj1,':*SRE 1')
      % buffer set up
      fprintf(obj1,':TRAC:CLE')
      fprintf(obj1,[':TRAC:POIN ' numsteps]) % buffer size
      % Set up the Sweep
      fprintf(obj1,':SOUR:FUNC:MODE VOLT')
      fprintf(obj1,[':SOUR:VOLT:STAR ' minv])
      fprintf(obj1,[':SOUR:VOLT:STOP ' maxv])
      fprintf(obj1,[':SOUR:VOLT:STEP ' stepv])
      fprintf(obj1,':SOUR:CLE:AUTO ON')
      fprintf(obj1,':SOUR:VOLT:MODE SWE')
      fprintf(obj1,':SOUR:SWE:SPAC LIN')
      fprintf(obj1,':SOUR:DEL:AUTO OFF')
      fprintf(obj1,':SOUR:DEL 0.10')
      fprintf(obj1,':SENS:FUNC "CURR"')
      fprintf(obj1,':SENS:FUNC:CONC ON')
      fprintf(obj1,':SENS:CURR:RANG:AUTO ON')
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % IMPORTANT: if the unit goes into compliance,
      % adjust the compliance or the range value
      fprintf(obj1,[':SENS:CURR:PROT:LEV ' maxc]) % voltage compliance
      % if maxvoltage>20
      % fprintf(obj1,':SENS:VOLT:RANG 200') % volt measurement range
      % else
      % fprintf(obj1,':SENS:VOLT:RANG 20') % volt measurement range
      % end
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      fprintf(obj1,':SENS:CURR:NPLC 1')
      fprintf(obj1,':FORM:ELEM:SENS VOLT,CURR')
      fprintf(obj1,[':TRIG:COUN ' numsteps])
      fprintf(obj1,':TRIG:DEL 0.001')
      fprintf(obj1,':SYST:AZER:STAT OFF')
      fprintf(obj1,':SYST:TIME:RES:AUTO ON')
      fprintf(obj1,':TRAC:TST:FORM ABS')
      fprintf(obj1,':TRAC:FEED:CONT NEXT')
      fprintf(obj1,':OUTP ON')
      fprintf(obj1,':INIT')
      % Used the serail poll function to wait for SRQ
      pause(2);
      fprintf(obj1,':TRAC:DATA?')
      %
      %C=fscanf(obj1,%f%);
      B = fscanf(obj1);
      A = str2num(B);
      %
      % % parse the data & plot
      Curr=A(2:2:size(A,2));
      Volts=A(1:2:size(A,2)-1);
      %
      figure(1);
      %line([minvoltage maxvoltage],[max(Curr) max(Curr)],'color','g','linewidth',5)
      hold on
      plot(Volts,Curr,':bo','LineWidth',0.5,...
      'MarkerEdgeColor','k',...
      'MarkerFaceColor','r',...
      'MarkerSize',5)
      ylabel('Measured-current (A)'),xlabel('Source-volts (V)')
      title('Keithley 2400: Sweeps V & Measure I');
      grid on
      % reset all the registers & clean up
      % if the registers are not properly reset,
      % subsequent runs will not work!
      fprintf(obj1,'*RST')
      fprintf(obj1,':*CLS ')
      fprintf(obj1,':*SRE 0')
      % % make sure STB bit is 0
      % STB = query(obj1, '*STB?');
      fclose(obj1)
      delete(obj1)
      clear obj1
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    • @abujafarrasel9544
      @abujafarrasel9544 3 года назад

      @@IMSAIGuy Thanks, it works. Can you also share the source current measure voltage code?

  • @jerrylicojl4651
    @jerrylicojl4651 3 года назад

    Hi, excellent work.
    Can u share the VI.m code?

    • @IMSAIGuy
      @IMSAIGuy  3 года назад

      In the comments down below

    • @jerrylicojl4651
      @jerrylicojl4651 3 года назад

      How to change code to GPIB connection?
      As I wish to use GPIB

    • @IMSAIGuy
      @IMSAIGuy  3 года назад +2

      @@jerrylicojl4651 You are on your own.

  • @TastyTrekWithSoumya
    @TastyTrekWithSoumya 3 года назад

    can you share code pls

    • @IMSAIGuy
      @IMSAIGuy  3 года назад

      look down the comments, it is there

  • @MuhammadSalman-dh1uk
    @MuhammadSalman-dh1uk 3 года назад +1

    Can you share MATLAB code??

    • @MuhammadSalman-dh1uk
      @MuhammadSalman-dh1uk 3 года назад

      MATLAB version?

    • @IMSAIGuy
      @IMSAIGuy  3 года назад +1

      @@MuhammadSalman-dh1uk close all
      clear all
      maxcurrent = 0.030; %set max current in Amps
      minvoltage = 8; %set min voltage
      maxvoltage = 9; %set max voltage
      numberofsteps=18;
      numsteps=num2str(numberofsteps+1);
      maxv=num2str(maxvoltage);
      maxc=num2str(maxcurrent);
      stepc=num2str(maxcurrent/numberofsteps);
      stepv=num2str((maxvoltage-minvoltage)/numberofsteps);
      minv=num2str(minvoltage);
      obj1=serial('COM4','baudrate',19200,'terminator',13);
      % Model 2400 Specific Functions
      % Sweep current and measure back voltage
      fopen(obj1)
      fprintf(obj1,':*RST')
      % setup the 2400 to generate an SRQ on buffer full
      fprintf(obj1,':*ESE 0')
      fprintf(obj1,':*CLS')
      fprintf(obj1,':STAT:MEAS:ENAB 1024')
      fprintf(obj1,':*SRE 1')
      % buffer set up
      fprintf(obj1,':TRAC:CLE')
      fprintf(obj1,[':TRAC:POIN ' numsteps]) % buffer size
      % Set up the Sweep
      fprintf(obj1,':SOUR:FUNC:MODE VOLT')
      fprintf(obj1,[':SOUR:VOLT:STAR ' minv])
      fprintf(obj1,[':SOUR:VOLT:STOP ' maxv])
      fprintf(obj1,[':SOUR:VOLT:STEP ' stepv])
      fprintf(obj1,':SOUR:CLE:AUTO ON')
      fprintf(obj1,':SOUR:VOLT:MODE SWE')
      fprintf(obj1,':SOUR:SWE:SPAC LIN')
      fprintf(obj1,':SOUR:DEL:AUTO OFF')
      fprintf(obj1,':SOUR:DEL 0.10')
      fprintf(obj1,':SENS:FUNC "CURR"')
      fprintf(obj1,':SENS:FUNC:CONC ON')
      fprintf(obj1,':SENS:CURR:RANG:AUTO ON')
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % IMPORTANT: if the unit goes into compliance,
      % adjust the compliance or the range value
      fprintf(obj1,[':SENS:CURR:PROT:LEV ' maxc]) % voltage compliance
      % if maxvoltage>20
      % fprintf(obj1,':SENS:VOLT:RANG 200') % volt measurement range
      % else
      % fprintf(obj1,':SENS:VOLT:RANG 20') % volt measurement range
      % end
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      fprintf(obj1,':SENS:CURR:NPLC 1')
      fprintf(obj1,':FORM:ELEM:SENS VOLT,CURR')
      fprintf(obj1,[':TRIG:COUN ' numsteps])
      fprintf(obj1,':TRIG:DEL 0.001')
      fprintf(obj1,':SYST:AZER:STAT OFF')
      fprintf(obj1,':SYST:TIME:RES:AUTO ON')
      fprintf(obj1,':TRAC:TST:FORM ABS')
      fprintf(obj1,':TRAC:FEED:CONT NEXT')
      fprintf(obj1,':OUTP ON')
      fprintf(obj1,':INIT')
      % Used the serail poll function to wait for SRQ
      pause(2);
      fprintf(obj1,':TRAC:DATA?')
      %
      %C=fscanf(obj1,%f%);
      B = fscanf(obj1);
      A = str2num(B);
      %
      % % parse the data & plot
      Curr=A(2:2:size(A,2));
      Volts=A(1:2:size(A,2)-1);
      %
      figure(1);
      %line([minvoltage maxvoltage],[max(Curr) max(Curr)],'color','g','linewidth',5)
      hold on
      plot(Volts,Curr,':bo','LineWidth',0.5,...
      'MarkerEdgeColor','k',...
      'MarkerFaceColor','r',...
      'MarkerSize',5)
      ylabel('Measured-current (A)'),xlabel('Source-volts (V)')
      title('Keithley 2400: Sweeps V & Measure I');
      grid on
      % reset all the registers & clean up
      % if the registers are not properly reset,
      % subsequent runs will not work!
      fprintf(obj1,'*RST')
      fprintf(obj1,':*CLS ')
      fprintf(obj1,':*SRE 0')
      % % make sure STB bit is 0
      % STB = query(obj1, '*STB?');
      fclose(obj1)
      delete(obj1)
      clear obj1
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    • @IMSAIGuy
      @IMSAIGuy  3 года назад

      @@MuhammadSalman-dh1uk 7.0.1

    • @MuhammadSalman-dh1uk
      @MuhammadSalman-dh1uk 3 года назад

      @@IMSAIGuy thanks

  • @samyto141
    @samyto141 2 года назад

    Hello IMSAI guy, your program help me very much with my investigation, Can you please help me to extract the data so i can do graphics in origin or excel? or how can i modify the program, i am new in mathlab

    • @IMSAIGuy
      @IMSAIGuy  2 года назад

      www.mathworks.com/help/matlab/import_export/exporting-to-excel-spreadsheets.html

    • @samyto141
      @samyto141 2 года назад

      @@IMSAIGuy Thanks!

  • @onenite2nite
    @onenite2nite 2 года назад

    i just want o set up as a dmm without auto

    • @IMSAIGuy
      @IMSAIGuy  2 года назад

      set current mode, I=0, measure V

  • @protechultra
    @protechultra 5 месяцев назад

    Bhai Hindi Mai bol sakte ho kya 😅