Analogue Input/Output Many sensors & transducers produce voltages representing physical data. Many output devices require variable control, not just two digital logic levels To process transducer data in a computer requires conversion to digital form. To control these devices from a computer requires conversion from digital to analogue form (usually an analogue voltage). The conversion from analogue signals to digital values is performed by Analogue to Digital Converter (ADC) The conversion from a digital value to an analogue signal is performed by a Digital to Analogue Converter (DAC). 5-1 DAC function Parallel DAC n bit value DA Converter VAgnd Analogue output Vref Serial DAC would typically have a single data input line and a clock input signal which would be used to clock in the serial data stream. Adv. : - Fewer pins. Disadv. : Slower data transfer. 5-2 Analogue Output Digital to Analogue Converter (DAC) DAC Characteristics = 1/2n where n is the number of bits Max. digital value = 2n – 1 output voltage range – determined by reference voltage (Vref and AGND) Step size in volts = resolution x voltage range Max output voltage = (2n – 1)/ 2n x voltage range uni-polar / bipolar types slew rate – rate of change of output. interface – parallel (fast) or serial (slower but uses fewer connections) resolution 5-3 DAC principles – Example 4-bit DAC Sum currents with operational amplifier 1 d3 2R R Vref/2 Vo = - Vref(Rf/Rinput) 4R Vref/4 0 d2 8R Vref/8 + 1 d1 1 Vref d0 Vo Vo = -(Vref-AGND)(digital value/2n) 16R Vo α digval/ 2n Vref/16 AGND Example: with 4-bit value = 1011 Vo = -Vref(d3/2 + d2/4 + d1/8 + d0/16) Vo = -Vref(1/2 + 1/8 + 1/16) Vo = -Vref(11/16) 5-4 Output from DAC Output Voltage VMAX = Maximum output voltage 2n -1 V max n *Vref 2 where n is number of bits MAXVAL = Maximum digital value VMAX = 2n -1 where n is number of bits MAXVAL Digital Value 5-5 Example DAC device M AX5722 dual,12-bit, low-power, buffered voltage output, digital-to-analog converter (DAC) is packaged in a space-saving 8-pin μMAX package (5mm ✕ 3mm). Ultra-Low Power Consumption 112μA at VDD = +3.6V 135μA at VDD = +5.5V Wide +2.7V to +5.5V Single-Supply Range 8-Pin μMAX Package 0.3μA Power-Down Current Guaranteed 12-Bit Monotonicity (±1LSB DNL) Safe Power-Up Reset to Zero Volts at DAC Output Three Software-Selectable Power-Down Impedances (100kΩ, 1kΩ, Hi-Z) Fast 20MHz, 3-Wire SPI, QSPI, and MICROWIRECompatible Serial Interface Rail-to-Rail Output Buffer Amplifiers Schmitt-Triggered Logic Inputs for Direct Interfacing to Optocouplers Wide -40°C to +125°C Operating Temperature Range 5-6 Audio & LPC 23xx DAC example Recreate audio 111 110 101 100 011 010 001 000 1 2 3 4 5 6 7 8 9 10 What resolution? What sampling rate ? 5-7 Analogue Input Analogue to Digital Converter (ADC) ADC Characteristics = 1/2n where n is the number of bits Max. digital value = 2n – 1 input voltage range – determined by the reference voltages (Vref and AGND) Step size in volts = resolution x voltage range uni-polar / bipolar types interface – parallel (fast) or serial (slower but uses fewer connections) often integrated into microcontrollers. resolution 5-8 General ADC function Analogue input Converter VAgnd n bit result Vref The analogue input voltage is converted into a value. The value is dependent on the reference voltages and the number of bits n. 5-9 Analogue Input Main types (i.e.methods) of ADC approximation – good all-rounder Flash – fastest type Sigma-delta – good for audio Dual slope integrating – slow but high resolution with good noise immunity others – Sampling, ramp, charge balancing Successive Characteristics resolution conversion method conversion time input voltage range interface – parallel (fast) or serial(fewer connections) 5-10 MCP3208 Features 12-bit resolution ± 1 LSB max DNL ± 1 LSB max INL (MCP3204/3208-B) ± 2 LSB max INL (MCP3204/3208-C) 4 (MCP3204) or 8 (MCP3208) input channels Analog inputs programmable as single-ended or pseudo-differential pairs On-chip sample and hold SPI serial interface (modes 0,0 and 1,1) Single supply operation: 2.7V - 5.5V 100 ksps max. sampling rate at VDD = 5V 50 ksps max. sampling rate at VDD = 2.7V Low power CMOS technology: 500 nA typical standby current, 2 μA max. 400 μA max. active current at 5V Industrial temp range: -40°C to +85°C Available in PDIP, SOIC and TSSOP packages 5-11 Example:8-bit ADC with Vref +5v and 0v VAgnd Number of steps (values) = 2n = 28 = 256 steps are numbered 0 to 255 step size = reference voltage range / number of steps = (5v – 0v) / 256 = 19.53125 x10-3v 20mv number range 0 to 255 corresponds to voltage range of 0 to 5v ADC value = (Vin / (Vref – Agnd)) * 256 : remember max ADC value is 255 so max input voltage that can be converted accurately is less than 5 volts. What is the maximum convertible input voltage? 5-12 8-bit ADC with 5v reference ADC value 255 ADC value 4 3 2 1 V 10mv 30mv 50mv 70mv 20mv 40mv 60mv Volts 0 4.98 5-13 Cont. ADC value 4 3 2 1 Volts 0 10mv 30mv 50mv 70mv 20mv 40mv 60mv 80mv 5-14 Quantization Error 101 100 011 010 001 0 1 2 3 4 5 6 Each input sample is assigned a quantization interval that is closest to its amplitude height. If an input sample is not assigned a quantization interval that matches its actual height, then an error is introduced into the conversion process. This error is called quantization error/noise. Reducing quantization error One way to reduce quantization noise is to increase the amount of quantization intervals. The difference between the input signal amplitude height and the quantization interval decreases as the quantization intervals are increased (increases in the intervals decrease the quantization noise). Solved by increasing the ADC resolution (number of bit) in proportion to the increase in quantization intervals. 8 80 80 7 70 70 6 60 60 5 50 50 4 40 40 3 30 30 2 20 20 1 10 10 0 0 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 0 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 Analogue Input Example Example - The LM35 series are precision integrated-circuit temperature sensors, whose output voltage is linearly proportional to the Celsius (Centigrade) temperature. • • Calibrated directly in ° Celsius (Centigrade) Linear + 10.0 mV/°C scale factor • 0.5°C accuracy guarantee able (at +25°C) • Rated for full -55° to +150°C range • Suitable for remote applications • Low cost due to wafer-level trimming • Operates from 4 to 30 volts • Less than 60 µA current drain • Low self-heating, 0.08°C in still air • Nonlinearity only ±¼°C typical • Low impedance output, 0.1 Ohm for 1 mA load 5-17 LM35 & LPC23xx Interface Example Max voltage from sensor = 10mV×150 = 1.5V +5V 8 ADC range (LPC23xx) 0V to + 3.3 V LM35 Linear + 10.0 mV/°C scale factor Use a basic Centigrade temperature sensor +2°C to +150°C LM35 Input 0 - 1.5V 3 2 + 0 - 3V 1 4 Scale the input voltage accordingly to match input the range of the ADC 5-18 LM35 & LPC23xx Interface Example step size = reference voltage range / number of steps = (3.3v – 0v) / 1024 = 3.22265625 x10-3v Every 1°C is now equivalent to 20.0 mV Temperature resolution > 0.2°C 8 +5V 0 - 1.5V 3 2 + 0 - 3V AI0 1 4 LM35 Input LPC23xx 5-19 ADC input Good practice to Limit the voltage range (input protection) Filter the signal D41 From sensor EXT_TEMP C133 1u +5V R162 TP37 TP_EXT_TEMP_F R163 U38C 10 8.87k BAT54S/SOT 9 15k C134 0.47u + 8 - EXT_TEMP_F To ADC input MCP604 5-20 ADC Block diagram Interface to uP Interrupt request Conversion Control AN0 AN1 ANn M u t i p l e x e r Busy Start conversion Sample & Hold Converter VAREF Result Register VAGND Reference voltage 5-21 ADC – principle of operation 1. 2. 3. 4. 5. The voltage is presented to the ADC input. The ADC is sent a signal to start conversion While the conversion takes place the input voltage should remain stable. The ADC outputs a signal to indicate that it is busy doing the conversion and should not be disturbed. When the conversion is completed the ADC makes the result available and outputs a signal to indicate that the conversion has completed (e.g remove the busy signal) 5-22 Multiplexer and Sample/Hold To convert several analogue inputs 1. use an ADC for each input or more usually … 2. use one ADC and switch the inputs through a multiplexer requires selection of input before each conversion is started and a short delay is required before conversion started to allow switching to occur and signal to settle. Sample and Hold (S&H) while conversion takes place voltage must remain stable sample voltage – input connected to S&H voltage held on a capacitor sample time – charging time of capacitor input signal disconnected from S&H 5-23 Summary Analogue inputs are often required in embedded applications and so ADCs are integrated into most microcontrollers (DACs less so) ADCs and DAC also exist as standalone IC devices often specialist devices e.g. High speed or high resolution ADCs, fast DACs for video output. Main characteristics of interest is resolution - number of bits voltage range ADC - conversion time DAC - slew rate 5-24 ADC on the LPC23xx LPC23xx ADC Features 10 bit successive approximation analogue to digital converter. Input multiplexing among 6 pins or 8 pins. Power down mode. Measurement range 0 to 3.3 V. 10 bit conversion time ≥ 2.44 μs. Burst conversion mode for single or multiple inputs. Optional conversion on transition on input pin or Timer Match signal. Individual result registers for each A/D channel to reduce interrupt overhead. 5-25 Using the ADC The ADC like all other peripherals is accessed through a group of associated registers. (see pages 575ff of the user manual for a detailed description) As an example we will look at the A/D Control Register (AD0CR) 5-26 AD0CR This bit is significant only when the START field contains 010111. In these cases:1- Start conversion on a falling edge on the selected CAP/MAT signal. 0 Start conversion on a rising edge on the selected CAP/MAT signal 1 The A/D converter is operational. 0 The A/D converter is in power-down mode. 0- Conversions are software controlled and require 11 clocks. 1- The AD converter does repeated conversions at the rate selected by the CLKS field, scanning (if necessary) through the pins selected by 1s in the SEL field. The first conversion after the start corresponds to the least-significant 1 in the SEL field, then higher numbered 1 bits (pins) if applicable. Repeated conversions can be terminated by clearing this bit, but the conversion that’s in progress when this bit is cleared will be completed. Selects which of the AD0.7:0 pins is (are) to be sampled and converted. For AD0, bit 0 selects Pin AD0.0, and bit 7 selects pin AD0.7. In software-controlled mode, only one of these bits should be 1. In hardware scan mode, any value containing 1 to 8 ones. All zeroes is equivalent to 0x01. AD0CR Bit number 31 30 29 28 R R R R 27 26 25 24 23 22 21 20 19 18 17 EDGE START R R PDN R When the BURST bit is 0, these bits control whether and when an A/D conversion is started: 000 No start (this value should be used when clearing PDN to 0). 001 Start now. 010 Start when the edge selected by bit 27 occurs on P2.10/EINT0. CLKS 16 15 14 13 12 11 10 BURST CLKDIV This field selects the number of clocks used for each conversion in Burst mode, and the number of bits of accuracy of the result in the LS bits of ADDR, between 11 clocks (10 bits) and 4 clocks (3 bits). 000 11 clocks / 10 bits 001 10 clocks / 9 bits 011 Start when the edge selected by bit 27 occurs on P1.27/CAP0.1. 100 Start when the edge selected by bit 27 occurs on MAT0.1. 101 Start when the edge selected by bit 27 occurs on MAT0.3[1]. 110 Start when the edge selected by bit 27 occurs on MAT1.0. 111 Start when the edge selected by bit 27 occurs on MAT1.1. 9 8 7 6 5 4 3 2 1 0 SEL The APB clock (PCLK) is divided by (this value plus one) to produce the clock for the A/D converter, which should be less than or equal to 4.5 MHz. Typically, software should program the smallest value in this field that yields a clock of 4.5 MHz or slightly less, but in certain cases (such as a high-impedance analog source) a slower clock may be desirable. 010 9 clocks / 8 bits 011 8 clocks / 7 bits 100 7 clocks / 6 bits 101 6 clocks / 5 bits R = Reserved, user software should not write or read ones to reserved bits. 110 5 clocks / 4 bits 111 4 clocks / 3 bits 5-27 AD0CR AD0CR Bit number 31 30 29 28 R R R R R R R R 27 0 EDGE 26 25 24 23 22 21 20 19 18 17 0 0 0 START AD0CR = ( 0x01 << 0 ) | R R R R 1 R PDN R 0 0 CLKS 0 16 0 BURST 15 14 13 12 11 10 9 0 0 0 0 1 0 1 8 7 6 5 4 3 2 1 0 1 0 0 0 0 0 0 0 1 CLKDIV SEL /* SEL=1,select channel 0~7 on ADC0 */ ( ( Fpclk / ADC_Clk - 1 ) << 8 ) | /* CLKDIV = Fpclk / 1000000 - 1 */ ( 0 << 16 ) | /* BURST = 0, no BURST, software controlled */ ( 0 << 17 ) | /* CLKS = 0, 11 clocks/10 bits */ ( 1 << 21 ) | /* PDN = 1, normal operation */ ( 0 << 24 ) | /* START = 0 A/D conversion stops */ ( 0 << 27 ); /* EDGE = 0 (CAP/MAT singal falling,trigger A/D conv */ 5-28 Enable the ADC input pins Before using the ADC the appropriate pins must be set as ADC inputs. This is accomplished using the PINSEL register(s) PINSEL1 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 4 PINSEL1 |= 0x00004000; // Select only ADC channel 0 0 0 0 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 5-29 Reading the ADC See example programs! 5-30 Example question A 5 bit ADC is used to encode an analogue signal in the range 0V to +5V for linear PCM encoding determine: The step size Calculate the percentage resolution Calculate the dynamic range in dB Calculate the input voltage level corresponding 10110. Solution 1.The step size Number of steps 25 32 step size 50 156 .25 10 3V 32 2. Calculate the percentage resolution 1 % Resolution 100 3% 32 Solution 3 Calculate the dynamic range in dB 20 log25 30.1dB 4 Calculate the input voltage level corresponding 10110 10110 22 Dec 22 0.3125 3.4375V 5-33 Voice signal Signal Bandpass Filtering Energy Distribution for Human Speech 0 Hz 300 Hz 3,400 Hz Bandwidth (3.1 kHz) The human voice can produce sounds up to 20 kHz, but most sound is between 300 Hz and 3.4 kHz. The bandpass filter only passes this sound to reduce bandwidth. 20 kHz