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.
Part Number: TMDSHVMTRPFCKIT
Hi,
Is there any reference or training facility explaining the per unit normalization and how macros work in HVPM_Sensorless_2833x? I am getting very confused especially with ADC conversion. For example, in the code, we have the following for phase A current:
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
ADC result is multiplied to 1/(2^12) and offset is subtracted from it which I do understand! However, I don't get it why it is multiplied by 2 and 0.909. What has happened to the gain of 8.25 of the current sensing amplification system? The voltage that is sensed (Ifb-V in this case) should be equal to:
(ADCRESULT*3.0/4096)+ADCLO
based on the page 10 of SPRU812A. Then, based on the schematic and the amplifying circuit of the high voltage kit, this voltage is equal to :
1.65-(current/(8.25*0.02))
From this, I cannot reach to what is used in the codes. I would appreciate any help especially if there is any comprehensive explanation on how per unit normalization works.
Thanks,
You might have a look at below two threads that should help you to understand what's Per Unit.
https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/801481
https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/786172
More information may be found in the following link.
https://en.wikipedia.org/wiki/Per-unit_system#Example_of_per-unit
I am sorry, I think I did not state my issue well. I know what per unit is, I just cannot follow it in HVPM_Sensorless_2833x codes for example. Could you please guide me through how this formula :
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
results in the current of phase A?
The ADC input range is 0~3.0V on F28335, but the s/w and h/w board are designed for the devices with 0~3.3V ADC input range, so 0.0909=3.0/3.3.
The resolution of ADC is 12bit, convert the integer value to the floating point by multiple (1/2^12=1/4096=0.00024414) since the s/w uses FPU (floating point unit) of F28335.
Offset is calibrated by reading the ADC result when the phase current is ZERO if the PWM outputs are OFF, or all three-phase PWM duty is 50% at the same time.
What does the multiplication by 2 do there? ((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909
Convert the _IQ(-0.5)~_IQ(0.5) to _IQ(-1.0) to _IQ(1.0) according to the scale current of the full ADC sampling range. Do the same thing for floating point also.