SDAA253 January 2026 TPSI2240-Q1
When SW2 is ON, the response follows the exponential decay equation:
where Vinf is the final settled voltage (t = infinity) and Vo is the difference between the initial voltage at time zero, , and Vinf. Refer to Figure 2-9 to help understand the concept.
The settling voltage, Vinf, is of specific interest. The three unknowns in this equation are Vinf, , and Vo. If the ADC measures three sample voltages at three different times, a system of three equations is created:
By using t2 = 2*t1, the equations become:
Now, let x = and the equations become:
The calculation for Vinf is heavily simplified:
The MATLAB script used to solve for the system of equations is:
%% solution for exponential decay
clc
syms vt0 vt1 vt2 vinf v0 x
eq1 = vt0 == vinf+v0;
eq2 = vt1 == vinf+v0*x;
eq3 = vt2 == vinf+v0*x*x;
eq4 = vt0 ~= vt1;
eqns = [eq1, eq2, eq3, eq4];
[vinf, v0, x, para, conditions] = solve(eqns,[vinf, v0, x],ReturnConditions=true)In the TIDA-010985 default code, the time spacing between the three samples is 330ms. This verifies the total IMD measurement cycle time is under 2s while making the fixed-point computation straightforward. To change the default cycle time, the user can do one of the following:
#define SamplesSize 2000 // ADC buffer size
#define E1 990 // total time for Riso measurement is 2xE1 in ms The time constant is calculated with the following equation:
For isolation resistance, only Vinf is necessary. For the total system Y-cap (CisoP + CisoN), approximate V'(t) at with two adjacent ADC measurements. Then Ciso is:
Figure 2-9 Example Voltage Decay Curve with ADC Samples
Used for Prediction AlgorithmA similar analysis can be done for the charging curve. If the ADC measures three sample voltages at three different times, a system of three equations is created for the charging curve:
Note that is the initial voltage at time. By using t2 = 2*t1, the equations become:
Now, let x = and the equations become:
Note, the steady state voltage, Vinf, is:
The calculation for the system of equations is heavily simplified (given t2 = 2*t1) and thus Vinf is:
The MATLAB script used to solve for the system of equations is:
%% charging solution
clc
syms vt0 vt1 vt2 vi v0 x
eq1 = vt0 == vi;
eq2 = vt1 == vi+ v0*(1-x);
eq3 = vt2 == vi+ v0*(1-x*x);
eq4 = vt0 ~= vt1;
eqns = [eq1, eq2, eq3, eq4];
%
[svi, sv0, sx, para, conditions] = solve(eqns,[vi, v0, x],ReturnConditions=true)One important consideration is knowing when to apply the prediction algorithm. If the voltage has a fast settling time, the prediction algorithm is not needed. It is more practical to just wait a little longer in time before solving for Riso or Ciso. Currently, the SW does some basic checks based on the voltage time derivative (normalized by the Vbus voltage) to set a threshold for prediction mode. This method does require some tuning with known loads to verify reliable operation. These are the possible operating modes in the code:
#define SETTLED_MODE
#define DECAY_MODE
#define CHARGE_MODE
#define OUT_OF_RANGE_MODE