Designers of ac-dc power supplies employ trimming potentiometers to calibrate for differential and common mode errors. These need to be trimmed manually by an operator at production to remove offsets and gain inaccuracies. Such errors are introduced by problems in components, including the current-sense resistor and op amps.
Trimming is an expensive, time-consuming process, which can still leave inaccuracies at the end of the procedure. Problems can also occur in the field when mechanical stress causes the trimming pots' values to change.
New controller ICs are able to perform this trim and calibration by programming over the SMBus. A software calibration routine and interface hardware has been developed to automate this procedure.Here we'll look at how a software routine works with the ADM1041 controller IC and an ADC to implement the automatic calibration routine. The software also controls a switch that applies the load as necessary during calibration. This ensures reliable, repeatable, less expensive, and quicker calibration and trimming. On top of that, it's possible to achieve even more accurate trimming.
The article will also demonstrate how the ADM1041 can also be setup for its system monitoring functions, such as overcurrent protection (OCP) and fault monitoring. Figure 1 shows the block diagram of the calibration setup.
Common-mode trim is necessary when employing high-side current sensing with a sense resistor, and where current-sense amplifiers are used. It's required so that the share-bus voltage is only a function of the load current, and remains independent of load voltage variations.
The issue of current-sense trim is critical to a power supply. The requirement for accuracy is highlighted by the fact that the system may have to trim errors of up to 40mV in a 10mV signal. Trimming in the correct order is also critical. The common-mode trim must be performed first to eliminate errors for the differential trim required for the share bus.
High-side current sensing requires a resistor-divider network to normalise the voltage at the current-sense amplifier inputs. The trim removes errors in the external resistor divider network and in the internal current sense amplifiers. Figure 2 illustrates an ideal resistor-divider network.
Consider the effect if one of the resistors in Figure 2 was incorrect by 1% due to tolerance. In the example, this corresponds to 10% inaccuracy at the share-bus output (Fig. 3). A large error exists on the output because the input signal is gained up by a factor of 100, so that it's useful at the output. Therefore, any error present may also be gained up by this factor.Inaccuracies in all four resistors can amplify the problem. Things can be further complicated if the inaccuracies result in the high-side input being lower than the low-side input.
The ADM1041 allows the polarity of the slope trim to be changed to deal with this issue. The input amplifiers can also have inaccuracies associated with them. To trim for this, the ADM1041 allows the common-mode offset and slope to be varied individually, with separate registers for each. It also enables the output voltage to be varied by programming another register. Varying the output voltage using the ADM1041 registers allows the user to simulate the maximum common-mode swing that can possibly appear in the power.
The output is enabled and no load current is applied during the common-mode trim. Some offset is introduced temporarily, and will be removed at the end of the calibration. The software changes the output voltage by programming the ADM1041 to simulate a common-mode change. The max and min output voltages are recorded by the ADC, and fed back to the software. From this, the software can determine the slope's polarity. The common-mode slope register is then programmed by a known (say 100 LSB) amount. The min and max voltages are again recorded. From these measurements, the software can calculate the correct amount of slope needed to remove the common-mode error (Fig. 4).
The steps to trim the common mode are as follows:
- Turn on the power-supply output, with no load current.
- Program Reg 15h to some offset, say C0h. This moves VSHARE away from ground.
- Program Reg 19h so that VOUT =VMAX. Read VSHARE voltage. Result = A.
- Program Reg 19h so that VOUT =VMIN. Read VSHARE voltage. Result = B.
- If A > B, then program Reg 16h polarity one way.
- X = A-B.
- Increase Reg 14h by 100bits (Program Reg14h = 64h) to introduce offset temporarily.
- Program Reg 19h so that VOUT =VMAX. Read VSHARE voltage. Result = C.
- Program Reg 19h so that VOUT =VMIN. Read VSHARE voltage. Result = D.
- Y = C-D.
- X should be greater than Y. If not, then the Reg16h polarity set was incorrect.
- Increasing Reg14h by 100 steps reduced the error from (A to B) to (C to D).
- Calculate how much change is induced by one bit change in Reg14h. Result = 1STEP.
- #_OF_STEPS = (A-B)/1STEP.
- Program Reg 14h to #_OF_STEPS
- Common Mode is now calibrated. Program Reg15h to 00h. This removes the offset introduced earlier.
- To verify the common mode is calibrated:
- Program Reg 19h so that VOUT= VMAX. Read VSHARE voltage. Result = E.
- Program Reg 19h so that VOUT=VMIN. Read VSHARE voltage. Result = F.
- 2E-F should be = 0.
A load-voltage trim is performed so that the load voltage is set to the correct value. Again, a resistor-divider network to the voltage-sense input can cause inaccuracies, as can the input amplifier itself. The ADM1041 allows the load voltage to be trimmed.
In a 12V system, the controller IC can achieve output-voltage resolution of 12mV (0.1%). This is generally well within typical requirements of 240mV (2%). Trimming the load voltage accurately results in much more balanced current-sharing systems. This will improve reliability of the product in terms of current sharing and thermal balancing. Using this trim, it's also possible to deliberately introduce an offset in the output voltage to compensate for line loss.The software first programs zero attenuation of the load voltage. Through the ADC, it measures the load voltage. The software then programs some attenuation (say 50 LSB) into the ADM1041. (By using 50 LSB instead of 1 LSB, more accurate results can be achieved, since an average value is measured). It again measures the new load voltage with the ADC. From these two measurements, the software can calculate exactly how much attenuation is generated from 1 LSB. Therefore, it can calculate how much attenuation is needed to get to the desired load voltage.
This value is programmed to the ADM1041 with the following code. The correct load voltage will then be present at the output:
- Turn on the power-supply output, with half load current.
- Program Reg 19h to 00h. Read VOUT voltage. Result = A.
- Increase Reg19h by 100 steps. Program Reg 19h to 64h. Read Vout voltage. Result = B.
- (Result A – Result B) is the amount of load voltage change in 100 steps.
- ONE_STEP = (Result A – Result B)/100. This is the amount of load voltage change in 1 step.
- The equation for the number of steps to program Reg19h to achieve the correct output voltage is: NUM_STEPS = (Result A – VDESIRED)/ ONE_STEP.
- Program Reg19h to NUM_STEPS.
- The output voltage should now be set to the correct value.
DIFFERENTIAL TRIM (SHARE
The differential trim is performed so that the share bus voltage is accurate for a given load current. If the Rsense resistor is inaccurate, this will cause errors. However, these can be trimmed out. And common-mode trim performed earlier already removed the common-mode errors.
Also, share-bus specifications vary from design to design. Being able to calibrate the share bus through registers means that the same circuit can be used for different share buses, and the register contents are the only things to change. Share buses that range greater than 5V, which use an external op amp, can also be trimmed using this method.
As was the case for the common-mode trim, a separate register allows the Share Bus offset and slope to be trimmed independently. It's necessary to apply and remove the load during this calibration. A switch (such as ADG715), which is able to communicate over SMBus, can be used to apply/remove the load as needed.
The software needs to know certain things about the system before the trim process begins. It asks for the no-load and full-load share-bus voltage specifications. The output is turned on, with no load applied.
So, the first step is to set the no-load share bus voltage. A register on the ADM1041is dedicated to this step. The software uses the ADC to measure the share-bus voltage change when the Share Bus offset register is changed by 1 LSB. From these measurements, the software calculates how many LSBs are needed to move the share-bus no-load voltage to the desired value. It then programs the Share Bus offset register with this value.
The next step is to calibrate the full load share-bus voltage. At this point, the software talks to the switch, which connects the full load to the power supply. The share-bus voltage is measured by the ADC, and reported back to the software. The ADM1041's share-slope register is increased by a set number of (say 20) LSBs. Once again, the share-bus voltage is measured by the ADC, and reported back to the software. From these two measurements, the software calculates how many LSBs are needed to move the share-bus full-load voltage to the desired value. It programs the Share Bus slope register by this amount.
It's often necessary to perform a further trim at this point. The slope introduced will slightly affect the offset value. Therefore, the no-load share bus voltage may have changed. The software can compensate for this by reprogramming the offset to the desired value, and then readjusting the slope again.
The share bus can be trimmed to many other specifications. A lot of specifications are for a minimum (say 10% load) rather than no-load. The same switch configuration can be used to implement this trim, with the user connecting the minimum load instead of no-load The following can be used to enable the differential trim. See Figure 5 for results.
- Turn on the power-supply output, with no load current.
- Program Reg 05h to 00h. Read VSHRO voltage. Result = A.
- Increase Reg 05h to 01h. Read VSHRO voltage. Result = B.
- ONE_STEP = (Result A – Result B).
- NUM_STEPS = (VSHRO_MIN Result A) / ONE_STEP.
- Program Reg05h to NUM_STEPS.
- Apply full load current. Read VSHRO. Result = C.
- Increase Reg06 by 20 steps. Read VSHRO. Result = D.
- ONE_STEP = (Result C- Result D) / 20
- NUM_STEPS = (VSHRO_MAX – Result C) / ONE_STEP.
- Program Reg06h to NUM_STEPS. VSHRO should now equal VSHRO_MAX
- Differential trim complete.
OTHER TRIMS AND FINALISING THE ROUTINE
The specification values overvoltage protection (OVP), overcurrent protection (OCP) and undervoltage protection (UVP) can also be trimmed and programmed at this time by the calibration software. The software utilises the ability to trim the output voltage up and down to set the OVP and UVP trip points. Again, these are all independently set by their own designated registers.
Once complete, the software can write all of the trimmed contents to the on-board EEPROM. It can also lock these registers, so that their contents won't be altered in the field or by end users. This adds a further degree of safety.
The power supply is now completely calibrated and trimmed, and will use these values at future power-ups. A sensor can be added to the production environment to recognise when a new power supply is present. This could act as the trigger to restart the entire routine for the next supply in the line. Such a routine can be implemented in an ATE environment.