Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

30ns gate drive pulse during freewheeling #31

Open
malte0811 opened this issue Jun 1, 2023 · 0 comments
Open

30ns gate drive pulse during freewheeling #31

malte0811 opened this issue Jun 1, 2023 · 0 comments

Comments

@malte0811
Copy link
Collaborator

This is an issue rather than a PR since the changes will be in binary files, so resolving merge conflicts "nicely" is not possible. Since this directly affects the switching logic I would like someone to double-check my arguments.

The problem

During freewheeling, the "switching" and "passive" half-bridge are swapped after every (full) cycle. On the gate drive signals (GDxA/B) which turn on at the same time as this "swap", a 30ns pulse is present at the start of the "passive" cycle of the corresponding half-bridge. Below are scope-shots of this pulse on a dev-board (with the CT input tied to 5V):

DS1Z_QuickPrint2
DS1Z_QuickPrint3

I originally noticed these pulses on the actual IGBT gates of my (small) coil, so I assume that they contribute some switching losses "in the real world" rather than being a purely theoretical issue.

The cause

All of the following is in the PWM schematic sheet. KillA and KillB are derived from Tselect/nTSelect:
kill

These are inverted on every other falling edge of ST, which is a ~30ns pulse (2 cycles of 64 MHz):
old

However the half-bridges toggle on the rising edge of ST:
gdt

So the bridge that will become passive is switched 30ns before it is disabled, causing the pulse.

Proposed fix

As a fix I suggest to make Tselect/nTSelect toggle on the rising edge of ST instead of the falling one (by removing the inverter on ST in the second "cause"-screenshot). The value of (n)Tselect differs from the "old" value only while ST is high. The (n)Tselect signals are used in two places, the first and third "cause"-screenshot. In the first one we want the change. In the third one it does not change the behavior: Since HT is ST or …, both inputs of the MUX are high while ST is high and the select signal does not affect the output.
ht

This removes the pulses while keeping the non-freewheeling output correct. I have tested the fix in my small coil without any issues, but I may have missed issues affecting e.g. only larger coils or QCWs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant