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.

TIDM-BUCKBOOST-BIDIR: Questions about controls

Part Number: TIDM-BUCKBOOST-BIDIR
Other Parts Discussed in Thread: SFRA

Champs,

I am asking this for our customers.

1) In "BuckBoostBiDir-DPL.asm", below code, why do you use Boost0Count to count 256 times and then force PWM2A to high and low?

  INC  @_Boost0Count
  AND  @_Boost0Count,#0x00FF
  B PWM_UPDATE_BUCK,GT

 ; MOV  AL,#0x7AE1
 ; MOV     AH,#0x0014
 ; MOVL @_DutyBoost, ACC
  MOVW  DP,#_EPwm2Regs.AQCSFRC
  MOV  @_EPwm2Regs.AQCSFRC,#0x0002   ; Force a 1 on PWM 2A
  RPT #0xF || NOP
  MOV  @_EPwm2Regs.AQCSFRC,#0x0001   ; Force a 0 on PWM 2A
  MOV  @_EPwm2Regs.AQCSFRC,#0x0000   ; resume PWM operation

2) Likewise, in below codes, why do you use Buck100Count to count 256 times and then force PWM1A to low and then high?

  INC  @_Buck100Count
  AND  @_Buck100Count,#0x00FF
  B PWM_UPDATE_BUCK,GT

 ; MOV  AL,#0x851F
 ; MOV     AH,#0x00EB
 ; MOVL @_DutyBuck, ACC
  MOVW  DP,#_EPwm1Regs.AQCSFRC
  MOV  @_EPwm1Regs.AQCSFRC,#0x0001   ; Clear EPWM1 pin
  RPT #0xF || NOP
  MOV  @_EPwm1Regs.AQCSFRC,#0x0002   ; Make EPWM1 pin high
  MOV  @_EPwm1Regs.AQCSFRC,#0x0000   ; resume PWM operation

3) How do you get the initialized coefficients of 3P3Z? Have you used any math modeling by R, C, L, etc of the power stage to calculate those coefficients?

If yes, would you please share with me the math modeling or methods?

4) How do you calculate input/output voltage/current like Vout_Rref, Vout_Read, etc? For example, if I want to output 50V, how do I set Vout_Rref?

5) Do you have any conversion calculation between PID and 3P3Z? 

6) Buck/Boost switch is done by variable, Duty, which is calculated by Vout_Ref and Vout_Read via 3P3Z. As we know, Vin>Vout is Buck, Vin<Vout is Boost. Why is Vin not involved in the control?

Wayne Huang

  • Hi Wayne,

    Let me check with the engineer who developed this design. We will get back to you soon.

    Hrishi
  • 1) In "BuckBoostBiDir-DPL.asm", below code, why do you use Boost0Count to count 256 times and then force PWM2A to high and low?

    This is used for the refersh pulse for the bootstrap driver, because when in boost mode one of the high side switches is 100% duty cycle. This was one number i chose, you can select a different number if need be depending on how much boot strap capacitance is there.

    2) same reason as above

    3) No math model was used or created, empirical tuning using SFRA. The code does support SFRA. 

    4) refer to the code below: read the user guide. see pg 28 & step 11

    //--------------------------------------------------------
    void A1(void)
    //--------------------------------------------------------
    {

    // state ==1
    Vout_Ref_DC=(long)(_IQ20mpy(Gui_VoutSet,VOUT_SENSE_MAX_INV))<<4;

    ....

    5. No

    6. refer to control loopdiagram in ug, fig 14

    once the control loop has been run we assume duty to be the metric of buck or boost. Vin does affect it but via the control loop not directly.

  • Manish,

    Thank you for your information.

    Wayne