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.

UCD3138PFCEVM-026: UCD3138PFCEVM-026

Part Number: UCD3138PFCEVM-026

Hello expert
For the UCD3138PFCEVM-026 evaluation board, I see in your information that the duty cycle feedforward method is used to reduce the input current THD. Is there any code for this method in the PFC source program, or is there only double closed-loop control in the source code? Because so far I have not found this piece of code in the program.

Another problem is the AC drop detection. Does it have any specific functions? Under normal circumstances, there will be moments when the voltage drops below 85V in each cycle. Or is it to detect a sudden decrease in the input voltage? 
Looking forward to your reply!

  • If you look at the calculate current target function, you can see that the FILTERYNREAD register is being used.  This is the current compensation filter output and is being used to generate the duty cycle.  You can see that the DFF calculation is being made here.  

    void calculate_current_target_ct(void)
    {

    iv.vbus_scaled = (iv.adc_avg[VBUS_CHANNEL] * VBUS_TO_VAC_SCALING) >> 15;
    //scale vbus to match scale of vrect Q12 * Q15 >> 15 = Q12

    if(iv.vbus_scaled > iv.vin_filtered)
    {
    iv.numerator_1 = iv.vbus_scaled - iv.vin_filtered; //Q12
    }
    else
    {
    iv.numerator_1 = 0; //if vrect greater than vout, don't need any boost. shouldn't happen often
    }

    iv.numerator_2 = (iv.i_target_average * iv.numerator_1) >> 8; //Q14 * Q12 >> 8 = Q18

    iv.numerator_3 = (iv.cir_buff[iv.emi_pointer] * iv.numerator_2); //Q12 * Q18 = Q30

    iv.cla1_output_filtered = (Uint32)Filter1Regs.FILTERYNREAD.bit.YN + iv.cla1_output_filtered -
    (iv.cla1_output_filtered >> 2);//Q25

    iv.denominator = ((iv.cla1_output_filtered >> 6) * iv.vbus_scaled) >> 11; //Q19 * Q12 >> 11 = Q20

    iv.i_target_sensed = (iv.numerator_3 / iv.denominator) + iv.i_target_offset; //Q30/Q20 = Q10

    In a previous post, you asked about the ac drop detect threshold.  It is calculated based on the worst case valley in voltage around zero crossing.  If the voltage stays below the threshold for a specific number of samples, I believe 10, then the ac drop is detected.  If the RMS voltage goes below 85 volts, this can be detected as an AC drop, or it may be detected as an under voltage event.  In either case, the PFC needs to shut down and warn the secondary side.  If you want this to happen at a lower voltage, then you can adjust the AC drop threshold.