Editing Driving Large Loads with the Arduino

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 61: Line 61:
  
 
any help here?
 
any help here?
 
=== DC motor driver ===
 
 
Relays and small DC motors are often driven with a circuit like this:
 
 
 
<pre>
 
                            +Vhigh
 
                    D1    |
 
                +---|>|-----+
 
                |          |
 
                +--(motor)--+
 
  Arduino      |
 
    GPIO-+-R2-|[nFET Q1
 
          |    |
 
          R1    |
 
          |    |
 
        GND---GND
 
 
      Low-side driver with logic-level nFET
 
 
</pre>
 
 
''(FIXME: show corresponding pFET circuit?)''
 
 
R1 is typically in the range of 10 KOhm to 1 MOhm.
 
R1 is a "pull-down" resistor that turns the nFET off and holds it off
 
when that Arduino GPIO pin is tri-stated -- such as while you are pushing the Arduino reset button,
 
or if your program accidentally makes that Arduino pin an "input" pin.
 
 
(While most people seem to attach R1 to the "Arduino" end of R2,
 
other people attach R1 to the "FET" end of R2.
 
It doesn't make any difference).
 
 
D1 is often a Schottky diode, perhaps a 1N582x (3 ampere), to handle PWM.
 
D1 is often a rectifier diode, perhaps a 1N5400 series (3 ampere) diode, when the designer expects the Arduino to switch only "occasionally" -- less than 100 times a second.
 
D1 is a flyback diode.
 
[http://en.wikipedia.org/wiki/flyback_diode Wikipedia: flyback diode]
 
 
Q1 is some logic-level FET.
 
There are hundreds of such FETs available, such as
 
the PSMN041-80YL in a Power-SO8.
 
the BUK9515-60E in a TO-220-3
 
 
R2 is often 100 Ohms.
 
R2 is the "series gate resistor", aka "Rgate".
 
Some people take the approach of picking a resistor to guarantee that the Arduino will stay within its maximum current limit (40 mA) at every instant.
 
Since the gate of the FET acts like a small capacitor,
 
these people pick R = V/I = 5V/40mA = 125 Ohm for a 5 V Arduino,
 
minus the roughly 25 Ohm internal resistance of the Arduino I/O drivers, giving a minimum gate resistance of 100 Ohm.
 
 
For Rgate, some people recommend anything from 100 Ohm to 270 Ohm,
 
to keep the gate from "ringing" due to the capacitance of the gate and the inductance of the wires between the Arduino and the FET.<ref>
 
http://forum.allaboutcircuits.com/showthread.php?t=53431
 
</ref>
 
 
This 2-resistor connection between the Arduino and the FET is adequate when
 
* (a) driving a logic-level FET, and
 
* (b) switching at relatively low frequencies (<1000 Hz ???), and
 
* (c) the switched leg of the motor is intended to be switched between (a) connected to the Arduino GND or (b) disconnected. (or switched between (a) connected to the Arduino VCC or (b) disconnected.) and
 
* (d) the motor is driven by extra-low voltage (<60 Vdc ???).
 
 
This 2-resistor circuit allows the Arduino to directly turn on and off a logic-level FET, and so indirectly turn on and off relays and 12 VDC lamps and other devices that the Arduino cannot directly drive.
 
 
However, there are cases where the Arduino can't directly switch a high-power FET on and off fast enough (1 MHz DC-DC converters, so (b) doesn't apply) or with the right voltage ("standard" nFETs that require Vgs above 8 V to turn all the way on, so (a) doesn't apply) or the Arduino needs to control both a high-side and a low-side FET (many kinds of [[motor driver]], where (c) doesn't apply).
 
 
  
 
== Triac ==
 
== Triac ==
Line 157: Line 91:
  
 
=== Stepper Drivers ===
 
=== Stepper Drivers ===
 
* [[Motor driver]]
 
 
 
===  H Bridges ===
 
===  H Bridges ===
  
Line 169: Line 100:
  
 
===  Power OpAmps ===
 
===  Power OpAmps ===
 
* [[op amp]]
 
  
 
=== LED Drivers ===
 
=== LED Drivers ===
Line 176: Line 105:
  
 
== Links ==
 
== Links ==
 +
 +
*[[Motor driver]]
  
 
*[http://www.acroname.com/robotics/info/articles/drivers/drivers.html Driving Loads with High Current]
 
*[http://www.acroname.com/robotics/info/articles/drivers/drivers.html Driving Loads with High Current]
Line 184: Line 115:
 
*[http://www.kpsec.freeuk.com/trancirc.htm Transistor Circuits]
 
*[http://www.kpsec.freeuk.com/trancirc.htm Transistor Circuits]
 
*[http://www.electronics-tutorials.ws/transistor/tran_4.htmlElectronics Tutorial about Transistors as Switches]
 
*[http://www.electronics-tutorials.ws/transistor/tran_4.htmlElectronics Tutorial about Transistors as Switches]
*[https://www.allaboutcircuits.com/technical-articles/driving-led-arrays-with-an-arduino/ Driving LED Arrays with an Arduino]
 
 
*[http://teachmetomake.wordpress.com/how-to-use-a-transistor-as-a-switch/ Teach Me To Make How to Use A Transistor as a Switch]]
 
*[http://teachmetomake.wordpress.com/how-to-use-a-transistor-as-a-switch/ Teach Me To Make How to Use A Transistor as a Switch]]
 
  
  
 
[[Category:Microcontroller]][[Category:Arduino]][[Category:PIC]]
 
[[Category:Microcontroller]][[Category:Arduino]][[Category:PIC]]

Please note that all contributions to OpenCircuits may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see OpenCircuits:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)