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.

UCD3138: PFC with 400Hz input

Part Number: UCD3138

Hello,


We tried running the PFC (in interleaved configuration) with 400Hz input. However, the system never goes into regulation. Debugging further, we see that it doesn't leave the IDLE state at all, because of the VAC limit checks:

    if(( iv.vin_squared_average > VAC_MIN_ON_SQ_AVG) && (iv.vin_squared_average < VAC_MAX_OFF_SQ_AVG) ) {   ...   }

Is there a problem with the vin_squared_average calculation? It appears to be dependent on the frequency. If anyone got the PFC working with 400Hz input, we'd like to hear any input about the process.


On another note, we also noticed that when we turn off ADC averaging during ADC initialization, the PFC no longer functions, even with 50 or 60Hz AC input. Any ideas why?

Thanks

  • I'm looking at a fairly generic PFC code, and I see one problem right off the bat.  If you look at the

    half_cycle_processing function in standard interrupt.c

    You'll see this:

    if (iv.slow_negative_cycle_counter > 50)  //if we got a good half cycle

    That's there to prevent us from using a short cycle to calculate the vin squared average.

    This function gets called every 100 usec, so 50 is 5 milliseconds.  So your 1.25 msec half cycles aren't getting in there very well.  You're only going to get maybe 10 or 11 cycles, so the whole approach is suspect.  It's going to be noisy.  But if you change the number to maybe 8 in this statement and its equivalent for the positive half cycle, it should be good enough to get started at least.  Or get over this hurdle.

    I'm not sure about the ADC averaging.  That may take actually running it and looking at the numbers.


    We have looked at 400 KHz, but I'm not aware of us running it.  I remember hearing that we needed to change the analog filtering in lots of places, including some of the ADC inputs.  Obviously more bandwidth is needed there.

  • Hello Ian,


    We completely re-wrote the half_cycle_processing function and now the PFC starts running.

    However, we are running into newer problems. First and foremost, our current waveform is very distorted for 400Hz operation:

    Here's the 60Hz waveform for comparison, which is much cleaner.

    Probably some computation somewhere is using stale, slow data, but we can not find out exactly what is going on?

    Do you have an idea where the problem might be, by looking at the above waveform?

    Thanks,

  • The first things you need to change are the coefficients for the current compensation, which you should be able to do using the fusion GUI.  You also need to change the hardware EMI filter on the input.  They are currently optimized for 50 to 60 Hz.

  • Hello Ian,


    Yes those are the somewhat obvious ones. We've done 400Hz PFC's before. Just not with UCD3138.


    I'm more concerned with the application software side. There appears to be a lot of "magic constants" and some assumptions in the code for 50/60Hz. Some of them we caught ourselves, some you pointed out above nad elswhere in the forums, but I am worried that there are many more that we're missing.


    Best,

  • The waveforms look to us like waveforms that need the coefficients and EMI corrected.  I agree that there may be other issues hiding, that's why I said the compensation and EMI are the first things you need to do.   After that, if necessary, we can continue to peel the onion.