This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV8312 w/ FOC - phase current A/D's vs. current probe measurement

I'm having trouble reconciling my measured phase current (via a 1V/A current probe, displayed on an oscilloscope) with the calculated phase currents, as measured from the A/D.  I'm using the PM_Sensorless project, Build Level 7.  My assumptions are as follows:

1) The base current is 8.6A.  This is also stated in the PM_Sensorless-Settings.h file.

2) Since the A/D values are calculated as +/- 1 per unit, the full current range is +/- 8.6A.

3) I should be able to multiply the A/D value by 8.6 to arrive at the instantaneous curren value.

When I go by these assumptions, I read a max value of 365mA from the A/D after reaching steady state.  However, the current probe measures a peak of 880mA and an RMS value of 425mA.  I must be misunderstanding something about the scaling from the A/D from the software setup instructions. Any assistance with this is greatly appreciated.

Thanks.

E2E forum information:

Host OS: Windows 7 Home Premium, Service Pack 1
CCS Version: 5.2.1.00018
DRV8312EVM 6517813 Rev D
CC2803x ISO DIMM REV 1.3
Texas Instruments XDS100V1 USB Emulator

  • I believe 17.69A is the full scaling

    0V (0000h) = -8.845A

    1.65V (07FFh) = 0 A

    3.3V (0FFFh) = +8.845A

    17.69A / 4096 ADC counts = 0.004318847 A / count

    If you pull out a raw ADC count, you can multiply by this A/count,  then subtract 8.845A and you'll get your value in Amps.

    In the code they move the ADC result (after subtracting the calibration offset) from the ADC register (Q12) shift three to Q15, and then convert to the global Q24 value.

        IAfdbk=_IQ15toIQ((AdcResult.ADCRESULT1<<3)-cal_offset_A)<<1;
        IBfdbk=_IQ15toIQ((AdcResult.ADCRESULT2<<3)-cal_offset_B)<<1;