Академический Документы
Профессиональный Документы
Культура Документы
These course notes are licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
1 - lushprojects.com
Part 1: Electronics
2 - lushprojects.com
Schematic
+
Battery
-
Bulb
Build on Breadboard
Rows along top and bottom are connected Groups in columns are connected
MEGAPOWER 9 Volt
MISTAKE
Don't connect components along the columns this just connects their leads directly.
3 - lushprojects.com
Battery
-
Bulb
Bulb
Bulbs in Parallel
Like bulbs in your house
Both bulbs get the full voltage of the battery. Twice the current flows when compared to having one bulb. Lifting one leg of a bulb out of the breadboard breaks the circuit through that bulb and allows them to be switched on and off individually. This is the same job a lightswitch does.
Battery
-
MEGAPOWER 9 Volt
Bulb
Bulb
Andr-Marie Ampre
20 January 1775 10 June 1836 Discovered many properties of electromagnetism
4 - lushprojects.com
Resistors
Resistors limit the flow of electricity through part of the circuit. This can be used to control timing circuits, divide voltages in to smaller portions or protect devices that are sensitive to too much current. Resistance is measured in Ohms (), kilohms (1,000=1k) or Megohms (1,000,000 =1M) Resistors can go in the circuit either way round. The value is marked on the device with a colour code (see right), or it can be measured with almost any multimeter. A shorthand is often used to write the value of a resistor. For example: 100R=100 10k=10k 4k7=4.7k
Some resistors used in these experiments: 100R Brown, Black, Brown 220R Red, Red, Brown 1k Brown, Black, Red 10k Brown, Black, Orange 100k Brown, Black, Yellow
Only for five band resistors! Skip for four band resistors
Resistor R LED
What do you notice about the LED? What do you notice about the 220R resistor when it is in the circuit?
MEGAPOWER 9 Volt
Try using different values of R in this circuit: 100k, 10k, 1k, 220R
R
Flat & short-lead LED
MEGAPOWER 9 Volt
LED
Try touching the ends of the wire probes on to different objects: - your skin - fresh water - salt water - a thick line drawn with a soft pencil - a (non light-emitting) diode (try this with the diode both ways round)
220R
Flat & short-lead LED
Probes
6 - lushprojects.com
Transistors
The solid state transistor is the single component that has driven the electronics revolution. Initially they were very hard to manufacture and regarded expensive specialized parts. Improved mass production techniques gradually lead to transistors becoming cheaply and easily available. Later on a new wave on innovation was created when it was realised that multiple transistors could be manufactured on a single wafer of silicon leading to the integrated circuit, microprocessors, microcontrollers and all the advanced toolkit available to modern electronic engineers. We are going to focus on one type of transistor the NPN bipolar transistor. A transistor has three terminals and acts as an amplifier. For an NPN transistor the terminals are called the collector, base and emitter. A small current flowing in to the base and out of the emitter controls a much larger current flowing from the collector to the emitter. Think of the current at the base as working to control a tap that varies the flow through the collector. If no current flows in to the base then no current will flow through the collector either. The base voltage varies between 0V when the transistor is off and about 0.7V when the transistor is on. Like an LED the input to the base normally needs to be protected by a resistor to stop the base being overloaded. Using transistors we can build many types of circuits including amplifiers, logic circuits, oscillators, filters and power controllers. The maximum collector current ranges from a few hundred mA to several Amps depending on the transistor. The gain of the transistor is the multiple of the base current the can flow through the collector. This is normally in the range 50-400 and is sometimes written as hFE.
NPN Transistor
Collector Base Emitter Small control current Big current can flow here
Transistor Packages
7 - lushprojects.com
220R
220R
10k
Collector Base
2N3704
LED
LED
Emitter
Connect the circuit up as shown and then try applying the probes to various items. Notice the brightness of the two LEDs. You should find the LED in the collector circuit is much brighter than that in the base. Items to try: - Probes open (no connection). Transistor is off and neither LED is lit. - Probes touching each other. Transistor is fully on. The LED in the collector circuit glows brightly. - Probes along a pencil track - Probes on your skin
BCE
8 - lushprojects.com
Capacitors
Capacitors store and release small amounts of electrical charge. In electronic circuits they are used to control the timing of circuits, smooth out electrical waveforms and to separate DC and AC components of a signal. Capacitance is measured in Farads (F), but one Farad is much too big to be practical. Useful units are: Micro Farads (F or uF) = 1/1,000,000th of a Farad Nano Farads (nF) = 1/1,000,000,000th of a Farad Pico Farads (pF) = 1/1,000,000,000,000th of a Farad Capacitors less than 1uF can normally go in a circuit either way round. Larger capacitors normally have a polarity (normally the negative end is marked) and have to go in a circuit the right way round. Capacitors come in a many different types that are designed for different applications. For this circuit the type used isn't important so we've used the cheap and cheerful options. The small capacitors are ceramic discs and the large capacitors are electrolytics. Several labelling schemes are in common use for capacitors. The ceramic discs used in these circuits are labelled with three digit codes. The first two digits are the value and the third digits is the number of zeros making up the capacitance in pF. So: 10nF = 10,000 pF = 103 100nF = 100,000pF = 104
Electrolytic polarity
+ve -ve
+ve
Small indent
-ve
Michael Faraday
9 - lushprojects.com
Discovered the fundamental relationship between electricity and magnetism (amongst many things).
+
100u
MEGAPOWER 9 Volt
100uF
+
10k
-
LED
10k
+
Remove the capacitor and put in in this circuit without shorting out the legs.
10k 100uF +
10k
In the first circuit the capacitor charges up with current from the battery. The value of the resistor and the capacitor determine how quickly the charge builds up. As the capacitor charges it develops its own voltage that pushes against the battery. This reduces the flow of current and the LED goes out. When the capacitor is moved in to the second circuit it discharges through the LED lighting it up.
10 - lushprojects.com
100u
LED
220R
220R
10k
MEGAPOWER 9 Volt
0u 10
LED
220R
10k
220R
BCE
100uF + 2N3704 Build the circuit and then try connecting the flying lead to the negative line. The LED should go out momentarily and then relight. Disconnect then reconnect the flying lead to show this is repeatable.
11 - lushprojects.com
Times two
With two copies of the previous circuit you can manually make an interesting effect. Build two versions and then cross over the flying leads. Hold the end that is now on the left in your left hand and the other end in your right hand. Connect one lead (say the one in your right hand) to the negative line. The left hand light will go out. Now follow the rules: - if the right hand light is on connect the right hand lead to ground. If it is off then disconnect it. - if the left hand light is on connect the left hand lead to ground. If it is off then disconnect it. This manually makes the two LEDs flash alternately.
220R
220R
220R
220R
10k
10k
MEGAPOWER 9 Volt
0u
10
LED
0 10
+
Flat & short-lead
+
LED
220R
220R
100uF +
100uF +
220R
220R
10k
10k
BCE
BCE
Build the circuit and then try connecting the flying lead to the negative line. The LED should go out momentarily and then relight. Disconnect then reconnect the flying lead to show this is repeatable.
12 - lushprojects.com
Multivibrator
Wouldn't it be useful if you could replace the manual fiddling with leads in the previous circuit with something automatic? Well, guess what with a few simple changes you can. In the circuit below we've removed two of the 220R resistors and instead cross-wired what were the flying leads in to the collectors of the opposite transistor. The two halves of the circuit now work automatically against each other. When the circuit is powered up the lights will flash. This circuit is known as a multivibrator and is the basis of a whole family of circuit designs. It also nicely illustrates the two sides to electronics: 1) understanding individual components and their function 2) Understanding how those components are used to create common building blocks.
MEGAPOWER 9 Volt
220R
LED
220R
10k
0u
10k
0 10
+
Flat & short-lead
+
LED
10
220R
220R
10k
100uF +
100uF +
10k
BCE
BCE
For more experiments: 1) Try changing the values of one or both of the 10k resistors. Suggested alternatives are 22k or 4k7. 2) Try changing the values of one or both of the 100uF capacitors. Try 10uF instead. Observe the result of these changes.
Basic organ
By swapping the capacitors for much smaller values we can change the frequency of oscillation of the circuit to make it much higher in the range your ear can hear. By connecting a speaker to the output instead of an LED this creates a basic organ. Play the organ by touching the wire probes on a pencil line. Note about capacitor marking 10nF = 10,000pF = Normally written as 103 on capacitor
220R
10nF
220R
10k
10k
1k
Speaker
BCE
BCE
10nF
10nF
14 - lushprojects.com
MEGAPOWER 9 Volt
10k
1k
10k
n 10 F
Integrated Circuits
Integrated circuits (ICs) are single packages that contain complete circuits consisting of many components. Today almost all ICs are silicon chips. Intel claims to have produced single ICs with 2,000,000,000 transistors. For the last experiment we are going to use a 4017 decade counter. When this is driven from the output of a multivibrator it can be used to light LEDs in sequence producing a chain light effect. Much of modern electronics is based on using ICs rather than discreet components. The skill lies in finding the right IC and understanding how to use it and its limitations. For example it's unusual to build multivibrators like the ones in these experiments in most designs instead a timer IC like the famous 555 might be used.
16 10k 10k 1k
-
1k
VDD 14 Clock
OP 2 OP 1 OP 0
4017
10uF + 10uF + ENABLE 13
OP 3
RESET VSS 8
15
16 - lushprojects.com
1k
1k
10k
10k
MEGAPOWER 9 Volt
u 10
220R
220R
220R
4017
BCE
10
BCE
LED LED LED
17 - lushprojects.com
Part 2: Arduino
18 - lushprojects.com
What is an Arduino?
The Arduino is a family of tiny computers that are designed to be used for controlling interactive electronic installations. The Arduino computers are comparable in power to early home microcomputers from the 80s like the BBC Micro and ZX-Spectrum. The Arduino has several important advantages: It is designed as a complete system which includes programming tools and hardware The Arduino can be connected to any PC or Mac with a USB cable to download programs The open-source hardware design encourages innovation Strong community with a lot of documentation and examples available Arduino shields make it easy to connect other types of electronics Complete Arduino family of hardware for different applications The Arduino home page with lots of useful information is at: arduino.cc
19 - lushprojects.com
programming LEDs
Flash to show programming operation
USB Connector
Connects to host computer
Power LED
Shows when Arduino is on
Reset button
Press to restart the program. Reset happens automatically on power-on or when programming is completed.
20 - lushprojects.com
Arduino Lilypad Designed for incorporation in to clothes and textiles. Needs an external programmer Simplified power supply (automatic selection of USB or external power) Arduino Skeleton
Arduino Nano
Compact version
Arduino Duemilanove
and many many more. All share the same concepts, programming techniques and development tools
21 - lushprojects.com
http://arduino.cc/en/Guide/HomePage
Status Bar Shows the result of the last action Program Notification Area Used to show messages from the program
22 - lushprojects.com
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */
Setup function: Every sketch must have a setup function. This is run when the Arduino is reset to prepare for the rest of the program Comment: Everything on a line after a // is also a comment Comment: Everything between a /* and a */ is a comment to help the reader understand the sketch. It is ignored by the Arduino
void setup() {
5) Click the Upload button to upload the sketch on to the Arduino. During the upload the LEDs labelled Rx and Tx will flash to show the transmission of data. Once the sketch is uploaded you will get a message Done Uploading and the sketch will start to run. The pin 13 LED should flash. Upload Button 6) Try changing the values in brackets in the delay function call in the loop function. Repeat steps 4 and 5 and see if you notice a difference.
Function call: This is a piece of program that triggers a function to perform a required action. In this case the function tells the Arduino to use digital pin 13 as an output. Loop function: Every sketch must have a loop function. After the setup the Arduino repeatedly performs the actions in the loop function
void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); // set the LED on // wait for a second // set the LED off // wait for a second
23 - lushprojects.com
Using Functions
A function is a self-contained piece of computer program that is collected in to a wrapper to make it easy for a programmer to use. Processing contains many already defined functions you can use in your programs. When you want to use a function you write a function call in to the program. Here is an example function call from the Blink Program.
Spaces allowed here Delimiter: In Processing each statement in the language must end with a semi-colon. This is called a delimiter. Missing semicolons (or semi-colons in the wrong place) are a common source of problems.
pinMode( 13 , OUTPUT );
Name of the function: shows which function is being called. In Processing, the names are case sensitive (small and big letters must be correct). The name can't contain spaces. Parameters of the function: Data values that are needed by the function are called parameters. They appear in brackets after the name. Different values are separated by commas. The number and types of data values is specified in the function definition. In this case the first parameter is the pin number being set. The second parameter shows whether this pin is an INPUT or an OUTPUT. If there are no parameters you still must include an empty pair of brackets.
24 - lushprojects.com
When the program reaches the function call it goes and performs the tasks defined by the function. Once the function as finished the program resumes just after the function call. It is possible for one function to call another function in a nested structure. Built-In Functions
We have already seen three built-in functions: PinMode(), digitalWrite() and delay(). There are many others. You can explore them through the example sketches http://arduino.cc/en/Tutorial/HomePage or at http://arduino.cc/en/Reference/HomePage
Defining Functions
As well as using pre-prepared functions, you can also define your own. You must define a setup() and loop() function.
A weakness of processing is that the function definitions are a little complicated when you first meet them. This is due to the decision to build Processing on top of C. If you don't understand the detail, just treat this as a piece of magic that you can copy from examples as you need to.
void setup() {
Curly brackets around the function body: A pair of curly brackets goes round the body of the function. The body contains the instructions for what to do when the function is called.
pinMode(13, OUTPUT); }
Statements: The function body is made up of one or more statements that do the work of the function. Another function call is an example of a statement. Each statement is separated by a semi-colon.
25 - lushprojects.com
/*
Variable declaration: This line in the sketch creates a new variable called ledPin. A variable is a labelled box which is used to contain data used in the program. The data can be read or changed during the program. In this case ledPin will contain integer values. We use the word int to tell the computer we want ledPin to be an integer. A variable declared outside any function can be seen by all functions in a sketch.
int ledPin;
void setup() { Variable assignment: This statement puts ledPin=13; a value (13) in to // initialize the digital pin as an output:the variable ledPin. pinMode(ledPin, OUTPUT); Variable use: We can now use the } variable name to mean the contents
instead of actually writing 13.
// // // //
set the LED on wait for a second set the LED off wait for a second
26 - lushprojects.com
100R
Arduino
Pin 2 Pin 3 Pin 4 Pin 5 Gnd
5V Pin 6
100R
100R
100R
100R
inputValue=digitalRead(inputPin);
Reading the input: This is done every time the sketch goes round the main loop. The sketch looks at the value of the input pin and stores either HIGH or LOW in the variable called inputValue. Think of the variable as a labelled box to store values. Like other variables the type of inputValue was declared at the start of the program
IF statement: This is used if you want to make the sketch do different things based on the environment or the results of a past activity. Condition: After the word if you have brackets that contain the condition that is being tested. The two equals signs (==) means has the value of or is the same as. Here we see if the variable inputValue contains the value LOW. Other possible conditions include != for not equal to, > for greater than and < for less than.
True actions: After the condition you have a list of statements surrounded by curly brackets. These are what the sketch does if the condition being tested turns out to be true.
False actions: After the true actions you may have the world else and then another list of actions in surrounded by curly brackets. These are what the sketch does if the condition being tested is false.
28 - lushprojects.com
Syntax Errors
Syntax errors will be detected when you either verify a sketch or try and upload it to the Arduino. When a syntax error is detected the status bar will turn from blue to red and red error messages will appear in the program notification area. The area where the computer detected the mistake will be highlighted in the editor. Unfortunately Processing doesn't handle syntax errors very well. Its messages can be very hard to understand (even for experts) and it doesn't always guess right where the error occurred Here are some things to check to try and fix any errors: - Mistyping of names (spelling or case of letters) - Missing semicolons after statements - Unpaired round brackets or curly brackets - Spaces in the middle of names To minimise problems with syntax errors I suggest you start by evolving the examples and make small steps towards what you want, frequently verifying so that mistakes get caught early.
Semantic Errors
Semantic errors are normally called bugs. They could be anything from a program that does nothing to a program that works 99% of the time but occasionally fails unexpectedly. The process of finding and fixing semantic errors is often a piece of detective work. Normally you should test your sketches thoroughly to make sure that they behave the way you want them to under all circumstances. If a sketch doesn't do what you expect then try and work out why it follows the behaviour it's showing. Pretend you are the Arduino and dry run the instructions in your head. Think about where in your sketch the problem may be and what circumstances trigger the problem. Try and narrow down the range of possible points where the problem originates.
29 - lushprojects.com
Making A Noise
Let's move beyond blinking LEDs. In this experiment we will add a speaker to the Arduino and start to make some noise. This also provides a useful demonstration of how to connect larger loads to the Arduino. 1) Add the extra elements shown to the existing circuit. 2) Open the sketch digitalInputwithtone and upload it to the Arduino. 3) When you touch the wire probes together you should now get a tone from the speaker. 4) Examine the sketch and see the new elements that create the tone. Try changing the tone behaviour. How the electronics works The Arduino pins have a very limited capacity to drive electrical current. One LED is OK, but much more is dodgy. We can use a transistor to boost the output to drive more demanding loads in this case a speaker. In the first transistor experiment we showed how a small current on the base of the transistor could drive a much bigger current through the collector. We use exactly this idea here. The transistor is controlled from the Arduino by connecting the base to an output pin via a resistor (1k in this example). The resistor limits the current taken from the Arduino. Even with a transistor, connecting 5V directly to the speaker is too much. The 100R resistor in the collector limits current through the speaker. NB: Many examples on the web don't put a resistor in the base. Without the base resistor the circuit is poorly designed any may damage the Arduino.
100R
ecb
1k
Arduino
5V 100R
Gnd
Pin 7
1k
2N3704
30 - lushprojects.com
Driving Loads
We saw in the last experiment how a transistor can be used to let the Arduino drive an electrical load like a speaker which is too big for the Arduino to drive on its own (for reference the maximum current load per pin is 40mA). The transistor configuration is a general technique that can be used to drive most low-voltage electrical loads. For smaller loads (say up to 250mA) this general circuit can be used.
Arduino
5V
Load
Pin 1k Small motors (like those in toys) can be controlled. Watch the current and voltage requirements even small motors can have a high current when stalled. A diode should be connected as shown to protect the circuit from a reverse voltage that any electromagnet generates when it is switched off. Relay A relay is an electrical switch which is moved by an electromagnet. By connecting the magnet as a load to the Arduino the switch can be used to control another circuit completely independently. This has many uses eg if you are controlling something that is too high power to be easily done with just a transistor, or if you don't know the full electrical characteristics of the thing being controlled (eg you are faking a button press on another piece of equipment). Relay coils also need a protection diode as shown Relay Coil (Magnet)
Gnd
For larger loads, or loads that need a different power supply voltage to the Arduino's 5V the following general circuit can be used. You may need to check the suitability of the transistor. The 2N3704 we are using in the experiments has a maximum capacity of 500mA. To test the current taken by a load connect it to a power supply with a current meter in the path.
Arduino
5V
Load
Pin 1k Power Supply For Load (About 15V max)
Gnd
31 - lushprojects.com
Stepper Motors Stepper Motors are special motors that move in individual steps. They can be used for precise control over position or speed of rotation.
Infrared Choppers An infrared light can be shone through a gap to detect levers or other mechanical parts that interrupt the light beam . Distance Sensors
Arudino Shields
To make it easy to connect the standard Arduinos to external systems you can use pre-made Arduino Shields. These connect on top of the Arduino board. Example shields: - Motor control - Ethernet - Xbee - Servo motor and Stepper Motor shields
32 - lushprojects.com
100k
Arduino
Gnd
5V
Analog In
Arduino
Gnd
5V
Arduino
Variable Resistor Gnd
5V
Analog In
Analog In 0
10k to 100k
100k (Brown-BlackYellow)
33 - lushprojects.com
34 - lushprojects.com
35 - lushprojects.com