Differential-Amplifier/Amplifier Calibration/Amplifier Readings.js

65 lines
2.4 KiB
JavaScript

clear(); // Clears window
var total_loops = 100;
var average_duration = 1;
var lower_end = -20; // Smallest mV to test
var upper_end = 20; // Largest mV to test
var step_size = 0.5; // Step size in mV
if(!('Scope' in this)) throw "Please open a Scope instrument";
if (!('Wavegen' in this)) throw "Please open a Wavegen instrument";
Wavegen.Channel1.Mode.text = "Simple";
Wavegen.run();
Scope.run();
// Set the scope window width
Scope1.Time.Position.value = 0;
Scope1.Time.Base.value = average_duration; // Total window width
Scope1.Channel1.Range.value = 10;
// Turn on the power supplies
Supplies.Output.PositiveSupply.Enable.Value = 1;
Supplies.Output.NegativeSupply.Enable.Value = 1;
Supplies.Output.PositiveSupply.Voltage.value = 5;
Supplies.Output.NegativeSupply.Voltage.value = -5;
Supplies.MasterEnable.checked = 1;
print("Wavegen Output (mV),Wavegen Measured (mV),Diff Amplifier Measured (V),Single Amplifier Measured (V),Ideal Wavegen Gain,Real Wavegen Gain");
for (var i = 0; i < total_loops; i++) {
for (var offset = lower_end; offset <= upper_end; offset += step_size) {
var desired_output_voltage = offset / 1000
Wavegen.Channel1.Simple.Offset.value = desired_output_voltage; // Set offset for desired output voltage
wait(average_duration + 0.2);
var diff_amp_out = Scope.Channel1.measure("Average");
var average_wavegen_reading = Scope.Channel2.measure("Average");
var single_amp_out = diff_amp_out + 5; // Single ended assuming we provided GND and 10V
var real_gain = diff_amp_out / average_wavegen_reading;
var ideal_gain = diff_amp_out / offset * 1000;
var output = offset + "," + ((average_wavegen_reading)*1000).toFixed(3) + "," + (diff_amp_out.toFixed(3)) + "," + (single_amp_out.toFixed(3)) + ","+ (ideal_gain.toFixed(3)) + "," + real_gain.toFixed(3);
print(output);
/*
// Debug stuff
print("Desired Wavegen = " + (offset) + " mV");
print("Measured Wavegen = " + (average_wavegen_reading*1000) + " mV");
print("Measured Amplifier Output = " + (average_reading) + " V");
print("Calculated Gain from Ideal Wavegen = " + (average_reading / offset * 1000));
print("Calculated Gain from Actual Wavegen = " + (gain));
*/
}
}
Wavegen.Channel1.Simple.Offset.value = 0; // Turn off the wavegen
Supplies.MasterEnable.checked = 0; // Turn off the supplies