Hello,
I am using refernece board RD9z1_638_4Li based on MM9z1_i638 controller. I am finding it difficult to understand the channel acquition system. I have few questions about it hope they will be answered here:
1. How do i calibrate the voltage and current channels?
2. What is the effect of using digital chopper in voltage and current channel?
3. Effect of iir filter on V and I reading?
4. Effect of Low pass filter on V and I reading?
I am using demo code that comes with the reference board. Board is running fine. I am getting voltage reading with error in mV .
Please find my comments below:
1. How do i calibrate the voltage and current channels?
The gain and offset compensation registers are used for compensation of the channel to get the accuracy stated into the datasheet of the product. It is also used to compensate the channel over temperature. It can also be used to compensate the external components: shunt for current and protection resistor for voltage.
Regarding RD9Z1-638-4Li reference design, the calibration was performed at board manufacturer. The calibration results were added on the bottom of the shunt by a sticker.
On this sticker are stated the delta codes for gain and offset calibration to add to the calibration codes from the MM9Z1_638 IC.
First get the example software of the RD9Z1-638-4Li at http://www.freescale.com/webapp/sps/download/license.jsp?colCode=RD9Z1-638-4LI_APPSP&prodCode=RD9Z1-...
Into the software, you have to edit calib.c by setting accordingly the values of the sticker into the structure CalibValues (line 37 of calib.c). When done, edit calib.h by decomenting line 23 to set #define IBS_MODULE_CALIBRATION_DONE.
Then you can load and run the software into the MM9Z1_638 of the reference design. The voltages and current channels are calibrated.
2. What is the effect of using digital chopper in voltage and current channel?
Using chopper mode will set the offset of the ADC of the chopped part of the channel to 0. Notice that the current acquisition channel will always operate into chopper mode.
3. Effect of iir filter on V and I reading?
IIR filter setting is impacting the noise of the measurement. It is also impacting the bandwidth of the acquisition channels. When enabled, it is also impacting the latency time (time to get measurement). This is mostly impacting when switching from one voltage channel to another.
4. Effect of Low pass filter on V and I reading?
The Low Path Filter is a configurable FIR filter with up to 16 coefficients. It is impacting the noise figure of the measurement. It is also impacting the bandwidth of the acquisition channel. The number of coefficient has a direct impact on the latency time.
Best regards,
Alexis
Thank you very much Alexix.
Below is the routine of Calibration from Demo application of RD9Z1-638-4Li:
void CalibMain(void) {
#ifdef RUN_IBS_MODULE_CALIBRATION
// 1. STEP: run the calibration measurements
IBS_moduleCalibration();
// 2. STEP: insert the results of CalibMeasurements into MM9Z1_638_calibration_vx.xlsx
// 3. STEP: insert the results from MM9Z1_638_calibration_vx.xlsx into CalibValues struct below, so that it can be written to EEPROM
CalibValues.CalibCompValues.current_gain_comp_steps = 0;
CalibValues.CalibCompValues.current_offset_comp_steps = 0;
CalibValues.CalibCompValues.vsense0_gain_comp_steps = 0;
CalibValues.CalibCompValues.vsense0_offset_comp_steps = 0;
CalibValues.CalibCompValues.vsense1_gain_comp_steps = 0;
CalibValues.CalibCompValues.vsense1_offset_comp_steps = 0;
CalibValues.CalibCompValues.vsense2_gain_comp_steps = 0;
CalibValues.CalibCompValues.vsense2_offset_comp_steps = 0;
CalibValues.CalibCompValues.vsense3_gain_comp_steps = 0;
CalibValues.CalibCompValues.vsense3_offset_comp_steps = 0;
CalibValues.CalibCompValues.ext_temp_gain_comp_steps = 0;
CalibValues.CalibCompValues.ext_temp_offset_comp_steps = 0;
// write the calibration results into EEPROM. If IBS_MODULE_CALIBRATION_DONE is defined, they will be used by
// ADC_[I,V,T]chan_loadCalibration(...)
EEPROM_WriteCalibValues(EE_BLOCK_BASE, CalibValues);
#endif
#ifdef IBS_MODULE_CALIBRATION_DONE
// load the values from EEPROM into CalibValues
EEPROM_ReadCalibValues(EE_BLOCK_BASE, &CalibValues);
#endif
}
in comments it says about some xlsx file for calibration. I couldn't find that file.