October 6, 2026 Haris Turkmanović

How to Perform the Calibration Procedure

GUICalibrationGuideEPP
How to Perform the Calibration Procedure

This guide walks through calibrating an OpenEPT Energy Profiler Probe (EPP) end to end, on a real board, using the automatic calibration wizard. It is a practical companion to the implementation write-up, Autocalibration Procedure is Implemented, which explains what happens inside the wizard; here we simply do it.

What you need depends on what you want to calibrate:

  • Voltage, current and load (the full procedure shown here): an external voltage generator is required. It supplies the known voltage the voltage channel is tuned against, and it keeps the input energized so the load can sink current while the current and load channels are calibrated.
  • Voltage only: the board's internal 2.049 V precision reference is enough; no external equipment is needed. See the voltage-reference section of the implementation post for how that reference is wired.

In this example we calibrate all three channels, so we use an external generator set to 3.799 V.

1. Bench setup

Connect the board and the external voltage generator, and start the acquisition in the GUI. The automatic calibration uses the real-time averaged voltage and current, so acquisition must be running before you start.

The calibration bench: the OpenEPT board and the external voltage generator
The bench: OpenEPT board powered and connected to the external voltage generator.

2. Select the reference input with jumper J12

The ADC voltage input is routed either from the battery divider or from the reference line, and that choice is made with the ADC IN Selection jumper J12. For calibration with an external generator, set J12 so the ADC reads the voltage reference input.

The ADC IN Selection jumper J12 set to the voltage reference position
Jumper J12 selects the ADC voltage input; set it to the reference position for calibration.

3. Set the generator voltage

Set the external generator to the voltage you will calibrate against. Here it is set to 3.799 V with no load current drawn yet.

The external generator set to 3.799 V
The generator output set to 3.799 V before the procedure starts.

4. Start the wizard and configure the run

Open the Calibration window and press Start auto calibration. A single setup window opens; fill it in as follows:

The automatic calibration setup window configured for an external 3.799 V reference
Setup: External value 3.799 V, 10 current-span points, 10 load points, 2399 mA maximum for both.
  • Voltage reference: External value, set to 3.799 V. This is the voltage held on the input by the generator. Choosing an external value skips the disconnect and jumper prompts, so the procedure runs straight through.
  • Current span points: 10 and Load points: 10 set how many currents are driven in each stage.
  • Maximum current: 2399 mA for both the span and the load, the upper current the sweeps reach (capped at the board's maximum).

Press OK to begin.

5. Voltage channel

The wizard first tunes the voltage correction so the measured voltage matches the reference. There is nothing to do here; it adjusts the coefficient and waits for the reading to settle. In this run the correction moved to 1.33072 and the channel was accepted at a measured 3.799 V, matching the generator exactly.

6. Current channel: zero

With the load disabled, the current should read zero. The wizard tunes the current offset until the measurement sits on zero. The graph below shows the effect: the current trace starts biased low (around −3.5 mA) and, once the offset is applied, recenters on 0 mA.

The current trace recentering on zero after the offset is tuned
Zero calibration: the current noise band moves from roughly −3.5 mA to centered on 0 mA.

7. Current channel: span

Now the wizard drives a series of known currents through the load and, at each point, asks you to type the true current you read on the generator. This is what calibrates the current measurement: the wizard compares what it measures against your reference reading, not against what it requested.

Left: the wizard's prompt for span point 1. Right: the generator display
Span point 1: the wizard measured 58.6 mA and asks for the true value; the generator reads 0.059 A (59 mA), so that is what you enter.

Enter the generator reading at each of the ten points. After the last point the wizard computes the current correction (here 0.99865) and does a final zero re-check before moving to the load.

8. Load channel

With the current channel now trusted, the load calibration runs on its own, with no input needed. The wizard drives the ten load currents and records what the calibrated current channel measures, then fits the load DAC. The capture below shows both staircases: the current span sweep first, then the load tuning sweep.

The current-span and load-tuning current staircases
Both sweeps: the current-span staircase (reference entered per step) followed by the load-tuning staircase (measured automatically).

9. Results

When all three channels are done, the wizard reports the coefficients it changed, old value next to new.

The automatic calibration finished dialog listing the changed coefficients
The run changed five coefficients: voltage correction, voltage current offset, current correction, and the load DAC offset and correction.

For reference, the complete log of this run:

Calibration started
Current span: 10 points, max 2399 mA
Load: 10 points, max 2399 mA
External reference 3.7990 V, jumper steps skipped
Voltage 3.7884 V, correction -> 1.33072
Voltage channel OK, measured 3.7990 V
Current -3.50 mA, offset -> adjusting
Current zero OK, measured -0.03 mA
Source detected at 3.799 V
Current span: 10 points from 100 mA to 2399 mA, you enter the reference at each
Span point 1: measured 58.56 mA, reference 59.00 mA
Span point 2: measured 210.09 mA, reference 210.00 mA
...
Span point 10: measured 1436.77 mA, reference 1434.00 mA
Current correction -> 0.99865
Current zero re-check OK, measured -0.09 mA
Load tuning: 10 points from 100 mA to 2399 mA (max 2999 mA)
Load fit over 10 points: slope 0.5988, intercept -4.51 mA
Load channel OK, correction 1.6699, offset 7.54 mA
Changed calibration coefficients:
  Voltage correction:  1.32700  ->  1.33072
  Voltage C. offset:   1.63300  ->  1.63152
  Current correction:  1.00000  ->  0.99865
  Load DAC offset:     0.00     ->  7.54
  Load DAC correction: 1.0000   ->  1.6699
All channels calibrated

10. Finish and save

Press Finish. The new coefficients are written into the Calibration window, where you can review them.

The Calibration window populated with the new coefficients after Finish
After Finish, the coefficients land in the Calibration window, ready to be applied or stored.

Two buttons decide what happens next:

  • Submit: apply the coefficients to the running device now. They take effect immediately but are not persisted; a power cycle loses them.
  • Store: write the coefficients to the device's file system permanently, so the board keeps its calibration across power cycles.

For a one-off check, Submit is enough; to finish the calibration for good, press Store.

About the author

Haris Turkmanović

Haris Turkmanović

Teaching Assistant

Embedded Software Architect and Project Manager

Since 2018, I have been an employee at the Department of Electronics and Digital Systems, which is part of the Faculty of Electrical Engineering at the University of Belgrade. Beginning in 2019, I also assumed the role of a teaching assistant in the same department while concurrently pursuing my doctoral studies. The main objective of my research revolves around sub-areas of embedded systems. This includes distributed embedded systems, IoT systems, battery-powered embedded systems, and developing optimized software solutions for embedded platforms.