Download Analogue To Digital Conversion

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Electronic engineering wikipedia , lookup

Computer science wikipedia , lookup

Control theory wikipedia , lookup

Distributed control system wikipedia , lookup

Pulse-width modulation wikipedia , lookup

Electronic musical instrument wikipedia , lookup

Resilient control systems wikipedia , lookup

Integrating ADC wikipedia , lookup

Schmitt trigger wikipedia , lookup

Oscilloscope history wikipedia , lookup

Fire-control system wikipedia , lookup

Embedded system wikipedia , lookup

Immunity-aware programming wikipedia , lookup

Public address system wikipedia , lookup

Rectiverter wikipedia , lookup

Control system wikipedia , lookup

Opto-isolator wikipedia , lookup

Analog-to-digital converter wikipedia , lookup

Transcript
Introduction to Smart Systems
Sensor Types and Uses
Analogue to Digital Conversion
Analogue Comparator
1
Digital Sensors (Input) – Directly readable via parallel Input port bits
Device
Use
Example Applications
Push switch
Momentary input
User option selection, user control, mechanical
operation such as machine end-stop. Floor
switch in intruder detection systems.
Slide switch
Constant value (stays in
position)
Configuration input
Magnetic switch
Remote sensing (very
short distances).
Mechanical systems to detect moving parts, endstop etc. Intruder alarm systems.
Pressure switch
Detect a pre-set pressure,
force or weight
Safety cut-out in mechanical, hydraulic,
pneumatic equipment.
Temperature
switch
(Thermostat)
Detect a pre-set
temperature
Safety cut-out in mechanical, electrical
equipment. Automatically switch heating on/off,
fans on/off (e.g. processor temperature in PC).
Light-activated
switch (uses a
light beam)
Detect position of
equipment (light beam
broken?)
Safety cut-outs in mechanical equipment.
Intruder detection with light beams. Detection of
position of moving parts.
Shaft Encoder
Detect position / rotation
angle and/or rotation
speed of a shaft
Motor speed control. Position control in motorised
mechanical systems. Position detection in
systems such as a mechanical computer mouse.
Passive InfraRed (PIR)
Detect movement of IR
emitters (e.g. people).
Intruder detection systems. Courtesy / safety light
activation.
2
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Digital Output Devices
Device
Use
Example Applications
Light Emitting
Diode (LED)
Signal some condition /
event
Indication, run-time debugging
Seven Segment
Display
Alpha-Numerical output
Indication, run-time debugging (requires software
encoder for character set)
Liquid Crystal
Display
Alpha-Numerical output
Indication, run-time debugging (typically has local
dedicated processor and requires interfacing via
software registers and hardware handshaking
signals)
Motor
Mechanical output
General movement (rotation especially)
Solenoid
Mechanical output
Movement (linear especially) e.g. electronic door
locks
Servo
Mechanical output
Movement (typically linear) e.g. remote controlled
toys (car steering, airplane rudder).
Sounder /
Loudspeaker
Sound output
Digitised sound files, acknowledgement beeps
(such as when keys are pressed on a phone),
warning tones.
3
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue Sensors (Input) – Directly readable via Analogue Input port
Device
Use
Variable resistor
Detect a control value User inputs such as volume, light,
input
temperature preferences. Any user-controlled
analogue value can be represented.
Light-sensitive diode
(Photodiode) / transistor
(Phototransistor) /
resistor
Measure light
intensity
Activate devices based on light levels. Adjust
exposure time on a camera.
Temperature-sensitive
resistor (Thermistor)
Measure temperature
Control temperature of environments, liquids
etc. in production systems. Could form part of
a sophisticated fire detection system. Frost
warning (for greenhouses, and in diesel lorries
to ensure the fuel does not freeze).
Ultrasonic transducer
Detect distance (by
Intruder detection. Electronic ‘tape measure’
measuring
propagation time for a
sound signal)
Accelerometer
Measure
acceleration, tilt
vibration etc
Game control handsets. Robotics.
Microphone
Record sound,
measure sound
intensity
Speech control input (requires sophisticated
software). Sound control input (such as detect
4
a series of hand-claps).
Embedded Systems Programming II
Example Applications
Richard Anthony, Computer Science, The University of Greenwich
Analogue Outputs
Device or Signal
Use
Example Applications
Motor - Speed control via Control speed or
PWM
torque to a motor.
Control acceleration
and braking effects
All systems with motors where speed control
is needed – kitchen appliances, industrial
machines, electric vehicles, remote controlled
models, toys …
Light / LED - Brightness
control via PWM
Control brightness of
an indicator
Light dimmer. Power saving for batterypowered devices
Sound – Direct control of
volume via amplifier gain
Adjust volume
dynamically
PA / Music volume control
Sound - Volume control
via PWM (only for a
simple monotone)
Adjust volume
dynamically
Warning alarm or condition indicator volume
control (only works with simple audible tones,
not speech / music). Power saving for batterypowered devices
5
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue sensors for the ATmega1281
Twin Variable Resistor Sensor
Connects to Analogue inputs ADC2 and ADC3
(bits 2 and 3 of port F)
Rotating the dials changes the analogue
resistance values
6
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue Signals – Analogue to Digital Conversion (ADC) 1
Analogue signals are continuously variable (most real-world systems).
Digital signals have ‘step-values’ (the way we represent numbers in a digital computer).
→ Analogue signals (e.g. light intensity) must be converted into digital form.
31
28
24
Analogue
signal
20
Digital
value
16
12
8
‘Sample Rate’ is the number
of samples taken per second
4
0
Sample 0
1
Embedded Systems Programming II
2
3
4
5
6
7
Richard Anthony, Computer Science, The University of Greenwich
7
Analogue Signals – ADC 2
Conversion of an Analogue signal into digital form looses information
Using a 5-bit ADC (32
discrete steps), the
sample values for the
signal shown are: 7,
12, 16, 8, 11, 16, 27,
25
31
28
24
Digital
value
Analogue
signal
20
Information loss #1:
The digital values do
not represent the
precise value of the
signal.
16
12
8
8
7
4
0
Sample 0
1
2
3
4
5
6
7
Information loss #2:
Whatever happens
between sample times
is lost.
8
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue Signals – ADC 3 – Comparison of 4-bit and 5-bit ADCs
Digital Value
5-bit ADC 4-bit ADC
31
15
28
14
24
12
20
10
16
8
12
6
8
4
4
2
0
0
Each digital value represents
a range of analogue values
Sampling
with 4-bit
precision
Analogue
signal
9
8
8
11
10
9
Precision – Typical A to D
converters (ADC) have 8, 10
or 12 bits. This means that the
signal value range is
represented as either 256,
1024 or 4096 discrete values.
The analogue signal is
presented as a voltage on the
ADC input. The maximum
value is termed ‘Full Scale
Deflection’ (FSD).
Information loss is reduced by
using a higher precision ADC.
5
4
For some applications, a lower
precision is acceptable, and
sometimes not all of the bits of
an ADC value are needed.
Sampling
with 5-bit
precision
0 Analogue value (e.g. Voltage at ADC input pin) FSD
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
9
Analogue Signals – ADC - Sampling rate (frequency)
Must sample an analogue signal at a suitably high rate to capture the
information of interest within the signal.
The Nyquist–Shannon sampling theorem states:
“If a function x(t) contains no frequencies higher than B Hz, it is completely
determined by giving its ordinates at a series of points spaced 1/(2B) seconds
apart ”.
In reality the sampling rate must actually be greater than 2B, other wise ‘phase
ambiguity’ can make several signals of frequency B indistinguishable.
Digital value
Several sine waves (all with frequency B but
different phases) cannot be distinguished at
sample rate 2B. Need Rate > 2B
An important example is speech sampling.
Speech has a frequency range of
approximately 300Hz to 3.5KHz.
The typical sample rate used is 8KHz.
Sample
Embedded Systems Programming II
10
Richard Anthony, Computer Science, The University of Greenwich
Analogue To Digital Conversion – ATmega1281 functionality (1)
EOC Generated
Interrupt signal
A single 10-bit ADC is
available.
8 Input channels are
available, so up to 8
different analogue sensors /
signals can be connected
to the microcontroller – a
flag in a register configures
which channel will be
converted.
The input channels are
implemented as alternate
functions for Port F
(ADC0 is mapped to PortF0
…
ADC7 is mapped to PortF7)
8 Inputs
Embedded Systems Programming II
A-D converter
Key:
Analogue signal
Digital Value11
Richard Anthony, Computer Science, The University of Greenwich
Analogue To Digital Conversion – ATmega1281 functionality (2)
The ADC operation is configured via a number of registers:
ADC Multiplexer Selection Register (ADMUX)
(select voltage reference, format output, and select input channel)
ADC Control and Status Register A (ADCSRA)
(Enable ADC, Start Conversion, Enable Interrupts, set Prescaler)
ADC Control and Status Register B (ADCSRB)
(Select auto trigger options)
ADC data registers ADCH (high) and ADCL (Low)
(The digital result value is read from these)
Digital Input Disable Register 0 and 2 (DIDR0 and DIDR2)
(Disable digital input circuit when using as analogue input to reduce
power consumption)
Status Register (SREG) (Enable Interrupts for whole system)
ADC End Of Conversion (EOC) is usually detected via the ‘Conversion
Complete’ interrupt (avoids polling).
The ADC Conversion Complete interrupt vector is located at: 0x003A (use .org)
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
12
Analogue To Digital Conversion – ATmega1281 functionality (3)
The ADC Multiplexer Selection Register (ADMUX)
Bits 7 and 6 select the voltage reference
For AREF pin (blue variable resistor on STK300)
For AVCC (5V, fixed value)
00
01
Caution, program
behaviour will be
sensitive to
resistor setting
The AREF pin is connected internally to the chip's circuitry. Even when AREF set to
'AVCC' the blue variable resistor on STK300 board still affects the values of readings.
Solution is to electrically isolate the variable resistor, by removing the adjacent jumper.
Bit 5 adjusts the 10-bit result position in the two 8-bit data registers
(low 8-bits - ADCL and high 8 bits ADCH) – see next slide.
Bits 4,3,2,1,0 select the analogue channel to be converted.
If using single-ended input – all ‘our’ devices work this way:
Set bits 4 and 3 to ‘0’.
Set the binary channel identifier on bits 2,1,0
e.g.
for channel 0, set the value
00000
for channel 1, set the value
00001
for channel 7, set the value
00111
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
13
Analogue To Digital Conversion – ATmega1281 functionality (4)
The ADC data register - 16 bit, accessed as 8-bit registers ADCH and ADCL
(and the effect of ADMUX bit 5, ADC Left Adjust Result (ADLAR))
ADLAR = 0
Use if need full 10-bit precision, or if analogue signal range is less than FSD / 4
ADLAR = 1
Use if need only 8-bit precision, and want to read upper 8 bits from a single register
14
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue To Digital Conversion – ATmega1281 functionality (5)
The ADC Control and Status Register (ADCSRA)
Bit 7 ADC Enable – Set to ‘1’ to enable the ADC, ‘0’ to turn off the ADC.
Bit 6 ADC Start Conversion – Set to ‘1’ to start a conversion.
Bit 5 ADC Auto Trigger Enable – Set to ‘1’ to automatically trigger the ADC (for
continuous operation, or for trigger from a timer to control sample rate).
Bit 4 ADC Interrupt Flag – Can be read to see if an ADC conversion has
completed (if polling).
Bit 3 ADC Interrupt Enable – Set to ‘1’ to enable the ADC to generate an
Interrupt when conversion is complete (‘I’ bit must be set in SREG see later).
Bits 2,1,0 ADC Prescaler Select Bits – these control the internal operating
speed of the ADC logic (and hence affect the conversion time).
15
(see page 292 of manual for full details)
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue To Digital Conversion – ATmega1281 functionality (6)
The ADC Control and Status Register (ADCSRB)
Bit 3 - MUX5: Analogue Channel and Gain Selection Bit
This bit is used together with MUX4:0 in ADMUX to select which combination
in of analogue inputs are connected to the ADC.
Bit 2:0 – ADTS2:0: ADC Auto Trigger Source
If ADATE in ADCSRA is written to one, the value of these bits selects which
source will trigger an ADC conversion.
(see page 290 of manual for full details)
Embedded Systems Programming II
16
Richard Anthony, Computer Science, The University of Greenwich
Analogue To Digital Conversion – ATmega1281 functionality (7)
ADCSRB Bits 2, 1, 0
ADC Auto Trigger Source.
General purpose
continuous
operation
A
(see page 295 for full details)
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
17
Analogue To Digital Conversion – ATmega1281 functionality (8)
DIDR0 – Digital Input Disable Register 0
DIDR2 – Digital Input Disable Register 2
When these bits are written logic one, the corresponding digital input buffer on the
ADC pin is disabled. This reduces power consumption.
18
Analogue To Digital Conversion – System register configuration 1
The Status Register (SREG)
Bit 7 Global Interrupt Enable (I).
This bit must be set to ‘1’ to enable interrupts globally.
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
19
Analogue Signals – Analogue Comparator - Overview
The Analogue comparator allows two analogue values AIN0 and AIN1 to be
compared by hardware (you could of course read two ADC channels and
compare in software). Hardware is simpler to use and much faster (don’t have
to wait for ADC conversion).
Uses Port E pins alternate function:
Bit 2
AIN0 (‘Positive’ Input)
Bit 3
AIN1 (‘Negative’ Input)
This is the reason why the twin variable resistor input device we
created uses bits 2 and 3 on the cable (can plug to ADC channels 2
and 3 Port F, or onto Port E to use the Analogue Comparator).
Port E bits 2 and 3 should be configured as inputs, with the pullup
resistors turned off for correct Analogue Comparator operation.
Instead of using AIN1 as the negative input, it is possible to select any one of
the 8 ADC inputs as the negative value for comparison with AIN0 – this means
that it is possible to software select from up to 9 sensors to compare with a
20
reference signal.
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue Signals – Analogue Comparator - Operation
Comparator
Positive input
Negative input
Alternative
Negative inputs
From ADC
multiplexer
When the voltage on the ‘Positive’ pin AIN0 is higher than the voltage on the
‘Negative’ pin AIN1 the Analogue Comparator Output ACO is set to ‘1’.
This can trigger the Timer/Counter1 input capture (to record the time at which
the event occurred), or can trigger the Analogue Comparator Interrupt.
The Analogue Comparator interrupt vector is located at: 0x0038 (use .org)
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
21
Analogue Signals – Analogue Comparator – Usage example
A temperature alarm system
Applications include: checking a Freezer is cold enough, or a Greenhouse is warm
enough, warning if your Diesel is going to freeze, or if a Chemical production process
is overheating, etc.
In such applications it is not important to know the exact temperature at each given
moment (we would use the ADC for this), but it is very important to detect if the
temperature is above or below a certain threshold value (the comparator is ideal).
+ Vcc
Resistors
(to bias the
voltage at the
comparator’s
input pins)
Positive input
Negative input
Thermistor
(measures
temperature)
Variable Resistor
(to set detection
threshold)
Analogue
Comparator
Generate interrupt if
temperature is above /
below the threshold
value (can be
configured for either
case by swapping the
+ve / -ve inputs)
Gnd
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
22
Analogue Comparator – Configuration registers 1
The Analogue Comparator Control and Status Register (ACSR)
Bit 7 ACD – Analogue Comparator Disable - set to disable, saves power.
Bit 6 ACBG – Analogue Comparator Bandgap Select - if set, uses a fixed
reference voltage instead of the AIN0 positive input voltage.
Bit 5 ACO – Analogue Comparator Output (readable).
Bit 4 ACI - Analogue Comparator Interrupt Flag (readable).
Bit 3 ACIE – Analogue Comparator Interrupt Enable – Set to ‘1’ to enable the
Analogue Comparator to generate an Interrupt (‘I’ bit must be set in SREG see
earlier).
(see page 273 of ATmega1281 PDF manual)
23
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue Comparator – Configuration registers 2
The Analogue Comparator Control and Status Register (ACSR)
(Continued)
Bit 2 ACIC - Analogue Comparator Input Capture Enable – Enables Timer1
Input Capture to be triggered by the Analogue Comparator.
Bit 1, 0 ACIS1, ACIS0 – Analogue Comparator Interrupt Mode Select:
ACIS1
ACIS0
Interrupt Mode
0
0
Generate Interrupt on output toggle
1
0
Generate Interrupt on falling output edge
1
1
Generate Interrupt on rising output edge
24
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
Analogue Comparator – Configuration registers 3
DIDR1 – Digital Input Disable Register 1
Bit 1, 0 – AIN1D, AIN0D: AIN1, AIN0 Digital Input Disable
When these bits are written logic one, the digital input buffer on the AIN1/0 pin is
disabled. This reduces power consumption.
25
Analogue Comparator – System register configuration 1
ADCSRB – ADC Control and Status Register B
Bit 6 ACME – Analogue Comparator Multiplexer Enable
If the ADC is not in use, it is possible to use any of the 8 ADC inputs as the
negative analogue value for the Analogue Comparator, instead of AIN1 (the
positive value is always AIN0).
The ADC multiplexer is configured as described in the ADC section of this
lecture, however, the ADEN bit in ADCSRA must be cleared ‘0’).
Bit 6 set ‘1’ – Use output of ADC multiplexer as negative input
Bit 6 cleared ‘0’ – use AIN1 as negative input
Embedded Systems Programming II
Richard Anthony, Computer Science, The University of Greenwich
26