Upload
wingston
View
365
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Learn how to work with analoge input and PWM output systems on the Arduino
Citation preview
Analogue I/OArduino – 3
Workshop IndiaWilson Wingston [email protected]
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
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.
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
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.
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.
Sine wave sampled with a high sampling rate
Sine wave sampled with a LOW sampling rate
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
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.
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!
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.
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
Question Time