From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How to introduce dead time (high side and low side) in digital signals for FET drivers?

Hello,

 

I've got two digital signals. Opposite values. Eventually the two outputs will be used to drive MosFETs in the switching stage of a class D amplifier.

 

What I need to do is introduce high side and low side dead time to the signals so as to avoid excessive shoot-through current (so that the FETs don't turn on/off at the same time). I've attached an image illustrating what I want to do with the signals. I've also included a screenshot of the digital signals that I currently have.

 

What would be the best way to accomplish this? I've tried to introduce a delay to one signal when the other one switches, but it's not working for me.

 

 

THANKS!

Download All
0 Kudos
Message 1 of 5
(3,343 Views)

Can you show us your code.  Simply adding a time delay should work.  Maybe another set of eyes will catch something.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
0 Kudos
Message 2 of 5
(3,336 Views)

I've attached a screenshot of the relevant section of my VI.

 

Any input would be greatly appreciated.

0 Kudos
Message 3 of 5
(3,314 Views)

Hi jpmz68,

 

Based on your dead time pic, I think that one way to make this work could be playing with the duty cycle of the signal and also with the phase, so you can delay one from the other.

 

Regards,

steve.bm
AE | NI
0 Kudos
Message 4 of 5
(3,293 Views)

I had to do something like this before for a 3-phase motor controller where each leg had to be sequenced between low-side and high-side connections with a short dead time in between.  Can't recall now why I didn't do it with counters -- maybe had something to do with needing to support direction-reversal and variable speed?  Or maybe I didn't have enough available on the platform at the time.

 

ANYway, it sounds like your app is pretty similar to any 1 leg of the motor controller I worked on.  Here's a pretty simple way to approach it at first, and you can always tweak it if it's not quite what you need.

 

I'd plan to set up a output sample clock whose period matches the minimum dead time spec (with any margin you deem necessary).  I would try to make a switching period that's an even integer multiple of that dead time.   I'd then form two boolean arrays of half that size, one of all True and one of all False.  Now change only the *very first* element of the True array to False to act as your dead time.  Finally, make 2 full size arrays, one with the Trues followed by Falses, the other with the Falses followed by Trues.

 

Ta da!  Those are the digital states you'll need for switching your FET's.

 

Since I'm attending to some uninstall / reinstall now I had a few minutes to whip up a partial example below.

 

-Kevin P

 

 

deadtime.png

 

CAUTION! New LabVIEW adopters -- it's too late for me, but you *can* save yourself. The new subscription policy for LabVIEW puts NI's hand in your wallet for the rest of your working life. Are you sure you're *that* dedicated to LabVIEW? (Summary of my reasons in this post, part of a voluminous thread of mostly complaints starting here).
0 Kudos
Message 5 of 5
(3,280 Views)