14
Analogue I/O Arduino – 3 Workshop India Wilson Wingston Sharon [email protected]

03 analogue anrduino fundamentals

Embed Size (px)

DESCRIPTION

Learn how to work with analoge input and PWM output systems on the Arduino

Citation preview

Page 1: 03   analogue anrduino fundamentals

Analogue I/OArduino – 3

Workshop IndiaWilson Wingston [email protected]

Page 2: 03   analogue anrduino fundamentals

What are Analogue Signals

0Analogue signals is said to be a quantity which changes continuously with time.

0The values that it takes changes continuously with time.

0Usually represented by waveforms which is a graph between quantity and time.

0E.g.: speed of a car, voltage variations etc etc

Page 3: 03   analogue anrduino fundamentals

Capturing Analogue Data

0 Since most of information available in the real world is available only in the analogue form, it is an important requirement for physical computing devices to sense this information.

0 Sensors : Devices which convert analogue information in whatever form it might be to electrical analogue signals.

0 These electrical signals can be sent to the microcontroller.

Page 4: 03   analogue anrduino fundamentals

ADC

0 The Arduino’s microcontroller cannot work with analogue voltage levels directly.

0 A device called an ADC is present in the microcontroller to convert this analogue data to digital data.

0 This digital data is a number representing the analogue value sampled by the ADC.

0 Physical Quantity >> Electrical Signals >> Number

Page 5: 03   analogue anrduino fundamentals

ADC Resolution

0 The Arduino has an inbuilt ADC with a 10 bit resolution with reference set as AREF (default = VCC)

0 This means that between GND and AREF, the arduino can sense 2^10 = 1024 different voltages.

0 Where 0 == GND and 1024 = AREF0 The output of the ADC will be a number between 0 and 2^10 -

1

0 Resolution : 5-0/1024 = 4.9mV0 This should the difference between any two samples of the

ADC for the ADC to recognize it as two different voltage levels.

Page 6: 03   analogue anrduino fundamentals

Sampling Rate

0Each time the ADC senses the input voltage level and outputs a number, we call that a “sample”.

0The number of such samples the ADC is capable of in a second is called sample rate of the ADC.

0Measured in Hz or Samples per second.

0 If sampling rate is low, information might be lost in conversion.

Page 7: 03   analogue anrduino fundamentals

Sine wave sampled with a high sampling rate

Sine wave sampled with a LOW sampling rate

Page 8: 03   analogue anrduino fundamentals

Analogue Reference

0By default all Arduino analogue pins have a reference of 5V.

0This gives a resolution of 4.9mV between 0 – 5V

0 If required, the AREF pin can be used to give an external reference. (between 0 – 5V only)

0E.g.: If 1.1V is given to the AREF pin, 0 Resolution = 1.1/1024 = 1.04mV between 0 – 1.1V

Page 9: 03   analogue anrduino fundamentals

Practical ADC sampling

0 Arduino’s theoretical sampling rate is 77kHz. (see datasheet)

0 Practically, ADC samples at ~56Khz.

0 !! Arduino doesn’t have a DSP so sampling is done by CPU only. Other tasks given to the CPU will affect Sampling rate adversely.

0 E.g.: If sampling ADC and sending data through Serial Port, effectively ~10Khz can be obtained.

Page 10: 03   analogue anrduino fundamentals

Using the Arduino ADC

0Potential dividers convert mechanical energy (twist) to voltage changes.

0Open 5. ADC folder. Upload the code onto arduino.

0Make pot connections as per circuit diagram..

0 If all goes well twisting the pot should make the LED blink slower or faster. Check serial monitor too!

Page 11: 03   analogue anrduino fundamentals

Working of The ADC

0 Use analoguereference() to change the how the ADC takes reference signal for the analogue input.

0 Connect the analogue input to an analogue pin.0 Analogue pins are called A0 – A6.

0 Use analogueread(pin) to initiate and perform a single ADC conversion.

0 Returned value is stored in an integer and is used in setting delay of LED13 blinking.

Page 12: 03   analogue anrduino fundamentals
Page 13: 03   analogue anrduino fundamentals

Code to write

0Read the sensor

0Store the value of the analogueread() into an int

0Use it as the delay in blinking LED13

0Move the pot around.

0Send the value of the ADC onto serial port

Page 14: 03   analogue anrduino fundamentals

Question Time