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.

TMS320F28035: BuckBoostDir_F2803X

Part Number: TMS320F28035
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE, SFRA

你好,我目前將Bi-Directional BuckBoost Converter的範例程式燒錄到035的開發板上,

例程路徑 : C:\ti\controlSUITE\development_kits\TIDM_BUCKBOOST_BIDIR\v1_00_00_00\BuckBoostBiDir_F2803x

再以跳線的方式將ADC和PWM訊號連接到我的BuckBoost板子的腳位上,

我在輸入電壓40V,Gui_VoutSet設置30V的情況下執行程式,輸出電壓Gui_Vout都是維持在2.8V,

我將Gui_VoutSet設置提高到40V、50V、60V等情況,結果發現DUTY一直維持在0.65,DutyBuck維持在1,DutyBoost維持在0.31不會改變,而輸出電壓依舊是2.8V,

Gui_Vpv和Gui_Vout偵測到的值都和量測的結果差不多,照理說我改變Gui_VoutSet,Duty會跟著改變,而輸出會調整到和Gui_VoutSet一樣的電壓值,

請問Duty都不會改變這樣的請況是甚麼問題?

BuckBoost板子是依照此例程的電路設計,零件數值也是,

CCS版本12.1.0

  • 已为您联系TI资深工程师,一旦得到回复会立刻回复给您

  • 您是否正在运行 OPEN_LOOP = 0 的代码?如果 OPEN_LOOP=1,则补偿器将被禁用,您需要直接控制占空比。

  • Katherine 你好,

    我運行在OPEN_LOOP = 0的代碼,想請問一下此例程有預設的Duty的最大值和溫度保護嗎?

    3p3z在Duty的計算上是根據Gui_VoutSet設定的值還是根據Gui_Vout偵測到的值呢?

    我目前嘗試在輸出給予20V的電壓,並將Gui_VoutSet設定為30V,Duty依然沒有改變

  • 已为您询问TI资深工程师,稍后给您回复

  • 在main.c 1124行中有看到過電壓的保護

    請問_IQ24(0.8)在十進制中表示為多少呢?

    也就是當VIN和VOUT大於多少電壓時會有保護,

    想知道_IQ如何是如何轉換為十進制的值

    在IQmathLib.h中有設定_IQ24的運算,當_IQ24(0.8)時 = 0.8 * 16777216 = 13421772.8 是正確的嗎?

  • 看起来代码确实将 3p3z DCL 函数的最大输出值设置为 0.65。这可以在 main.c 文件的第 1021 和 1031 行中看到。

    从项目随附的 Gain_Worksheet 来看,最大duty似乎并未超过 0.55。

    此外,DCL 库的用户指南位于:

    C:\ti\controlSUITE\libs\app_libs\digital_power\f2802x_v3.5\Doc

  • 了解,謝謝,

    關於上述過電壓保護的_IQ24值再麻煩詢問一下,

    還有一個問題是關於輸出電壓的設置,當我Gui_VoutSet起始值設太高(大於15V)時,程式是不會動作的,如果剛開始設15V再慢慢5V的往上增加是可以提高輸出電壓,如果一次提升10V輸出就會瞬間回到0,而且越靠近duty的上限時,一次甚至只能提高1V的輸出,請問這樣的情況是甚麼問題呢?

  • 已为您在E2E英文论坛询问工程师,稍后给您回复,您也可以访问e2e.ti.com/.../tms320f28035-buckboostdir_f2803x关注最新进展

  • _IQ24(0.8)在十進制中表示為多少呢

    这仍然是 0.8。 IQ 数学库仅以定点格式表示十进制值,以便 CPU 能够进行浮点计算。 IQnn中的nn只是指用来表示十进制数的二进制位数。如果您感兴趣,请在此处了解更多信息:

    C:\ti\c2000\C2000Ware_4_03_00_00\libraries\math\IQmath\c28\docs\IQmath_Quickstart.pdf

    也就是當VIN和VOUT大於多少電壓時會有保護,

    代码的注释可以写得更好一些(顺便说一句,代码不是我写的),但我相信 Vout_Read 最大值可以解释为 0.8 * VOUT_MAX_SENSE,定义为 110.22V。这意味着如果电压超过 88V,代码将关闭 PWM。硬件(为 ADC 测量 VOUT 供电的电阻分压器)可能的设计是,当 110.22V 施加到 VOUT 时,12 位 ADC 将输出最大代码 4096。

    从您的原始屏幕截图中可以看到进一步的证据。当您设置 Gui_VoutSet = 30 时,Vout_Ref 设置为 30/110..22 = ~0.2721。

  • 我相信正在发生的事情是,比如您要求软件从 0 变为 15V时,补偿器(下图中的 CNTL_3P3Z)过度补偿以使 VOUT 尽快达到 15V。这可能意味着,暂时将占空比设置为高于达到 15V 所需的值。可能是瞬时过度补偿触发了电压过保护或软件中包含的其他一些保护。

    您实际上可以在代码中实现某种类型的软启动。您需要在计算 Gui_VoutSet-Gui_Vout 的软件中添加一些检查并将差异限制为您指定的某个增量值,即 1V。然后您可以以 1V 的增量继续提高输出电压。您可以在一个较慢的后台循环中运行它,也许是 A1,其中 Gui_VoutSet 被转换为 Vout_Ref_DC。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //=================================================================================
    // A - TASKS
    //=================================================================================
    //--------------------------------------------------------
    void A1(void)
    //--------------------------------------------------------
    {
    // state ==1
    Vout_Ref_DC=(long)(_IQ20mpy(Gui_VoutSet,VOUT_SENSE_MAX_INV))<<4;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    这是我们在其他项目中如何进行软启动的示例。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    slew = BUCK_vOutTarget_pu - BUCK_vOutSet_pu;
    if(slew > BUCK_VOUT_SLEW_MAX_PU)
    {
    BUCK_vOutSlewed_pu += BUCK_VOUT_SLEW_MAX_PU;
    }
    else if(slew < (0 - BUCK_VOUT_SLEW_MAX_PU))
    {
    BUCK_vOutSlewed_pu -= BUCK_VOUT_SLEW_MAX_PU;
    }
    else
    {
    BUCK_vOutSlewed_pu = BUCK_vOutTarget_pu;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 你好,我有在A1 下加入軟啟動了,Vout_slew_max設為1.0,但是發現VoutSet起始大於15V就不動作的問題依然沒有解決,是哪一部份編程需要修改嗎?

  • 已将您的疑问转达至E2E英文论坛工程师,一旦得到回复会立刻回复给您

  • 您的代码存在一些问题。

    • Vout_slew_max 需要转换为类型 (_iq20),您可以这样做:

    #define Vout_slew_max _IQ20(1.0)

    • Gui_Vout 被定义为一个 _iq16 值,因此您不能只从 Gui_VoutSet(定义为一个 _iq20 值)中减去它。我相信您可以将 Gui_Vout << 4 转换为 _iq20。

    slew = Gui_VoutSet - (Gui_Vout << 4);

    • 最后,VoutSlewed_pu 将替换第 933 行中的 Gui_VoutSet。否则第 914 至 930 行无效。

    Vout_Ref_DC=(long)(_IQ20mpy(VoutSlewed_pu,VOUT_SENSE_MAX_INV))<<4;

  • 感謝你的回覆!!

    我在修改以上程式後有獲得改善,但是當我再繼續提高電壓後還是會有一樣的問題,

    像是輸入15V,VoutSet設定為30V時,電壓還是會回歸為零。

  • 您可以尝试以下方法:

    • 降低电压阶跃 (Vout_slew_max) 以进一步减慢斜坡。
    • 探测 Vout 或 Iout 或两者以确定这是否确实是问题的根本原因。
    • 调整补偿器系数以使补偿器不那么激进(这仅在电压/电流斜坡确实是问题的情况下)。仅供参考,系数的调整超出了我们可以通过 E2E 提供的支持范围。
  • 1.我嘗試將Vout_slew_max逐漸調小,甚至到0.1,依然無法解決此問題;接者發現原本程式VouSet設定在15V時都可以輸出,但是加上軟啟動後反而可能讓VoutSet在15V時無法輸出。

    2.以下是我在輸入20V,輸出為0V和15V的情況,發現我的電流偵測到的值似乎有問題,Ipv和Iout為負值,Iout始終為-8.9。

    3.其中我發現調整Duty的上限值也會影響是否有輸出,這是不是代表當VoutSet設定太高時會瞬間超過Duty的上限而導致沒有輸出呢?

    如果是這樣,我應該怎麼將軟啟動限制Duty的值。

    4.如果我想改3p3z的補償值,我應該如何調整其中的係數值呢?

  • 已为您在E2E英文论坛跟进您的问题,一旦得到回复会立刻回复给您

  • 1.我嘗試將Vout_slew_max逐漸調小,甚至到0.1,依然無法解決此問題;接者發現原本程式VouSet設定在15V時都可以輸出,但是加上軟啟動後反而可能讓VoutSet在15V時無法輸出。

    软启动代码可能仍然存在一些错误,您将需要对此进行更多调试。我需要更多调试信息才能在此提供解决方案/建议。

    2.以下是我在輸入20V,輸出為0V和15V的情況,發現我的電流偵測到的值似乎有問題,Ipv和Iout為負值,Iout始終為-8.9。

    这看起来不对, Iout 从 ADCIN-A4 读取。您看过电路板上电流检测运算放大器的输出吗?

    3.其中我發現調整Duty的上限值也會影響是否有輸出,這是不是代表當VoutSet設定太高時會瞬間超過Duty的上限而導致沒有輸出呢?

    如果是這樣,我應該怎麼將軟啟動限制Duty的值。

    您能具体说明您在哪里做这个调整吗?您不必限制Duty值。软启动将限制增益步长,进而限制占空比步长。

    顺便说一句,您是否检查过代码中是否超出了这个限制?如果您在这里放置一个断点,代码会停在这里吗?

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // BackGroundISR with MPPT code
    interrupt void BackGroundISR()
    {
    //Protection for over voltage
    if(Vpv_Read>_IQ24(0.8) || Vout_Read>_IQ24(0.8))
    {
    EALLOW;
    EPwm1Regs.TZFRC.bit.OST=1;
    EPwm2Regs.TZFRC.bit.OST=1;
    EDIS;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    4.如果我想改3p3z的補償值,我應該如何調整其中的係數值呢?

    此时,尚不清楚问题的根本原因是什么,因此修改补偿器系数可能最终无法解决任何问题。

  • 软启动代码可能仍然存在一些错误,您将需要对此进行更多调试。我需要更多调试信息才能在此提供解决方案/建议。

    我設定Vout_slew_max在0.9,輸入15V時可以直接將VoutSet設定在30V,但是在輸入25V時直接將VoutSet設定在30V會將Vout瞬間上升到23V左右後逐漸降至2~3V(未完全歸零),我在Vout_slew_max從1.0、0.9....降到0.1的情況下Vout依然會下降,當Vout_slew_max小於0.3時Vout就停在2~3V;接者我在Vout_slew_max設定0.9~0.7時輸入25V,VoutSet設定在20V,Vout會直接升到23V後逐漸降至2~3V,然後我將Vout_slew_max設定0.6時Vout可以維持在20V。

    这看起来不对, Iout 从 ADCIN-A4 读取。您看过电路板上电流检测运算放大器的输出吗?

    量測ADC_A4的電壓為:

    Vin  Vout   A4

    25    15     0.146

    25    20     0.146

    25    15     0.145

    15    20     0.145

    15    25     0.145

    在改變輸入和輸出電壓的情況下,A4的電壓都維持在0.145V左右。

    您能具体说明您在哪里做这个调整吗?

    我是修改Dmax_V的值,原本設定為0.65,我改為0.85。

    您是否检查过代码中是否超出了这个限制?如果您在这里放置一个断点,代码会停在这里吗?

    我在Voutset為30V而導致輸出下降時有去觀察EPwm1Regs.TZFRC.bit.OST的值,這時候的值為0,並非為1;我放置一個斷點,代碼不會停在這裡。

    此时,尚不清楚问题的根本原因是什么,因此修改补偿器系数可能最终无法解决任何问题。

    目前我的電路在執行程式時開關會有聲音,在輸出加上了一顆220uF的電容後聲音就消失了,再加上上述提到的過度補償的問題,因此懷疑可能是補償的問題。

  • 您是否尝试过用户指南中描述的测试设置? 比如VIN=60V、Vout = 40、55、60、65V 时 50Ohm 负载的输出电压控制?只是想知道这是否有效。

    要调整补偿器,我建议您使用 SFRA + compensation designer。

    1. 构建在 OPEN_LOOP 中运行的代码。

    2. 根据需要设置测试环境(VIN、负载)。

    3. 手动调整占空比,直到达到所需的 Vout。

    4. 运行SFRA收集工厂数据,保存数据。

    5. 在补偿器设计器上加载工厂数据并调整 DC 增益、极点和零点,直到达到所需的带宽、增益裕度和相位裕度。

    6. 将新系数复制到软件中。

    7. 使用新系数在 OPEN_LOOP = 0 中构建软件。

  • VIN=60V、Vout = 40、55、60、65V 时 50Ohm 负载的输出电压控制?

    我有測試過以上的電壓,原本的程式是沒有辦法直接將VoutSet設定在40V以上的電壓,設定軟啟動後VoutSet可以直接設定在40V,但是40V以上的電壓就沒辦法了。

    手动调整占空比,直到达到所需的 Vout。

    我有在Open Loop中去手動調整占空比,發現也有一樣的問題,占空比初始只能設定0.1,接者再0.05的慢慢往上增加;如果初始占空比設置大於0.1,輸出就會掉到2.5V左右。

  • 我再次測試於Open_Loop下手動調整占空比,發現初始設定0.1也沒辦法讓輸出上升,這樣是不是代表不是回授補償的問題呢?

    我目前是將程式燒錄至開發板再跳線連接至主板上,不曉得這樣是否會造成以上的異常。

  • 您是说通过跳线将 MCU 上的 PWM 和 ADC 连接到主板吗?

    我又看了一眼代码。那里有一些代码可以配置比较器以触发 PWM 以进行保护。 COMP1 和 COMP2 都被使用。根据数据表,COMP1 连接到 A2/B2,COMP2 连接到 A4/B4。

    代码指定内部 DAC 用于两者,所以我预计只有 A2 和 A4 被监控。根据设计指南,A2 用于测量面板电流反馈 (IPV),A4 用于测量输出电流 (IOUT)。由于您设置中的当前值看起来不正确,我想知道这是否会使 PWM 跳闸以停止切换?您能检查每个比较器中的 COMPSTS 寄存器吗?

  • 您是说通过跳线将 MCU 上的 PWM 和 ADC 连接到主板吗?

    對的

    您能检查每个比较器中的 COMPSTS 寄存器吗?

    我在輸入25V,VoutSet設定在20V,輸出電壓掉到2.77V的情況下檢查COMPSTS寄存器中的值

    我發現我的電路中輸出電流的OP倍數錯誤,更換其中一個電阻值後可以偵測到電流值,只是誤差比較大。

    在加入軟啟動後,在輸出電壓掉下來的情況,我發現Duty會在上限值和0之間跳動,但實際量測PWM的輸出是沒有值的。

  • 我在開回路時輸入50V,輸出30V,使用SFRA GUI掃描带寬、增益裕度和相位裕度,發現波型和user guide的波型完全不一樣。

    我量測的: Vin = 50V   Vout=30V

    user guide:

    其中輸出負載為50歐姆要如何設置呢? 我和user guide的波型不同是因為50歐姆的關係嗎

  • 已将您的最新疑问转达至E2E疑问论坛,您也可以访问https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1196560/tms320f28035-buckboostdir_f2803x关注最新进展

  • 我向您的邮箱里发送了一封邮件,请注意查收

  •  这些测量误差看起来很大,我们需要更多调试。不确定“负载机”是什么意思。

    现在我想专注于 OPEN_LOOP 测试。我没有关注下面的这两个情节。想与您确认一下:

    • 代码是否是使用 BuckBoostBiDir-Settings.h 中的#define OPEN_LOOP 1 构建的。
    • 您正在更新 CCS 中的变量“Duty”?此变量在 BuckBoostBiDir-Main.c 中定义。请提供CCS的截图。

    volatile long DutyBuck,DutyBoost,Duty,DutyZero,DutyBuck2,DutyBoost2;

     这里需要注意的是,Duty 应该写成 IQ24() 值。下面介绍如何将flow转换为IQ值。

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/589532/tms320f28027-the-formula-of-floating-value-to-iq

    • CH2 的分辨率是多少?看起来像 20mV/div?为什么会这么小呢?
    • 对于编程的Duty,代码计算出的DutyBuck和DutyBoost(使用CCS查看)和PWM1APWM2A引脚上测得的PWM占空比分别是多少呢? 

     下面的代码和表格给出了预期的 PWM 占空比。

     

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // All the value are emperically determined
    // The focus is to keep the gain curve monotonically increasing
    #define BUCK_MODE_MAX_GAIN _IQ24(0.9)
    #define CONSTBOOST_MODE_MAX_GAIN _IQ24(0.95)
    #define CONSTBUCK_MODE_MAX_GAIN _IQ24(1.05)
    #define CONSTBOOST_MODE_DUTY_VAL _IQ24(0.07)
    #define CONSTBUCK_MODE_DUTY_VAL _IQ24(0.907)
    #define C1_VAL _IQ24(0.041)
    #define C2_VAL _IQ24(0.87)
    #define C3_VAL _IQ24(0.982)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

     

     例如,在 Duty = 0.1 时,PWM1A 占空比应为 10%,PWM2A 占空比应为 0%。

    Open loop

    Ch1: Vout   Ch2: PWM1

    Vin: 50V   Vout: 2.3V   loading:  0A  Duty: 0.1

    Vin: 50V   Vout: 2.4V   loading:  0A  Duty: 0.05

     

  • CH2 的分辨率是多少?看起来像 20mV/div?为什么会这么小呢?

    以下情況是我設置高的輸出電壓時,輸出沒有上升到設定值,只有緩慢的上升到2V的電壓,當時沒有觀察到分辨率設置多少

    对于编程的Duty,代码计算出的DutyBuck和DutyBoost(使用CCS查看)和PWM1APWM2A引脚上测得的PWM占空比分别是多少呢?

    Duty為0.1

    CCS:DutyBuck為0.2  DutyBoost為0

    量測:PWM1A為0.17  PWN2A為0

  • 已为您联系TI工程师,一旦得到回复会立刻回复给您

  • 您好,

    CH2 的分辨率是多少?看起来像 20mV/div?为什么会这么小呢?

    以下情況是我設置高的輸出電壓時,輸出沒有上升到設定值,只有緩慢的上升到2V的電壓,當時沒有觀察到分辨率設置多少

    这里的问题是CH2应该是 PWM1,是一个数字信号,而20mV/div 的分辨率对于数字信号是没有意义的。 即使在新示波器上,数字信号上的峰值也是~400mV。 您是否在某个分压器之后探测 PWM 信号? 250kHz 的开关速率是合理的。 

    Duty為0.1

    CCS:DutyBuck為0.2  DutyBoost為0

    好的这里没问题。根据design guide,当 Duty=0.1时,代码以降压模式运行。 在此模式下,降压 PWM 将设置为 Duty*2,而升压 PWM 将设置为0。 因此您这里测量的占空比是合理的。 需要注意的几点:1. 由于死区设置,测量 PWM 占空比不会恰好为 Duty*2。2. 编程的占空比始终乘以2。 

    Code from BuckBoostBiDir-DPL.asm.

    - LSL (left shift, i.e. multiply x 2)

    - ZAPA (zero ACC)

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    MOVW DP,#(_Duty)
    MOVL ACC,@_Duty
    LSL ACC,#1
    MOVL @XAR0,ACC
    CMPL ACC,@_BuckModeMaxGain
    B BUCK_MODE, LT
    CMPL ACC,@_BrAModeMaxGain
    B BRIDGE_MODE_A,LT
    CMPL ACC,@_BrBModeMaxGain
    B BRIDGE_MODE_B,LT
    B BOOST_MODE, UNC
    BUCK_MODE:
    MOVL ACC,@XAR0
    MOVL @_DutyBuck,ACC
    ZAPA
    MOVL @_DutyBoost,ACC
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    如 GainWorksheet,最好能逐渐增加占空比并测量由此产生的 Vout。 对于给定的 Vin,最好应该能够确定功率级的运行方式是否符合预期。 

  • Hi Cherry,

    您是否在某个分压器之后探测 PWM 信号?

    這部分我是直接量測PWM訊號,沒有在外加分壓器

    如 GainWorksheet,最好能逐渐增加占空比并测量由此产生的 Vout。 对于给定的 Vin,最好应该能够确定功率级的运行方式是否符合预期。

    我在開迴路的時候初始的Duty只能設定在0.02,接著也是0.02的比例慢慢往上加,如果直接設定到0.1或往上加Duty的比例增加,輸出會升到2V,不會再往上升;當我Duty慢慢往上升到Boost的模式時,輸出就掉到2V了

    我在開回路時輸入50V,輸出30V,使用SFRA GUI掃描带寬、增益裕度和相位裕度,發現波型和user guide的波型完全不一樣。

    我量測的: Vin = 50V   Vout=30V

    請問SFRA的問題,這部份是我使用SFRA的方法不對還是補償的問題,也想知道為什麼我使用compdesigner調整3p3z的係數後顯示為"stable loop",但是卻沒辦法穩定輸出設定值

  • 我有一件事情沒有注意,由於原本的設計電路在輸出電壓時MOS總是會有聲音,當輸出電壓越調越高的時候會導致MOS燒毀,因此在輸出加上了一顆220uF的電容,加了之後MOS就沒有聲音了,也不會燒掉。

    今天嘗試把電容拿掉,發現Vin 42V,VoutSet設定為30V時可以將電壓穩定在30V,但是MOS依然有聲音,當輸出調到40V時MOS就不行了,接著我將220uF的電容裝上,發現VoutSet設定為30V時輸出電壓升不上去,只能5V的往上增加,但是MOS是沒有聲音的。

    以下是Vin 42V,Vout 30V,輸出加上10uF、220uF電容和沒有加電容時PWM1A和PWM1B的波形

    無電容:

    10uF電容:

    220uF電容(無法直接升到30V):

    下面是我在加上220uF電容的情況下,將VoutSet以5V的電壓逐漸往上增加至30V的波型

    220uF電容:

    發現加上電容濾掉雜訊後訊號變得更穩定,但是就會出現初始VoutSet無法設太高的問題(開迴路的Duty也是)

    同時我進行SFRA的掃瞄

    Vin 42V,Vout 30V,無加載、無電容:

    Vin 42V,Vout 20V,加載50歐姆、無電容:(Vout 30V時加載,輸出會直接掉到0V)

    請問我應該在輸出加上一個小於220uF、適中容值的電容嗎?讓MOS穩定又不影響VoutSet的設定,

    還有加載的問題,想知道加載時電壓會掉到0V的問題如何解決。

    謝謝!!

  • 转达给工程师了,链接贴在这里:

    e2e.ti.com/.../tms320f28035-buckboostdir_f2803x

  • Hi,

    请见以下工程师答复:

    這部分我是直接量測PWM訊號,沒有在外加分壓器

    Do you have an explanation as to why the amplitude of the signal is so small even though the MCU has 3.3V I/O?

    我在開迴路的時候初始的Duty只能設定在0.02,接著也是0.02的比例慢慢往上加,如果直接設定到0.1或往上加Duty的比例增加,輸出會升到2V,不會再往上升;當我Duty慢慢往上升到Boost的模式時,輸出就掉到2V了

    This is not expected behavior. Can you debug this further? What is the status of the PWM outputs when the duty is set to 0.1? If the PWM outputs are stopped, can you verify if a trip condition has been set and the root for that trip condition (overcurrent, overvoltage, etc.)?

    我有一件事情沒有注意,由於原本的設計電路在輸出電壓時MOS總是會有聲音,當輸出電壓越調越高的時候會導致MOS燒毀,因此在輸出加上了一顆220uF的電容,加了之後MOS就沒有聲音了,也不會燒掉。

    Can you indicate on the schematic where this capacitor placed and where the signal is being measured? 

    Thanks.

  • This is not expected behavior. Can you debug this further? What is the status of the PWM outputs when the duty is set to 0.1? If the PWM outputs are stopped, can you verify if a trip condition has been set and the root for that trip condition (overcurrent, overvoltage, etc.)?
    Do you have an explanation as to why the amplitude of the signal is so small even though the MCU has 3.3V I/O?

    以上問題可能是我在輸出端加上220uF的電容所導致,因為我拿掉電容後,在開迴路調整Duty和閉迴路調整VoutSet值,輸出不會再掉到2V,至於為什麼在掉到2V時的訊號振福這麼小,我認為這時候其實已經沒有訊號了(Duty = 0),這些抖動是我將解析度方大後看到的雜訊。

    Can you indicate on the schematic where this capacitor placed and where the signal is being measured?

  • Let me clarify my question on the PWM output signal amplitude. Are your scope snapshot below showing the PWM amplitude is 400mV? The amplitude should be closer to 3.3V.

    Where are the PWM outputs being measured? If possible, the PWM outputs should be measured at TP118, TP119, TP126, and TP127. I am assuming these test points are present on the your hardware. The 200uF capacitor added the output of the buck-boost power stage should not have an effect on the PWM signal amplitude

    以上問題可能是我在輸出端加上220uF的電容所導致,因為我拿掉電容後,在開迴路調整Duty和閉迴路調整VoutSet值,輸出不會再掉到2V,至於為什麼在掉到2V時的訊號振福這麼小,我認為這時候其實已經沒有訊號了(Duty = 0),這些抖動是我將解析度方大後看到的雜訊。

    Yes, of course, if a trip condition has been created due to overcurrent, overvoltage, or similar, the PWMs will stop switching and they will go to 0V. However, when there is no trip condition and the PWMs are switching normally, the signal amplitude should be closer to 3.3V. All your scope waveforms of the PWM outputs show this ~400mV amplitude. I want to make sure the UCC gate drivers in the buck-boost power stage are getting the correct PWM signal amplitude.

    I also want to make clear that the focus should be to get the hardware and software working in OPEN LOOP. We need to be able to raise the duty cycle to any point and operate the circuit in buck or boost stage. If this cannot work, then there is no chance to get the design to work in closed loop.

  • Where are the PWM outputs being measured?

    是的,我的測試點和圖中一樣

    when there is no trip condition and the PWMs are switching normally, the signal amplitude should be closer to 3.3V.

    我了解你的意思了,訊號振幅會這麼小的關係是因為我的探棒將訊號縮小了10倍,重新量測一次波形後,訊號振幅確實在3.3V

  • 請問以下波型中,Boost的Duty為0,但是隔一段時間會產生一脈衝,目的是為C3充電對嗎? 想知道這樣的設定是程式中的哪一部份

  • 我们需要再向工程师确认下,应该会在下周工作日内给到您答复,您也可以自行查看英文论坛的链接来了解最新进展。

  • Hi,

    Yes, that pulse is to charge the bootstrap capacitor. The code for that is include in BuckBoostBiDir-DPL.asm.

    Can you please configure the test setup as described in section 5.1 Hardware Setup Instructions of the design guide. Specifically, Vin=60V and Load = 50Ohms.

    The code needs to be configured in OPEN_LOOP = 1. The duty can be gradually increased and PWM duty cycles and Vout can be measured manually. We need to obtain stable results in this test setup before moving on.

    We want to ask about the load you are using too. Can we clarify what is this load in your setup? If it is some big wirewound resistor, the inductance in that device may affect the operation of the circuit in CLOSED loop. In fact, for this OPEN_LOOP test, you can operate the system WITHOUT a load since the control loop is disabled. 

  • 我在OPEN LOOP下輸入60V(無負載),手動調整DUTY,以下DUTY分別為0.1、0.2和0.3,發現在0.2以上DUTY會自動關閉

    DUTY:0.1

    DUTY:0.2

    DUTY:0.3

    設置中的負載是什麼

    我使用的是以下的電子負載機給予負載

  • 我们跟进给工程师看下。

  • Hi,

    All indications point to the PWMs being tripped. I took another look at the code and the MCU comparators are being configured to monitor the Ipv and Iout currents. If the currents exceed some value, the PWMs will automatically trip. Can you check the EPwm1Regs.TZFLG.bit.DCAEVT1 and EPwm1Regs.TZFLG.bit.DCBEVT1 flags when the code stops in OPEN_LOOP=1 and Duty>0.2?

    You previously reported the following voltages at ADC-A4. These look completely wrong. This could be the source of the trip for the system. For reference, ADC-A4 at 0A should be about 1.65V. 

    量測ADC_A4的電壓為:

    Vin  Vout   A4

    25    15     0.146

    25    20     0.146

    25    15     0.145

    15    20     0.145

    15    25     0.145

    在改變輸入和輸出電壓的情況下,A4的電壓都維持在0.145V左右。

  • Can you check the EPwm1Regs.TZFLG.bit.DCAEVT1 and EPwm1Regs.TZFLG.bit.DCBEVT1 flags when the code stops in OPEN_LOOP=1 and Duty>0.2?

    我發現DCBEVT1變為1

    ADC-A4 at 0A should be about 1.65V

    是的,這個問題我目前已經解決了,現在是1.65V

  • 好的。

  • 你好,我解決了ADC-A4的電壓不正確問題,但是跳閘問題依然存在

  • 好的我们来反馈给工程师。

  • 您好,请看以下回复:

    If EPwm1Regs.TZFLG.bit.DCBEVT1 = 1, then that means the comparator is still detecting a bad current reading from ADC-A4. You need to debug the input to the ADC and determine the root cause.