14

Analogue Signals on the arduino

Embed Size (px)

DESCRIPTION

This document explains the how and what of analogue signals and the how to work with them on the arduino.

Citation preview

Page 1: Analogue Signals on the arduino
Page 2: Analogue Signals on the arduino

What are Analogue Signals

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

0 The values that it takes changes continuously with time.

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

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

Page 3: Analogue Signals on the arduino

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: Analogue Signals on the arduino

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: Analogue Signals on the arduino

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 = AREF 0 The output of the ADC will be a number between 0 and

2^10 -1

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

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

Page 6: Analogue Signals on the arduino

Sampling Rate

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

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

0 Measured in Hz or Samples per second.

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

Page 7: Analogue Signals on the arduino

Sine wave sampled with a high sampling rate

Sine wave sampled with a LOW sampling rate

Page 8: Analogue Signals on the arduino

Analogue Reference

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

0 This 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)

0 E.g.: If 1.1V is given to the AREF pin,

0 Resolution = 1.1/1024 = 1.04mV between 0 – 1.1V

Page 9: Analogue Signals on the arduino

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: Analogue Signals on the arduino

Using the Arduino ADC

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

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

0 Make 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: Analogue Signals on the arduino

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: Analogue Signals on the arduino
Page 13: Analogue Signals on the arduino

Code to write

0 Read the sensor

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

0 Use it as the delay in blinking LED13

0 Move the pot around.

0 Send the value of the ADC onto serial port

Page 14: Analogue Signals on the arduino

Question Time