Saturday, 26 September 2015

pwm - How to drive power MOSFET by logic level signal without inverting phase?


I struggle yet another day with very simple problem (circuit). This challenge seems to be very common, but nowhere I can find a complete solution:


I have a heavy load (12v / 1 Ohm peltier = 12A max) which I need to drive using microcontroller (5v Arduino to be specific).


I was able to get an IRFZ44N N-channel power MOSFET, which is rated 49A Vds so hopefully can handle that load. The thing is that its Vgs = 10V (the voltage to turn it fully on).


Here is the circuit I came up with until now, based on 2-stage voltage level shifter (as suggested here):


enter image description here


Simulation shows phase shift between input vin and vdrain anyway, even if there is no phase shift between vin and vgate (which is very mysterious for a noob like me):


enter image description here


Can you please help me understand this or help me coming up with a complete solution? I did spend lots of time trying to Google it and nowhere I can find one without inverting PWN phase (even here at stack-exchange).



And this must be extremely simple right?


In case you ask: I have my reasons to keep it non-inverted (long story short - I do not want the situation that load is on when micro-controller is off as they have separate power supplies). Even thou - I still want to understand the problem and find a solution.



Answer



If you want the load to be off when the micro is not powered, the polarity from the driving signal to the output plays no role. When the micro is turned off, its outputs are high impedance, i.e. they act like tiny capacitors with one terminal to ground. Any tiny, little noise can charge these caps, so the voltage on the pins can pretty much assume any value.


You can solve this problem in many ways. Since you use the level shifter I will assume the arduino pins are not 12V tolerant.


Here's your schematic:


schematic


simulate this circuit – Schematic created using CircuitLab


That's actually pretty near to what you have. I am not really sure of why you had all these resistors spread around, anyway let's see what happens in three cases.


vin = 5V

Q3 is on, Q2 is off, mos gate is tied high via R4, load is on


vin = 0V
Q3 is off, Q2 is on, mos gate is tied low, load is off


vin = hiz
this means vin is disconnected. R6 pulls the first bjt base low, turning it off, Q2 is on, load is off.


Please note that this circuit does not use the 5V rail, so if the 5V rail is removed the load is switched off.


If you can be sure that the 5V will always be present when the 12V is present, then you can probably save one transistor.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...