DiodeTest
clear
ao = analogoutput('mcc');
cout = addchannel(ao,1);
set(ao,'TriggerType','Immediate');
ai = analoginput('mcc');
cin = addchannel(ai,0);
set(ai,'SamplesPerTrigger',10);
putdata(ao,4);
start(ao);
wait(ao,0.1);
start(ai);
[v t] = getdata(ai);
vr = mean(v);
fprintf('vr %g V\n',vr);
vr 2.02589 V
vi = linspace(0,4,41);
vo = zeros(size(vi));
for k = 1:length(vi);
putdata(ao,vi(k));
start(ao);
wait(ao,0.1);
start(ai);
v = getdata(ai);
vo(k) = mean(v);
end
idx = find(vi>2.0);
c = polyfit(vi(idx),vo(idx),1);
vt1 = -c(2)/c(1);
fprintf('vt1 %g V\n',vt1);
va = [vt1 max(vi)];
vb = polyval(c,va);
plot(vi,vo,va,vb,'k--','LineWidth',2);
grid;
xlabel('voltage in (V)');
ylabel('voltage out (V)');
vt1 1.81455 V
R = 267.44;
id = vo/R*1e3;
vd = vi-vo;
plot(vd,id,'LineWidth',2);
grid;
xlabel('diode voltage (V)');
ylabel('diode current (mA)');
daqstop;