Analog to Digital Conversion

Download Report

Transcript Analog to Digital Conversion

Analog/Digital Subsystem
Converting analog signals to digital
values
CS-280
Dr. Mark L. Hornick
1
Analog Input refers to some type
of input signal whose value is
continuously variable
Measuring analog input is very common
requirement for embedded systems

Sensors are used to convert a physical signal to
a time-varying voltage
CS-280
Dr. Mark L. Hornick
2
Some examples of physical
quantities that are measured in
devices you use






Temperature (HVAC)
Force/pressure/sound (Auto)
Position/Velocity/Acceleration (Robotics,
Cameras)
Oxygen (Auto)
Biometrics (ECG, BP)
Signal strength, battery charge (mobile
phone)
CS-280
Dr. Mark L. Hornick
3
Analog to Digital Conversion is

The process that discretizes a signal from its
continuous (analog) form to its corresponding
digital approximation

ADC or A/D
CS-280
Dr. Mark L. Hornick
4
Discretization explanation

Consider an analog signal that will vary
between two values – say VL and VH volts

Discretization refers to the “levels” the ADC is
able to resolve the analog signal to:

a 2-bit converter can resolve 4 different discrete
levels
CS-280
Dr. Mark L. Hornick
5
Resolution of Discretization

The resolution of an ADC is limited by the
number of bits within the ADC

What is the resolution of a 2-bit converter that
is trying to measure a 0-5v signal?

How can the resolution be improved?
CS-280
Dr. Mark L. Hornick
6
Atmel Atmega32
A/D Subsystem
CS-280
Dr. Mark L. Hornick
7
Atmega32 has a built-in 10-bit A/D
converter

1024 discrete levels

PortA pins are used to sense the
input analog signal



Measures the voltage on a PortA
pins w.r.t. ground


8 different signals can be connected
simultaneously
You cannot use PortA for output
E.g. ADC0 vs. ground
Can also measure relative
voltage between pins

E.g. ADC0 vs. ADC1
CS-280
Dr. Mark L. Hornick
8
The absolute voltage that can be
measured is limited

Measured voltage should be no higher than a
reference voltage supplied to the AREF pin

VM <= VAref
 AREF is tied to a potentiometer


The measured voltage VM




Voltage can be varied between 0v and Vcc (5v)
VM = 0v is converted to a value of 0
VM = VAref is converted to a value of 1023
VM > VAref is clipped to a value of 1023
Don’t try to measure voltages higher than 5v

Otherwise, you’ll fry the chip
CS-280
Dr. Mark L. Hornick
9
Several I/O Registers are used
to control the A/D subsystem

ADCSRC (0x06) – A/D Control/Status Register

SFIOR (0x30) – Special Function Register

Used for other subsystems as well as A/D

ADMUX (0x07) – A/D Multiplex Register

ADCH (0x05) – High byte of converted value

ADCL (0x04) – Low byte of converted value
CS-280
Dr. Mark L. Hornick
10
Enabling the ADC via ADCSRA
– A/D control/status register
Meaning of the various bits in the register:
 ADPS0-ADPS2 : ADC clock frequency divider


ADIE – Enable ADC Interrupt




Trigger source is determined by SFIOR register
ADSC – Start AD conversion



Automatically cleared when ISR is executed
Or writing 1 to it (SBI) clears it
ADATE – set to enable auto-trigger


Interrupt is triggered when AD conversion is complete
ISR Vector is 0x20
ADIF – automatically set when AD Interrupt occurs


set all to 1 to run ADC at 1/128th of Atmega32 clock
In Free Running Mode, start first conversion
automatically returns to 0 when conversion is complete
ADEN – Set to enable ADC
CS-280
Dr. Mark L. Hornick
11
SFIOR – Special Function
Register


Only meaningful if ADATE in ADCSRA is SET
In Free Running Mode, ADC Interrupts will not occur

ADC will just continuously convert as fast as it can
CS-280
Dr. Mark L. Hornick
12
ADMUX – another A/D
control/status register

MUX2-MUX0 – Used to pick the PortA pin to sense


MUX4-MUX3


Gain setting; just set to 0 for now
REFS1-REFS0


000 for PA0; 111 for PA7
Reference voltage; just clear REFS1, set REFS0 for now
ADLAR – see next slide
CS-280
Dr. Mark L. Hornick
13
The ADCH and ADCL I/O
Registers hold the 10-bit result

If ADLAR in ADMUX is set:


ADCL must be read first, because ADCL and
ADCH are automatically reset after ADCH is
read
If ADLAR in ADMUX is clear:
CS-280
Dr. Mark L. Hornick
14
A/D conversion takes a relatively
long time

How much?


65 – 250 microseconds
i.e. 1040 - 4000 clock cycles at 16MHz
CS-280
Dr. Mark L. Hornick
15
ADC Results

Discretization Q is a quantum



Q = (Vmax-Vmin)/2n
Q = (5 – 0)/210 = 5/1024 = 4.88 mV
Apply 1.34 volts


Result: 274 (0x112)
ADC “reports” 1.33712 volts
CS-280
Dr. Mark L. Hornick
16