Calibration - Alshain-Oy/Strix GitHub Wiki
Calibration
All Strix units come with per-unit calibration parameters written into their internal EEPROM memory. This document describes how user can perform their own calibration if a need should rise.
Helper scripts
Script | Usage | Description |
---|---|---|
read-comp-params.py | py read-comp-params.py COMx > params.json | Reads currently used compensation parameters from the unit. Use this to backup current parameters before attempting calibration! |
write-params.py | py write-params.py COMx params.json | Writes compensation paramters from file to the units RAM, these are overwritten during boot from EEPROM. |
write-params-eeprom.py | py write-params-eeprom.py COMx params.json | Writes compensation paramters from file to the units EEPROM, these are loaded to RAM during boot. Writing parameters to EEPROM does not load them to RAM so use write-params.py to do that. |
manual-calibration-imeas.py | py manual-calibration-imeas.py COMx | Example script how to perform manual calibration of current measurements using a shunt resistor and external multimeter. |
params-nocomp.json | - | File containing unity-gain parameters for clearing out all compensations. |
These scripts are located in the calibration folder.
Example: current measurement calibration
Script for manual current measurement calibration is provided in the git repository. It also serves as a template for more sophisticated calibration routines.
Setup & measurement
A very simple shunt resistor method is used:
- Suitable shunt resistor with a known resistance is placed between Vdrive+ and Vdrive-.
- DMM is connected parallel to the shunt resistor.
- Voltage is swept over the resistor, current is measured with the unit and voltage drop over the resistor with the DMM.
- Polynomial is fitted the measurements ( Strix supports up to 3rd order compensation polynomials ).
- Computed parameters are written to the units RAM.
- Same sweep is done again to verify that the compensation was correct.
This could be improved by either using a DMM with current measurement capabilities and placing it in series with the shunt resistor or by using a programmable current source and skipping the shunt resistor altogether.
List of compensation parameters
# All compensation polynomials are of form Out(x) = P[0] + P[1]*x + P[2]*x^2 + P[3]*x^3
# Vdrive, range div10 (±300mV)
PARAM_COMP_VDRIVE_DIV10_0
PARAM_COMP_VDRIVE_DIV10_1
PARAM_COMP_VDRIVE_DIV10_2
PARAM_COMP_VDRIVE_DIV10_3
# Vdrive, range 1x (±2.5V)
PARAM_COMP_VDRIVE_1X_0
PARAM_COMP_VDRIVE_1X_1
PARAM_COMP_VDRIVE_1X_2
PARAM_COMP_VDRIVE_1X_3
# Vdrive, range 10x (±20V)
PARAM_COMP_VDRIVE_10X_0
PARAM_COMP_VDRIVE_10X_1
PARAM_COMP_VDRIVE_10X_2
PARAM_COMP_VDRIVE_10X_3
# V mesurement, range 1x (±20V)
PARAM_COMP_VMEAS_1X_0
PARAM_COMP_VMEAS_1X_1
PARAM_COMP_VMEAS_1X_2
PARAM_COMP_VMEAS_1X_3
# V mesurement, range 8x (±2.5V)
PARAM_COMP_VMEAS_8X_0
PARAM_COMP_VMEAS_8X_1
PARAM_COMP_VMEAS_8X_2
PARAM_COMP_VMEAS_8X_3
# V mesurement, range 64x (±300mV)
PARAM_COMP_VMEAS_64X_0
PARAM_COMP_VMEAS_64X_1
PARAM_COMP_VMEAS_64X_2
PARAM_COMP_VMEAS_64X_3
# I mesurement, range 1 (±10mA)
PARAM_COMP_IMEAS_1_0
PARAM_COMP_IMEAS_1_1
PARAM_COMP_IMEAS_1_2
PARAM_COMP_IMEAS_1_3
# I mesurement, range 2 (±100µA)
PARAM_COMP_IMEAS_2_0
PARAM_COMP_IMEAS_2_1
PARAM_COMP_IMEAS_2_2
PARAM_COMP_IMEAS_2_3
# I mesurement, range 3 (±1µA)
PARAM_COMP_IMEAS_3_0
PARAM_COMP_IMEAS_3_1
PARAM_COMP_IMEAS_3_2
PARAM_COMP_IMEAS_3_3
# I mesurement, range 4 (±10nA)
PARAM_COMP_IMEAS_4_0
PARAM_COMP_IMEAS_4_1
PARAM_COMP_IMEAS_4_2
PARAM_COMP_IMEAS_4_3
# Idrive, range 1 (±10mA)
PARAM_COMP_IDRIVE_1_0
PARAM_COMP_IDRIVE_1_1
PARAM_COMP_IDRIVE_1_2
PARAM_COMP_IDRIVE_1_3
# Idrive, range 2 (±100µA)
PARAM_COMP_IDRIVE_2_0
PARAM_COMP_IDRIVE_2_1
PARAM_COMP_IDRIVE_2_2
PARAM_COMP_IDRIVE_2_3
# Idrive, range 3 (±1µA)
PARAM_COMP_IDRIVE_3_0
PARAM_COMP_IDRIVE_3_1
PARAM_COMP_IDRIVE_3_2
PARAM_COMP_IDRIVE_3_3
# Idrive, range 4 (±10nA)
PARAM_COMP_IDRIVE_4_0
PARAM_COMP_IDRIVE_4_1
PARAM_COMP_IDRIVE_4_2
PARAM_COMP_IDRIVE_4_3
# Four-wire measurement
PARAM_COMP_4W_VMEAS_0
PARAM_COMP_4W_VMEAS_1
PARAM_COMP_4W_VMEAS_2
PARAM_COMP_4W_VMEAS_3
# Four-wire Vdrive
PARAM_COMP_4W_VDRIVE_0
PARAM_COMP_4W_VDRIVE_1
PARAM_COMP_4W_VDRIVE_2
PARAM_COMP_4W_VDRIVE_3
# V measurement, external input, range 1x (±1V)
PARAM_COMP_VEXT_1X_0
PARAM_COMP_VEXT_1X_1
PARAM_COMP_VEXT_1X_2
PARAM_COMP_VEXT_1X_3
# V measurement, external input, range 8x (±125mV)
PARAM_COMP_VEXT_8X_0
PARAM_COMP_VEXT_8X_1
PARAM_COMP_VEXT_8X_2
PARAM_COMP_VEXT_8X_3
# V measurement, external input, range 64x (±15mV)
PARAM_COMP_VEXT_64X_0
PARAM_COMP_VEXT_64X_1
PARAM_COMP_VEXT_64X_2
PARAM_COMP_VEXT_64X_3
# All temperature compensation polynomials are of form Out(T) = (1 + gain * (T - T0) )
# Tempco for Vdrive, range div10
PARAM_TEMPCO_VDRIVE_DIV10_GAIN
PARAM_TEMPCO_VDRIVE_DIV10_T0
# Tempco for Vdrive, range 1x
PARAM_TEMPCO_VDRIVE_1X_GAIN
PARAM_TEMPCO_VDRIVE_1X_T0
# Tempco for Vdrive, range 10x
PARAM_TEMPCO_VDRIVE_10X_GAIN
PARAM_TEMPCO_VDRIVE_10X_T0
# Tempco for V measurement, range 1x
PARAM_TEMPCO_VMEAS_1X_GAIN
PARAM_TEMPCO_VMEAS_1X_T0
# Tempco for V measurement, range 8x
PARAM_TEMPCO_VMEAS_8X_GAIN
PARAM_TEMPCO_VMEAS_8X_T0
# Tempco for V measurement, range 64x
PARAM_TEMPCO_VMEAS_64X_GAIN
PARAM_TEMPCO_VMEAS_64X_T0
# Tempco for I measurement, range 1
PARAM_TEMPCO_IMEAS_1_GAIN
PARAM_TEMPCO_IMEAS_1_T0
# Tempco for I measurement, range 2
PARAM_TEMPCO_IMEAS_2_GAIN
PARAM_TEMPCO_IMEAS_2_T0
# Tempco for I measurement, range 3
PARAM_TEMPCO_IMEAS_3_GAIN
PARAM_TEMPCO_IMEAS_3_T0
# Tempco for I measurement, range 4
PARAM_TEMPCO_IMEAS_4_GAIN
PARAM_TEMPCO_IMEAS_4_T0
# Tempco for Idrive, range 1
PARAM_TEMPCO_IDRIVE_1_GAIN
PARAM_TEMPCO_IDRIVE_1_T0
# Tempco for Idrive, range 2
PARAM_TEMPCO_IDRIVE_2_GAIN
PARAM_TEMPCO_IDRIVE_2_T0
# Tempco for Idrive, range 3
PARAM_TEMPCO_IDRIVE_3_GAIN
PARAM_TEMPCO_IDRIVE_3_T0
# Tempco for Idrive, range 4
PARAM_TEMPCO_IDRIVE_4_GAIN
PARAM_TEMPCO_IDRIVE_4_T0
# Tempco for four-wire measurement
PARAM_TEMPCO_4W_VMEAS_GAIN
PARAM_TEMPCO_4W_VMEAS_T0
# Tempco for four-wire drive
PARAM_TEMPCO_4W_VDRIVE_GAIN
PARAM_TEMPCO_4W_VDRIVE_T0
# Tempco for V measurement, external input, range 1x
PARAM_TEMPCO_VEXT_1X_GAIN
PARAM_TEMPCO_VEXT_1X_T0
# Tempco for V measurement, external input, range 8x
PARAM_TEMPCO_VEXT_8X_GAIN
PARAM_TEMPCO_VEXT_8X_T0
# Tempco for V measurement, external input, range 64x
PARAM_TEMPCO_VEXT_64X_GAIN
PARAM_TEMPCO_VEXT_64X_T0