|
|
@@ -4,25 +4,39 @@ grep ^1 log | tail -n +125 > log-locked |
|
|
|
|
|
|
|
octave: |
|
|
|
|
|
|
|
octave:1> a=load("log-locked"); |
|
|
|
octave:2> len=size(a,1) |
|
|
|
octave:3> t=1:10000; |
|
|
|
octave:5> keith=a(:,3); |
|
|
|
octave:7> calib=a(1,4) |
|
|
|
|
|
|
|
octave:8> dac=a(:,5); |
|
|
|
octave:9> adc=a(:,6); |
|
|
|
octave:12> meas=-(dac - calib * adc); |
|
|
|
octave:25> plot(keith(t),meas(t)) |
|
|
|
octave:48> p = polyfit(keith, meas, 1) |
|
|
|
|
|
|
|
octave:59> plot(t,keith(t) * p(1) + p(2),t,meas(t)) |
|
|
|
octave:66> t=1:len; |
|
|
|
octave:73> plot(t,keith(t) * p(1) + p(2) - meas(t)) |
|
|
|
octave:75> axis([0 len -5 -5]) |
|
|
|
a=load("log-locked"); |
|
|
|
len=size(a,1) |
|
|
|
t=1:10000; |
|
|
|
keith=a(:,3); |
|
|
|
calib=a(1,4) |
|
|
|
|
|
|
|
dac=a(:,5); |
|
|
|
adc=a(:,6); |
|
|
|
meas=-(dac - calib * adc); |
|
|
|
plot(keith(t),meas(t)) |
|
|
|
p = polyfit(keith, meas, 1) |
|
|
|
|
|
|
|
plot(t,keith(t) * p(1) + p(2),t,meas(t)) |
|
|
|
t=1:len; |
|
|
|
plot(t,keith(t) * p(1) + p(2) - meas(t)) |
|
|
|
axis([0 len -1 1]) |
|
|
|
|
|
|
|
Range is something like +- 0.5 over the entire range (of "DAC values") |
|
|
|
This gives log(1024 / 0.5) / log(2) = 11 bits |
|
|
|
|
|
|
|
No good! |
|
|
|
Now let's convert the DAC values to their more-accurate value using the lookup table |
|
|
|
|
|
|
|
lookup=load("../../../firmware/lookup.inc"); |
|
|
|
size(lookup) |
|
|
|
meas=-(lookup(dac + 1)/64 - calib * adc); |
|
|
|
p = polyfit(keith, meas, 1) |
|
|
|
t=1:len; |
|
|
|
plot(t,keith(t) * p(1) + p(2) - meas(t)) |
|
|
|
axis([0 len -0.3 0.3]) |
|
|
|
|
|
|
|
Now closer to +- 0.1 |
|
|
|
This gives log(1024 / 0.1) / log(2) = 13.3 bits |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|