PDA

View Full Version : Current sense amplifier settings in TLE9879 eval kit



Litun
Mar 7th, 2018, 10:22 AM
Dear all,

I am running a bldc motor Infineon TLE9879 chip. Now I want to measure the current flowing through the motor. so I use the current sense amplifier where the motor current is converted to a voltage by means of a shunt resistor RSH(0.005 ohms).
Question: I want to measure current from 0.1amp to 3Amps which gives the voltage drop at RSH (0.1*0.005=0.0005volts to 3*0.005=0.015volts).
Considering 5V reference voltage of ADC I will not be able to get a good number for the above voltage drop. Also with the maximum gain of CSA the output is still negligible. The data sheet3394 says you need to do linear calibration but how to do it for the entire current range?


I have calculated the offset in SW mode with gain 60 ensuring that MOSFET bridge is off(0 current flowing). After that, I switch back to SQ mode and check for ADC value in Ch1. It always shows a constant number 28 when the CSA gain is set to 60.

Regards
Litun

Litun
Mar 19th, 2018, 10:27 AM
I am working block commutation of BLDC motor and I have measured the current flowing through each phase at 1000 rpm in scope. The current waveform is shown as follows.

3398

Yellow: Phase A
Violet: Phase B
Green: Phase C
Red= Sum of (Phase A+ Phase B+ Phase C)

Now the 3 phases (Red signal) should appear across the shunt (R27/ 5mR) and should develop a similar alternating voltage across OP1 and OP2.
And I have checked that there is a potential difference(mili volt) between OP1 and OP2 and it increases as the load on motor increases.

So before starting the motor, I have calculated the OPAMP offset voltage using ADC1 Ch1 in Software Mode with a max gain of 60 (GAIN=0b11).
And the offset value is CSA_Offset = 24.
Then I change the ADC mode to sequence mode (SQ).
And once the motor is running I read the ADC1 Ch1 voltage by ESM mode which is triggered by a timer (GPT1 T3) on every 100ms.

void CSA_HandleAdc1(void)
{
uint16 mV;
bool value_valid;
value_valid = ADC1_GetChResult_mV(&mV, ADC1_CH1);
}
But strangely I get the ADC value(mV) same as the offset value. Also ADC value does not change as load on the motor increases.

Please let me know where the problem? Why is the ADC not reading the voltage at its input.?


Thanks