Implementing unipolar PWM dc to ac inverter using a microcontroller based design

Thread Starter


Joined Nov 21, 2015

I have a full bridge made of transistors that I want to control to produce a 60Hz ac signal from my dc bus. My design is a microcontroller based. I have a battery connected to my DC bus (about 60V) and I have a bootstrap driver to drive my "upper" transistors. I want to implement unipolar PWM switching to generate the gating signals for my transistors.
In order to have unipolar type switching I need to compare the triangular wave (carrier) which has a frequency equal to the switching frequency with 2 sine waves. The first is the original sin wave and the second is the 180 degree shifted version of the sine wave. Where in both cases the sine wave is my desired ac wave that I would like to see after my filter. If the value of the reference is greater than that of the carrier triangular wave, the output corresponding to that comparison is driven high or else, it is driven to the low state. This was the basics of the unipolar PWM.

As for my design, i am using a cortex m3 based microcontroller that has a timer running in up/down count mode that runs from 0 to PERIOD_SPECIFIED and back to 0 (this could mimic the carrier wave). I can also use the compare feature on this timer to achieve the comparison discussed in the previous paragraph .However, I can't see an obvious way to use this as a carrier wave because it has values only in the positive area. I also have complementary outputs and dead time features.

I want to know if anyone has tried implementing unipolar PWM on a microcontroller (or even bipolar PWM) and if yes what is the algorithm to make it run?