I just realized a solution for you people that use High & Low side FET drivers (note, this is not tested).
Just split the PWM-signal and use a simple inverter(NPN or mosfet) to drive the low-side fet!
This way, you’ll create a so called “complementary pwm”.
But as I said, this is untested…
I like this approach, it is very simple. I’m not sure if it would work well, I don’t really see how you would configure dead time. But it definitely makes sense to use this kind of circuit.
At this point the library doesn’t implement the 6pwm approach, because it is a bit complicated and very very specific for certain hadware.
These kind of hardware approaches are very cool because they leave the software to do the “smart stuff” and let it delegate the doubling the pwm.
But some of the MCUs we are supporting already , as various stm32 devices, have a great support for 6pwm control, just it is very complicated to setup using the Arduino IDE.
@Antun_Skuric this sure is a bit over simplified solution.
I guess dead time could be achieved by using a schmitt trigger/rc delay circuit, but that makes the HW-side a bit more complicated and frequency dependent.
Tried writing my own FOC software on a stm-board (with built in dead time), that was easy.
Transferring that to Arduino is probably a bit more complicated.
Could it work to shift the pwm-alignment from edge aligned to center aligned?
That way, the dead-time maybe could be controlled by adjusting the duty cycle, and hopefully work on multiple devices… Still hard to make it platform independent though!
Noob question: What exactly do you mean by dead time? Do transistors turn on faster than they turn off, and thus need a delay between switching one off and another on, to prevent having a few nanoseconds of short circuit? Or is there some other reason that a delay is needed?
As far as hardware design goes, wouldn’t it be easier to use P-channel MOSFETs for the high side and N-channel for the low side (or vice versa) so you don’t need the inverter?
Yeb the minute short circuit generates heat. Thats why, when switching at let´s say 50khz, you do not want that. It can be handled by some MCU´s, like mentioned. The advantage of using a driver is several. Take a look here :