In order to drive a slightly higher current, the use of a transistor circuit will be required. Since all the driving current will be drawn through Vcc and through the transistor, the RPi 5volt line can be used for Vcc (this will limit the available current to 1Amp total draw from the USB supply itself - including the RPi draw). The current limit will be the nominal current the transistor can handle.

In order to drive a slightly higher current, the use of a transistor circuit will be required. Since all the driving current will be drawn through Vcc and through the transistor, the RPi 5volt line can be used for Vcc (this will limit the available current to 1Amp total draw from the USB supply itself - including the RPi draw). The current limit will the nominal current the transistor can handle.

+

120mA in total.

====Transistor Selection====

====Transistor Selection====

+

This circuit requires an NPN transistor. This circuit is not suitable for other types of transistor (example PNP, FET).

+

There is a huge range of transistors available, so I will pick a common & cheap one ([http://uk.farnell.com/fairchild-semiconductor/bc548/transistor-npn-to-92/dp/1467872 BC548] or [http://uk.farnell.com/multicomp/bc108/transistor-npn-to-18/dp/9206736 BC108]) and see how well it suits.

There is a huge range of transistors available, so I will pick a common & cheap one ([http://uk.farnell.com/fairchild-semiconductor/bc548/transistor-npn-to-92/dp/1467872 BC548] or [http://uk.farnell.com/multicomp/bc108/transistor-npn-to-18/dp/9206736 BC108]) and see how well it suits.

''More details on specific transistors see <ref>[http://www.kpsec.freeuk.com/components/tran.htm The Electronics Club:Transistor]</ref>''

The key characteristics of interest are:

The key characteristics of interest are:

Line 113:

Line 115:

Transistors do have a limited amount of current handling ability, which can be improved by coupling together as a [http://www.kpsec.freeuk.com/components/tran.htm#darlington Darlington pair] (often available in a single package). Also higher powered switches such as mosfets, and even relays can be driven for higher power requirements.

Transistors do have a limited amount of current handling ability, which can be improved by coupling together as a [http://www.kpsec.freeuk.com/components/tran.htm#darlington Darlington pair] (often available in a single package). Also higher powered switches such as mosfets, and even relays can be driven for higher power requirements.

−

--- NOTE ---

−

Calculations may be wrong, still researching at the moment...

−

--- NOTE ---

−

=====Calculating R1 - LED Current Limiting Resistor=====

+

====Calculating R1 - LED Current Limiting Resistor====

The value of R1 is similar to before, but since the driving voltage is higher, the same resister will allow more current, thus the LED will be brighter (unless we use a larger resistor).

The value of R1 is similar to before, but since the driving voltage is higher, the same resister will allow more current, thus the LED will be brighter (unless we use a larger resistor).

Line 132:

Line 131:

−

=====Calculating R2 - Transistor Base Resistor=====

+

====Calculating R2 - Transistor Base Resistor====

−

The value of R2 '''unlabled!!!'''can be determined, as follows:

+

The value of R2 can be determined, as follows:

−

--- NOTE ---

+

−

Calculations may be wrong, still researching at the moment...

+

−

--- NOTE ---

+

There seems to be two possible ways to approach this, one is to work out your required driving current through the collector (Ic) i.e. the driving current of the LED, and the other is to determine it's value from the recommended source current of the GPIO pin (for the RPi, 5mA or less is recommended).

There seems to be two possible ways to approach this, one is to work out your required driving current through the collector (Ic) i.e. the driving current of the LED, and the other is to determine it's value from the recommended source current of the GPIO pin (for the RPi, 5mA or less is recommended).

The latter makes most sense to me, but will try both and see how they compare.

The latter makes most sense to me, but will try both and see how they compare.

−

======R2max - Based on driving current requirement (Ic):======

+

=====R2max - Based on driving current requirement (Ic)=====

Vc = 3.3V

Vc = 3.3V

hFE = 110

hFE = 110

Line 151:

Line 148:

−

======R2min - Based on the GPIO pin source current:======

+

=====R2min - Based on the GPIO pin source current=====

To fully switch on the transistor, most transistors require (Vbe) Base Emitter Turn-On Voltage to be around 700mV on the base (it depends slightly on the type, see it's data sheet).

To fully switch on the transistor, most transistors require (Vbe) Base Emitter Turn-On Voltage to be around 700mV on the base (it depends slightly on the type, see it's data sheet).

−

Vc = 3.3V

+

Vgpio = 3.3V

Iout = 5mA = 0.005

Iout = 5mA = 0.005

Vbe Base Emitter Turn-On Voltage = 0.7V

Vbe Base Emitter Turn-On Voltage = 0.7V

−

R2 = (Vc - Vbe) / Iout

+

R2 = (Vgpio - Vbe) / Iout

= (3.3 - 0.7) / (0.005)

= (3.3 - 0.7) / (0.005)

= 520ohms (so 560ohm nearest value)

= 520ohms (so 560ohm nearest value)

Line 164:

Line 161:

transistors, so R2 would be 380ohms)).

transistors, so R2 would be 380ohms)).

−

=====Testing=====

+

====Testing====

−

We can test our calculated values by using a simple prototype circuit, and compare an LED driven directly and through the transistor.

+

We can test our calculated values by using a simple prototype circuit, and compare an LED driven directly and through the ([http://uk.farnell.com/diodes-inc/ztx653/transistor-npn-e-line/dp/9525580 ZTX 653]) transistor.

There is very little difference between the LED brightness*, and even when the transistor base is connected directly to 3.3V (Vc) there is no change(indicating that the transistor is saturated i.e. fully turned on).

+

There is very little difference between the LED brightness*, and even when the transistor base is connected directly to 3.3V (Vgpio) there is no change(indicating that the transistor is saturated i.e. fully turned on).

*Note, there is slight difference due to the current drawn by the transistor itself.

*Note, there is slight difference due to the current drawn by the transistor itself.

+

Also, the LED test circuit is used from before, rather than the calculated R1.

I suggest by using a combination of these two calculations you will obtain, a max value (R2max - Based on driving current requirement (Ic)) and a min value (R2min - Based on the GPIO pin source current) for R2.

I suggest by using a combination of these two calculations you will obtain, a max value (R2max - Based on driving current requirement (Ic)) and a min value (R2min - Based on the GPIO pin source current) for R2.

+

+

+

Generally the larger the R2 is the less current will be drawn from the GPIO pin, however less current will be available through the transistor for the load (Ic) if R2 is too large.

Warnings

While most of these circuits may interface directly to the RPi, the use of a buffered interface (such as the one supplied by the Gertboard) is recommended which will help protect against damage. Alternatively, experiment with one of the Alternative Test Platforms.

Extreme caution should be exercised when interfacing hardware at a low level, you may damage your RPi, your equipment and potentially yourself and others. Doing so is at your own risk!

Aims

The purpose of this guide is to enable control of an LED via the GPIO pins of the RPi.

This is the embedded version of writing a program to display "Hello World" and is the first step in getting started.

The first stage will be to build the hardware we are going to use, and then we shall look at the software which will drive it.

Note:
Until RPi devices are available, I can not confirm this will work on a real RPi.
For now, I shall be using the TI LaunchPad (see Alternative Test Platforms
for details) to test the hardware on (as it is cheap and the logic levels similar).

The Hardware

Theory

This is only a brief and rough overview, since the basics are covered in a lot more detail in many other places (see below).

The GPIO pins on the RPi when defined as an Output is able to cause the voltage on the pin to go HIGH (source) or LOW (sink). This allows signals to be sent to other processors and devices like LEDs. However it is important to remember that the pin will only be able to Source or Sink very small currents, so higher powered devices (such as motors) can not be driven directly from a GPIO pin.

NOTE:
Depending on the specification of the RPi GPIO pins, the current SOURCE ability may be better,
than the SINK (or vice-a-versa).
i.e. If the RPi is able to SINK more current than it can SOURCE, then any driving circuit should
be between the RPi 3.3V pin and the GPIO pin (rather than GPIO pin and GND).

Circuit 1 - Basic LED Driving Circuit

Basic LED Output Circuit 1

The resistor R1 is used to limit the current going through the LED (which has hardly any resistance), without the resistor, the LED will draw as much current as it can until it burns out (or burns out your GPIO pin).

The value you select for R1 will depend on the current required by the LED (upto 20mA depending on the LED used - check the datasheet) and the source current limit of the GPIO (launchpad is ~20mA), the RPi has a 50mA limit for the 3.3V supply line.

We also need to know the forward voltage required by the LED to light, typically around 2V-3.5V depending on colour[2].

If in doubt, use a bigger resistor (=less current & less brightness) and test if good enough by connecting across the 3.3V and ground pins (if you are just experimenting you are unlikely to need LEDs shining at their full brightness anyway).

For instance, one of my test circuits uses 470ohms (which only gives 2.7mA on 3.3V, but the same
circuit can be connected to a 12V supply without blowing the LED - rated @20mA).

Basic LEDx8 Test Module

The above test module has been built to allow easy testing of GPIO outputs by driving up to 8 LEDs.
The resistor value 330 ohms is used (keeps the current draw fairly low).

Circuit 2 - LED Driving Circuit (using Transistor Switching Circuit)

Higher Power LED Driving Circuit

For more detailed information about basic transistor circuits, some useful information is here[3]

In order to drive a slightly higher current, the use of a transistor circuit will be required. Since all the driving current will be drawn through Vcc and through the transistor, the RPi 5volt line can be used for Vcc (this will limit the available current to 1Amp total draw from the USB supply itself - including the RPi draw). The current limit will be the nominal current the transistor can handle.

Note: Vcc = 5V in this example, but the 3V3 supply can be used too,
although remember that the 3V3 should be not used to supply over
120mA in total.

Transistor Selection

This circuit requires an NPN transistor. This circuit is not suitable for other types of transistor (example PNP, FET).

There is a huge range of transistors available, so I will pick a common & cheap one (BC548 or BC108) and see how well it suits.

Suggested hFE:
hFE(min) > 5 x (Iload/Iinput)
We assume we want to draw a very low current from the RPi GPIO,
so even with an hFE=110 and drawing only 5mA we can drive 110mA
(over BC548's Ic(max) limit anyway).

The use of a transistor allows the bulk of the driving current to pass through the transistor to ground, with only a small switching current required to be driven from the GPIO pin. For low powered driving circuits, most transistors will be suitable.

Transistors do have a limited amount of current handling ability, which can be improved by coupling together as a Darlington pair (often available in a single package). Also higher powered switches such as mosfets, and even relays can be driven for higher power requirements.

Calculating R1 - LED Current Limiting Resistor

The value of R1 is similar to before, but since the driving voltage is higher, the same resister will allow more current, thus the LED will be brighter (unless we use a larger resistor).

When the transistor is on the voltage drop is minimal VCE(sat)(90-200mV), so we will just consider the LED voltage drop.

Calculating R2 - Transistor Base Resistor

The value of R2 can be determined, as follows:

There seems to be two possible ways to approach this, one is to work out your required driving current through the collector (Ic) i.e. the driving current of the LED, and the other is to determine it's value from the recommended source current of the GPIO pin (for the RPi, 5mA or less is recommended).

The latter makes most sense to me, but will try both and see how they compare.

There is very little difference between the LED brightness*, and even when the transistor base is connected directly to 3.3V (Vgpio) there is no change(indicating that the transistor is saturated i.e. fully turned on).

*Note, there is slight difference due to the current drawn by the transistor itself.
Also, the LED test circuit is used from before, rather than the calculated R1.

I suggest by using a combination of these two calculations you will obtain, a max value (R2max - Based on driving current requirement (Ic)) and a min value (R2min - Based on the GPIO pin source current) for R2.

Generally the larger the R2 is the less current will be drawn from the GPIO pin, however less current will be available through the transistor for the load (Ic) if R2 is too large.

The Software

While the RPi is not available, I can only confirm the TI LaunchPad code works for me.