DSPRelated.com
Forums

PWM signal from DSP EVM

Started by millindala September 21, 2002
Hi,

I am using a DSP56805EVM to generate the PWM signals for a three-
phase inverter. I have created a C program for open-loop V/Hz
control of PWM inverter (on the lines of the 3 phase open-loop V/Hz
control sample program).

In the execution of the program, the 8 channels of A/D and the gpio
port B are utilized in addition to the 6 PWM-A signals. I use three
ribbon cables (each of 1' length) for the connectors of A/D
converter, Port B and PRI-UNI3. The A/D converter channels are used
only for protection purposes and not for processing.

Before giving the dc bus voltage to the inverter, I verified that
execution of the program generates sinusoidal PWM waveform.

However, upon energizing the dc bus of the inverter (to about 700
V), the pulse width of the PWM signals coming from the DSP56805EVM
is no more varying sinusoidally. Instead, the pulse width remains
ever constant thereby injecting a dc voltage to the circuit at the
output of the three-phase PWM inverter.

I don't understand why the pulses are getting affected (widths are
becoming constant rather than modulate sinusoidally) upon energizing
the power circuit. The open-loop control program does not utilize
any of the output variables to determine the pulse widths of the PWM
signals.

If anyone can explain what is happening in the DSP56805EVM during
the execution of the program (after energizing the dc bus with 700
V) and suggest to me a workaround, I would appreciate.

Thanks,
mahesh



--- In motoroladsp@y..., "millindala" <millindala@y...> wrote:
> Hi,
>
> I am using a DSP56805EVM to generate the PWM signals for a three-
> phase inverter. I have created a C program for open-loop V/Hz
> control of PWM inverter (on the lines of the 3 phase open-loop V/Hz
> control sample program).
>
> In the execution of the program, the 8 channels of A/D and the gpio
> port B are utilized in addition to the 6 PWM-A signals. I use three
> ribbon cables (each of 1' length) for the connectors of A/D
> converter, Port B and PRI-UNI3. The A/D converter channels are used
> only for protection purposes and not for processing.
>
> Before giving the dc bus voltage to the inverter, I verified that
> execution of the program generates sinusoidal PWM waveform.
>
> However, upon energizing the dc bus of the inverter (to about 700
> V), the pulse width of the PWM signals coming from the DSP56805EVM
> is no more varying sinusoidally. Instead, the pulse width remains
> ever constant thereby injecting a dc voltage to the circuit at the
> output of the three-phase PWM inverter.
>
> I don't understand why the pulses are getting affected (widths are
> becoming constant rather than modulate sinusoidally) upon
energizing
> the power circuit. The open-loop control program does not utilize
> any of the output variables to determine the pulse widths of the
PWM
> signals.
>
> If anyone can explain what is happening in the DSP56805EVM during
> the execution of the program (after energizing the dc bus with 700
> V) and suggest to me a workaround, I would appreciate.
>
> Thanks,
> mahesh

We have analyzed the case based on the limited information given
above.

Scenario 1:
Customer has enabled and is not serving some interrupt coming from
GPIO, IRQ, Timer or Encoder pin. Once he applies high voltage to the
DC-bus the noise generated by PWM switching triggers the interrupt
that ends up in stop/debug mode (it depends if he uses SDK or own
code). Even in case the ISR is not defined the program may loose
control and may end-up on illegal instruction that will cause the
illegal instruction ISR - usually it means the core is put in
stop/debug mode.

In case of stop/debug mode the PWM module continues to output the
same value (injecting DC voltage) since the reload ISR that is
supposed to calculate the sine waveform is not executed any more.
The solution here is to properly handle interrupts and enable just
ones that are used and are already properly initialized.

Scenario 2:
Customer uses the fault logic (the Fault inputs are in fact kind of
feedback) with overcurrent threshold to be very low. Then, regardless
on the preset dutycycle (of course - only if it is high enough), the
PWM output is cut-off at certain pulse width. This pulse width
corresponds to the di/dt and the preset overcurrent threshold.
Note similar result can be achieved if the fault logic is influenced
by the PWM switching noise.

The solution here is to properly set the overcurrent threshold and
make sure the fault signal is not noisy (he could add filter but
needs to make sure it does not slow down the emergency PWM shut-off
beyond the acceptable limit).

We hope this helps.