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.

TMS320F280049: The DC-AC unit section under POWERSUITE Single Phase Inverter: Voltage Source TIDM-HV-1PH-DCAC project takes the TMS320F280049 chip

Part Number: TMS320F280049


Hi team,

Here's some issues form the customer may need your help:

The chip used is 28027. 

Issue: 

1. In the code interrupt void inverterISR(void) , here's a statement as below:

#if SENSING_OPTION ==ADC_BASED_SENSING
readCurrVolADCSignals(&offset165, &invVbusInst, &invVbusOffset,
&invVoInst, &invIiInst, &invIiOffset);

Although the value of CMPB is set equal to the time set by ACQPS_SYS_CLKS, from the customer's understanding: the acquired AD values for the voltage, current, etc. of the TMS320F280049 at this time should be the AD values of the previous cycle, if calculated using this AD value, the result might be incorrect?

2. 

#define ACQPS_SYS_CLKS     50

EPWM_setCounterCompareValue(INV_ISR_TRIG_PWM_BASE,EPWM_COUNTER_COMPARE_B,
EPWM_getTimeBasePeriod(INV_ISR_TRIG_PWM_BASE)-(50/2));

50/2 is because the clock of the PWM is a 2-division of the system clock, but this 50 is just a sample window. Conversion Time is not included. Does the sample window time for TMS320F280049 include Conversion Time?

From the customer's understanding: the value of CMPB should be set to EPWM_getTimeBasePeriod(INV_ISR_TRIG_PWM_BASE) -- the sum of the time of all AD samples to ensure that the value collected at the time of the interrupt is the AD value of the current cycle.

Could you help check this case? Thanks.

Best Regards,

Cherry

  • Hello,

    May I know is there any updates?

    Thanks and regards,

    Cherry

  • Hi Cherry,

    Q1.  Are you asking whether it is okay to calculate duty based on the previous cycle ADC measurement?

    Q2. Does the customer use CMPB for ADC trigger? If so, triggering SOC at TBPRD will include a severe switching noise an you need to avoid that. In general, set ADC SOC before/after PWM switching instance is recommended.

    Best,

    John

  • Hi John,

    Thanks for your help! 

    Are you asking whether it is okay to calculate duty based on the previous cycle ADC measurement?

    Yes, they are asking this. And there is a time delay in the acquisition? Is there a way to minimize the delay?

    Thanks and regards,

    Cherry

  • Hi Cherry,

    Digital control relies on previous ADC measurement (sensing value) and this is one disadvantage of digital control compare to analog control .

    As it uses previous ADC measurement  as a feedback, it leads to 1 cycle delay in the control loop but if sampling frequency is high enough (let's say sampling frequency is at least 10 times higher than control loop bandwidth), the impact of 1 cycle delay is not that significant.

    Best,

    John  

  • Hi John,

    Thanks. And here's some additional questions about hardware(please let me know if these questions are needed to be posted on a new thread):

    1. The customer is using #if SENSING_OPTION == ADC_BASED_SENSING, that is, ADC_BASED_SENSING mode, which is the circuit on the left side of the diagram below:

    Voltage loop control is easy to understand, but how does the current inner loop implement the control duty cycle invDutyPU? Is it a DCL implementation? Are there any related articles or instructions for using DCL?

    2. The H-bridge outputs a SPWM wave in equal amplitude, what does the H-bridge current waveform look like? What does the waveform on the inductor look like? How is the voltage across the inductor calculated?

    Thanks and regards,

    Cherry

  • Hi Cherry,

    Check the User's guide shown below. It has current loop information TIDUB21D. Also, you can check DCL from the link below. 

    https://www.ti.com/tool/C2000-DIGITAL-CONTROL-LIBRARY

    You have an inner current loop and therefore, the inductor current also follows sinusoidal reference. I don't think it inductor voltage is not being used in the control loop.

    Best,

    John