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