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
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 = 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.
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.
Sine wave sampled with a high sampling rate
Sine wave sampled with a LOW sampling rate
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
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
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!
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
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
Question Time