Driving Large Loads with the Arduino
Driving Large Loads with the Arduino
This is a draft it still has a ways to go
( and with other micro controllers, the PIC ….. )
What are Large Loads
The Arduino has a bunch of output pins that can do things like light led's and provide signals to servo motors, but try connecting it to a hi fi loud speaker and not much happens ( although you may damage the Arduino forever ). For our purpose a large load is almost any load ( what you connect the output to ) that is too much for the Arduino. These methods for large loads fall into several different classes with some common features.
Ideas for Driving the Loads
In some sense anything that can be used to drive a large load is an amplifier, a device with a output bigger than its input. If you want loud sounds from a Arduino you can use some computer's amplified speakers, or a hi fi. There are some cautions, but it is pretty basic, for most audio amplifiers the arduino outputs are close to what these audio amplifiers expect as inputs.
In many cases a simpler amplifier will do, many of these fall in the category of a low side switch ( [|Transistor Low Side Switch ] ). Here is a schematic of one using a push button ( not useful for the arduino, because the arduino cannot press the switch ):
To be useful to the Arduino you need to replace the push button with something the Arduino can push:
- Transistor ( bipolar, but not too depressed )
- Transistor ( fet, field effect )
- Driver ICs
With a relay we have a simple adaptation of the push button switch but the “button” is pushed by an electro magnet. Often the electro magnet is itself a large load, but for some relays ( particularly ones called reed relays ) the drive may be within the capacity of the arduino. When the relay is a large load you can use a transistor low side switch to drive it. Here are some features of the relay that are either naughty or nice:
A relay can be set up where there is no electrical connection between the input circuit and the output circuit ( we call this isolating the input from the output ). This can protect both the input circuit and any person who might come in contact with the input circuit or other parts of it ( like control push buttons ) A relay can switch large currents and large voltages: 2 amps 120 volts is pretty easy, currents of 10's of amps and 100's of volts are manageable A relay can not switch too fast, 1 Hz ( one a second ) is pretty fast for most relays, Reed relays tend to be some of the fastest. A relay cannot switch too many times. A transistor might switch at 10 kHz for hours, reaching millions of switching in little time. There are relays called solid state relays that have no mechanical parts, generally they are electrically more like transistors, but configured so that they can be more or less drop in replacements for electro mechanical relays. Solid state diodes can also be fast. Relays use magnets so when turned off they have what is called and “inductive kick”, this can destroy the Arduino. A snubber diode can be used to deal with this. ( []) Relays are not cheap or small for small large loads, a transistor is a few cents ( at the low end ) relays tend to be larger and a few dollars. .
This circuit shows how to connect a relay with a transistor low side switch and a snubber diode, it is a partical circuit for many relays with the Arduino, it leaves out a few details like the values of the components and voltages ( [])
Transistor Low Side Switch
We have discussion of low side switch on other pages of this site:
Transistor ( fet, field effect transistors )
Fet are not so much current or voltage amplifiers, but variable resistors whose resistance is controlled by a control voltage ( much like the voltage on a capacitor, no current is required once the capacitor – gate on a fet – is charged, substantial current is required to charge this fast ). We typically use these in either the on or off state, resistance of infinity ( in partice mega ohms ) and resistance of 0 ( in practice often a small fraction of an ohm ). Unfortunately many fets need voltages in the range of 10 volts, too much for an Arduino. To avoid this we use a special set of fets called logic level which can be switched to low resistance with voltages the arduino can deliver. The characteristic are similar to bipolar transistors hear we will contrast them to bipolar transistors.
Often have a lower voltage drop when turned on and therefore waste less power as heat Many other small technical differences we will skip. May be more susceptible to static damage.
Examples in projects:
any help here?
Is a bit of a specialized part, but is often useful ( again connected as a low side switch ) for controlling fairly large ( 100 or more volts ) voltages at modest currents. One application is EL wire switching.
Examples in projects:
There are all sorts of driver IC's so coverage here will, at least for awhile, be brief. A driver can use all of the parts above plus others.
This first example is a Low side switch (add link here ) ULN2803 OCTAL PERIPHERAL DRIVER ARRAYS eight NPN Darlington – drive 2 stepper motors, or 8 fairly heavy loads, max at 35 v and 500 ma See it used in: []
On a bit of a different note shift registers are often used to expand the number of output pins. Some of these also contain fairly high power low side switches. Look up: tpic6595
Often we use so called row and column drive ( google it ) to drive things like led arrays. In this case we cannot use just low side switches, but also need to use high side switches. One that is good for tens of volts, hundreds of ma, and can be driven from arduino logic outputs is. Look up: UDN2981.
An H Bridge ( usually a transistor circuit, often an IC ) consists ( logically ) of 4 switches, 2 low side and 2 high side. This arrangement makes it possible to not only turn current on through a device but additonaly reverse its direction. Useful for dc motors, a component in some servo motors, and with bipolar stepper motors running on a single polarity power supply.