Interfacing to Analog World Sensor Interfacing

• Introduction to Analog to digital Conversion • Why Analog to Digital? • Basics of A/D Conversion. • A/D converter inside PIC16F887 • Related Problems

Prepared By- Mohammed Abdul Kader Assistant Professor, EEE, IIUC Introduction to Analog to digital Conversion

 Signals in the real world are analog: light, sound, temperature, pressure, acceleration or other phenomenon. So, real-world signals must be converted into digital, using a circuit called ADC (Analog-to-Digital Converter), before they can be manipulated by digital equipment.  When you scan a picture with a scanner what the scanner is doing is an analog-to-digital conversion: it is taking the analog information provided by the picture (light) and converting into digital.  When you record your voice on your computer, you are using an analog-to-digital converter to convert your voice, which is analog, into digital information.  When an audio CD is recorded at a studio, once again analog-to-digital is taking place, converting sounds into digital numbers that will be stored on the disc.  Whenever we need the analog signal back, the opposite conversion – digital-to-analog, which is done by a circuit called DAC, Digital-to-Analog Converter – is needed. When you play an audio CD, what the CD player is doing is reading digital information stored on the disc and converting it back to analog so you can hear the audio.

2 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Why Analog to Digital? 1. Reducing : Since analog signals can assume any value, noise is interpreted as being part of the original signal. Digital systems, on the other hand, can only understand two numbers, zero and one. Anything different from this is discarded.

Noise is added with

Signal

Information is unchanged

3 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Why Analog to Digital? (Continued)

2. Signal Processing: The most strong tool of processing or analyzing signal is microprocessor. Microprocessor is a digital device. It can understand only digital signal. So, we should convert the analog physical parameters into digital to process it by microprocessor.

3. Data compression capability: Another advantage of digital system against analog is the data compression capability. Since the digital counterpart of an analog signal is just a bunch of numbers, these numbers can be compressed, just like you would compress a Word file using WinZip to shrink down the file size, for example. The compression can be done to save storage space or bandwidth.

4 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC ADC (A/D Converter) in Embedded System

 The main use of ADC in embedded system is to measure the voltage outputs of sensors.  Most electronic sensors produce a voltage that corresponds to temperature, pressure, acceleration or other phenomenon.  Music, speech, or other signals can be converted to digital form by A/D converters for storage or additional processing.

Gives a decision (output) according to user instruction

Physical parameter Sensor A/D Converter Microprocessor

Converts physical parameter to Converts analog voltage to Analyze or process the corresponding analog voltage digital voltage physical parameter

5 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Related terms of A/D conversion Resolution: The resolution of an A/D converter is specified by number of bits and determines how many distinct output levels or codes (2^N) the converter is capable of producing. For example, an 8-bit A/D converter produces 2^8, or 256, output codes or levels. Mathematically the resolution for an A/D converter is Here, Reference means the conversion range and N is the no of bit in digital output.

In other Words, Resolution is the smallest change or steps in the analog voltage for which output digital voltage (codes) remain unchanged.

For an 3 bit A/D converter with conversion range (0-5V): Resolution= 5/2^3 = 5/ 8= 0.625 V For an 8 bit A/D converter with conversion range (0-5V): Resolution= 5/2^8 = 5/ 256 = 0.0196 V For an 10 bit A/D converter with conversion range 0-5V: Resolution = 5/2^10 = 5/1024 = 0.00488 V

6 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Related terms of A/D conversion (Cont.)

Resolution of an 2-bit A/D converter is 1.25V

Resolution of an 10-bit A/D converter is 0.00488V Another definition ,The resolution of the A/D converter is the voltage change that will result in the returned value (output digital value) changing by 1. This means that with an 3 bit A/D the returned value will change by 1 when the voltage changes by about 1.25V. With a 10 bit A/D, a change of only 4.88 mV will change the count by 1.

7 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Related terms of A/D conversion (Cont.)  Clearly an A/D converter with more bits will give better accuracy.  But, for a higher bit A/D converter you need more storage memory to store the result and at the same time A/D converter circuit become more complex and conversion time will increase.

Problem 1: A weight sensor changes its output voltage 0.1 mV for 1gm change in input and it’s output varies from 0-5V. What should be the resolution and no of bits in the A/D converter if you want to get the weight in gram.  The resolution should be 0.1mV = 0.0001 V

8 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Related terms of A/D conversion (Cont.) Quantization Error : If an AC signal is applied to an ideal A/D converter, noise present in the digitized output due to quantization error. If the input to the quantizer is moved through its full range and subtracted from the discrete output levels the error signal will be a sawtooth waveform with a peak-to-peak value Q as shown in figure (b). The quantization error is dependent on the number of quantization level (discrete levels). The quantization levels are an index of the resolution. The output of a quantizer can be considered as a noise signal with an rms value of

Which is the quantization error.

Fig. (b) Fig. (a)

9 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Related terms of A/D conversion (Cont.) Sampling:  An analog signal is continuous and it has infinite number of samples. It is not possible to take the sample of analog signal at every instant of time. What the ADC circuit does is to take samples from the analog signal in a regular time interval. Each sample will be converted into a number, based on its voltage level.  The frequency on which the sampling will occur is called sampling rate. If a sampling rate of 22,050 Hz is used, for example, this means that in one second 22,050 points will be sampled. Thus, the distance of each sampling point will be of 1 /22,050 second (45.35 µs, in this case). If a sampling rate of 44,100 Hz is used, it means that 44,100 points will be captured per second. In this case the distance of each point will be of 1 /44,100 second or 22.675 µs. And so on.

10 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC

Basic of A/D Conversion

Sampling Rate= 10 samples/Sec 3-bit A/D converter

So, to store the signal of length 1.1 s we need

bit A/D converter with sampling rate samples/sec 10 of rate sampling with converter A/D bit -

3 (10*1.1*3) = 33 bit memory.

11 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC

Basic of A/D Conversion

Sampling Rate= 20 samples/Sec 4-bit A/D converter

bit A/D converter with sampling rate samples/sec 20 of rate sampling with converter A/D bit So, to store the signal of length 1.1 s we need -

4 (20*1.1*4) = 88 bit memory. = 11 Byte

12 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC

Basic of A/D Conversion: Performance analysis of two A/D converters

of 20 samples/sec 20 of

rate samples/sec 10 of rate

bit A/D converter with sampling sampling with converter A/D bit

-

3

bit A/D converter with sampling rate rate sampling with converter A/D bit

- 4

4-bit A/D converter with sampling rate 20 sample/sec is better than 3-bit A/D converter with sampling rate 10 sample/sec because converter output of 2nd one is more closer to original signal. But, 2nd one need 88-bit memory to store the signal where 1st one need only 33-bit memory.

13 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Basic of A/D Conversion: Minimum Sampling Rate (Nyquist Rate)

 So, we have this dilemma: if the sampling rate is too high, the output quality will be close to perfection, but you will need a lot of storage space to hold the generated data (i.e., the generated file will be very big); if the sampling rate is too low, the output quality will be bad.  How can you know the best sampling rate to be used during analog-to-digital conversions to have the best storage/quality balance? The answer is the Nyquist Theorem. “This theorem states that the sampling rate on analog-to-digital conversions must be at least two times the value of the highest frequency you want to capture.” In practice it is necessary to sample at least 5 times the value of the highest frequency in order to reduce the effect of noise and non-sinusoidal filters.  Since the human ear listens to sounds up to the frequency of 20 kHz, for music we need to use a sampling rate of at least 40,000 Hz. In fact, the CD uses a 44,100 Hz sampling rate, thus capturing more than our ears can hear (this value was arbitrated by Phillips and Sony when they created the CD). Some professional audio applications use an even higher sampling rate.  The phone system, on the other hand, was created to transmit only human voice, which has a lower frequency range, up to 4 kHz. So on the digital part of the phone system, an 8,000 Hz sampling rate is used. That’s why if you try to transmit music through the phone the quality is bad: the phone circuitry cancels all frequencies above 4 kHz.

14 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Basic of A/D Conversion: Explanation of Nyquist Rate

Problem 2: There is an embedded system which has an 16-bit A/D converter with 8KHz sampling rate. To store a signal of 1 minute length, how much memory you need?

15 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC ANALOG MODULES of PIC16F887

Features of Analog Modules: The A/D converter module has the following features:  The converter generates a 10-bit binary result using the method of successive approximation and stores the conversion results into the ADC registers (ADRESL and ADRESH);  There are 14 separate analog inputs;  The A/D converter converts an analog input signal into a 10-bit binary number;  The minimum resolution or quality of conversion may be adjusted to various needs by selecting voltage references Vref- and Vref+.

16 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Control of A/D Converter inside PIC 16F887

The operation of A/D converter is in control of the bits of four registers: • ADRESH Contains high byte of conversion result; • ADRESL Contains low byte of conversion result; • ADCON0 Control register 0; and • ADCON1 Control register 1. 17 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Control of A/D CONVERTER inside PIC 16F887 (Cont.) ADRESH and ADRESL Registers

 The result obtained after converting an analog value into digital is a10-bit number that is to be stored in the ADRESH and ADRESL registers.  There are two ways of handling it - left and right justification which simplifies its use to a great extent. The format of conversion result depends on the ADFM bit of the ADCON1 register. In the event that the A/D converter is not used, these registers may be used as general-purpose registers.

18 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Control of A/D CONVERTER inside PIC 16F887 (Cont.) ADCON0 Register

ADCS1, ADCS0 - A/D Conversion Clock Select bits select clock frequency used for internal synchronization of A/D converter. It also affects duration of conversion. ADCS1 ADCS2 CLOCK

0 0 Fosc/2

0 1 Fosc/8 1 0 Fosc/32 1 1 RC * GO/DONE - A/D Conversion Status bit determines current status of conversion: 1 - A/D conversion is in progress. 0 - A/D conversion is complete. This bit is automatically cleared by hardware when the A/D conversion is complete. ADON - A/D On bit enables A/D converter. 1 - A/D converter is enabled. 0 - A/D converter is disabled.

19 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Control of A/D CONVERTER inside PIC 16F887 (Cont.) ADCON0 Register (cont.) CHS3-CHS0 - Analog Channel Select bits select a pin or an analog channel for A/D conversion, i.e. voltage measurement:

20 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Control of A/D CONVERTER inside PIC 16F887 (Cont.) ADCON1 Register

ADFM - A/D Result Format Select bit 1 - Conversion result is right justified. Six most significant bits of the ADRESH are not used. 0 - Conversion result is left justified. Six least significant bits of the ADRESL are not used.

VCFG1 - Voltage Reference bit selects negative voltage reference source needed for the operation of A/D converter. 1 - Negative voltage reference is applied to the Vref- pin. 0 - Power supply voltage Vss is used as negative voltage reference source.

VCFG0 - Voltage Reference bit selects positive voltage reference source needed for the operation of A/D converter. 1 - Positive voltage reference is applied to the Vref+ pin. 0 - Power supply voltage Vdd is used as positive voltage reference source.

21 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC A/D ACQUISITION REQUIREMENTS In order to enable the ADC to meet its specified accuracy, it is necessary to provide a certain time delay between selecting specific analog input and measurement itself. This time is called 'acquisition time' and mainly depends on the source impedance. There is an equation used to calculate this time accurately, which in the worst case amounts to approximately 20uS. So, if you want the conversion to be accurate, don’t forget this important detail. The time needed to complete a one-bit conversion is defined as TAD. It is required to be at least 1-6 uS depends on ADC clock frequency which is set by ADCS1 and ADCS0 bits. One full 10-bit A/D conversion is slightly longer than expected and amounts to 11 TAD periods. S

22 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Steps of using A/D Module

In order to measure voltage on an input pin by the A/D converter, the following should be done:

Step 1 - Port configuration: • Write a logic one (1) to a bit of the TRIS register, thus configuring the appropriate pin as an input. • Write a logic one (1) to a bit of the ANSEL register, thus configuring the appropriate pin as an analog input.

Step 2 - ADC module configuration: • Configure voltage reference in the ADCON1 register. • Select ADC conversion clock in the ADCON0 register. • Select one of input channels CH0-CH13 of the ADCON0 register. • Select data format using the ADFM bit of the ADCON1 register. • Enable A/D converter by setting the ADON bit of the ADCON0 register.

Step 3 - ADC interrupt configuration (optionally): • Clear the ADIF bit. • Set the ADIE, PEIE and GIE bits.

23 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Steps of using A/D Module (Cont.)

Step 4 - Wait for the required acquisition time to pass (approximately 20uS).

Step 5 - Start conversion by setting the GO/DONE bit of the ADCON0 register.

Step 6 - Wait for ADC conversion to complete. • It is necessary to check in the program loop whether the GO/DONE pin is cleared or wait for an A/D interrupt (must be previously enabled).

Step 7 - Read ADC results: • Read the ADRESH and ADRESL registers.

24 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Problem 3: Write codes to read analog value from channel 2 and displays it on PORTD and PORTB as 10-bit binary number. Use A/D converter reference voltage from external pin.

25 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Solution of Problem 3 unsigned int temp_res; void main() { ANSEL = 0x0C; // Pins AN2 and AN3 are configured as analog TRISA = 0xFF; // All port A pins are configured as inputs ANSELH = 0; // Rest of pins is configured as digital TRISB = 0x3F; // Port B pins RB7 and RB6 are configured as outputs TRISD = 0; // All port D pins are configured as outputs ADCON1.F4 = 1 ; // Voltage reference is brought to the RA3 pin.

do { temp_res = ADC_Read(2); // Result of A/D conversion is copied to temp_res PORTD = temp_res; // 8 LSBs are moved to port D PORTB = temp_res >> 2; // 2 MSBs are moved to bits RB6 and RB7 } while(1); // Endless loop }

In order to make this example work properly, it is necessary to tick off the ADC library in the Library Manager prior to compiling: • ADC

26 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Problem 4: Lamp on street are used to lighten the street at night or cloudy time when day light becomes very dim. Design a circuit using PIC16F887 microcontroller for automatic control of street light, such that, lamp on street will lighten only at night or cloudy time, when there is not enough light. Use LDR to sense the light. Suppose, resistance of LDR is less than 1M when there is enough light and greater than 1M when light is not enough. Use internal A/D converter of microcontroller to measure the voltage across LDR.

Solution of Problem 4

27 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Program (Problem-4)

unsigned int light; void main() { ANSEL = 0x04; // Pins AN2 is configured as analog TRISA = 0xFF; // All port A pins are configured as inputs ANSELH = 0; // Rest of pins is configured as digital TRISB.F0 =0; // Port B pin PB0 is configured as output ADCON1.F4 = 0 ; // Power supply voltage Vdd is used as positive voltage reference source. ADCON.F5=0; // Power supply voltage Vss is used as negative voltage reference source. while(1) { light= ADC_Read(2); // Result of A/D conversion is copied to light if(light>512) PORTB.F0=1; else PORTB.F0=0; } }

28 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Problem 5: Gas content in the air is measured by ppm (parts per million) unit. Suppose, when 500 ppm CH4 gas is present in the air, it is harmful for health and when it exceeds 700 ppm, the situation is dangerous. Develop an embedded system for an industry to give- beef sound when CH4 content in the air is greater than 500 ppm and continuous alarm when CH4 content exceeds 700 ppm. The characteristics curve of the gas sensor and its pin diagram is given below. Use a buzzer to produce sound.

29 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Solution of Problem 5 Circuit Diagram

RB0

Out

30 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC Program (problem-5) unsigned int gas; void main() { ANSEL = 0x04; // Pins AN2 is configured as analog TRISA = 0xFF; // All port A pins are configured as inputs ANSELH = 0; // Rest of pins is configured as digital TRISB.F0 =0; // Port B pin PB0 is configured as output ADCON1.F4 = 0 ; // Power supply voltage Vdd is used as positive voltage reference source. ADCON.F5=0; // Power supply voltage Vss is used as negative voltage reference source. while(1) { gas= ADC_Read(2); // Result of A/D conversion is copied to gas if(gas>307 && gas<409) { PORTB.F0=1; delay_ms(300); PORTB.F0=0; delay_ms(300); } else if (gas>409) PORTB.F0=1; else PORTB.F0=0; } }

31 Lecture Materials on "Interfacing to Analog World", By- Mohammed Abdul Kader, Assistant Professor, EEE, IIUC