Download - Day 3 AM ADC
-
7/30/2019 Day 3 AM ADC
1/13
21-Aug-10 Paranz 1
Introduction to PICMicrocontroller Programming
& Interfacing
August 19-21, 2010Franz Duran
21-Aug-10 Paranz 2
Analog-to-Digital
Conversion
DAY 3 Morning Session
August 21, 2010
21-Aug-10 Paranz 3
Analog-to-Digital Conversion
Process of converting an analogsignal to a proportional digital
numberUsed in data acquisition system
Analog-to-Digital ConverterADC, A/D converter
-
7/30/2019 Day 3 AM ADC
2/13
21-Aug-10 Paranz 4
A/D CONVERSION
Basic 3-bit ADC
21-Aug-10 Paranz 5
A/D CONVERSION
111+4.375V < Vin
< +5.0V
110+3.75V < Vin
< +4.375V
101+3.125V < Vin
< +3.75V
100+2.5V < Vin
< +3.125V
011+1.875V < Vin
< +2.5V
010+1.25V < Vin
< +1.875V
001+0.625V < Vin
< +1.25V
0000.0V < Vin
< +0.625V
D2D1D0Vin
21-Aug-10 Paranz 6
A/D CONVERSION
Important ADC propertiesResolution
# of bits higher the # of bits, the better
Conversion time
ADC Architecture
-
7/30/2019 Day 3 AM ADC
3/13
21-Aug-10 Paranz 7
A/D CONVERSION
Typical A/D converter architecturesFlash ADC
Ramp ADC
Successive Approximation ADC
Integrating slope ADC
21-Aug-10 Paranz 8
A/D CONVERSION
Example ADC chipNational Semiconductor ADC0804
General purpose application
8-bit resolution
Successive Approximation ADC
10 Ksamples/second (free-running mode)
0-5v input
20-pin DIP
21-Aug-10 Paranz 9
A/D CONVERSION
BasicADC0804 circuit
-
7/30/2019 Day 3 AM ADC
4/13
21-Aug-10 Paranz 10
A/D CONVERSION
PIC16F84A
with
ADC0804
21-Aug-10 Paranz 11
PIC16F A/D MODULE
10-bit resolution
Successive Approximation ADC
0-5V input range
50Ksamples/second
21-Aug-10 Paranz 12
PIC16F A/D MODULE
SFRs:ADRESH (A/D Result Register High Byte)
ADRESL(A/D Result Register Low Byte)
ADCON0 (A/D Control Register 0)
ADCON1 (A/D Control Register 1)
PIE1 (Peripheral Interrupt Enable Reg. 1)
PIR1 (Peripheral Interrupt Enable Reg. 1)
INTCON (Interrupt Control Register)
-
7/30/2019 Day 3 AM ADC
5/13
21-Aug-10 Paranz 13
PIC16F A/D MODULE
21-Aug-10 Paranz 14
PIC16F A/D MODULE
21-Aug-10 Paranz 15
PIC16F A/D MODULE
-
7/30/2019 Day 3 AM ADC
6/13
21-Aug-10 Paranz 16
PIC16F A/D MODULE
21-Aug-10 Paranz 17
PIC16F A/D MODULE
21-Aug-10 Paranz 18
PIC16F A/D MODULE
-
7/30/2019 Day 3 AM ADC
7/13
21-Aug-10 Paranz 19
PIC16F A/D MODULE
21-Aug-10 Paranz 20
PIC16F A/D MODULE
21-Aug-10 Paranz 21
PIC16F A/D MODULE
-
7/30/2019 Day 3 AM ADC
8/13
21-Aug-10 Paranz 22
PIC16F A/D MODULE
A/D module initialization1. Select A/D Conversion Clock
2. Configure Analog Channels
21-Aug-10 Paranz 23
PIC16F A/D MODULEvoid ADCInit(void)
{
ADCS0 = 0; //TAD = Fosc/32ADCS1 = 1;
ADCS2 = 0;
PCFG3 = 1; //Only RA0/AN0 is analog input.PCFG2 = 1; //The rest of the analog pins are
PCFG1 = 1; //digital IO
PCFG0 = 0;TRISA0 = 1; //RA0/AN0 is input
CHS0 = 0; //Select channel 0
CHS1 = 0;CHS2 = 0;
ADFM = 1; //Right justified.
...
21-Aug-10 Paranz 24
PIC16F A/D MODULE
...
...
ADRESL = 0x00; //Clear A/D Result registers
ADRESH = 0x00;
ADIE = 0; //No interruptsPEIE = 0;
GIE = 0;
ADON = 1; //Turn on ADC circuit
return;
}
-
7/30/2019 Day 3 AM ADC
9/13
21-Aug-10 Paranz 25
PIC16F A/D MODULE
A/D read1. Select Channel
2. Wait Acquisition Time
3. Start A/D Conversion
21-Aug-10 Paranz 26
PIC16F A/D MODULE//Read the 10-bit A/D value
unsigned int ADCRead(void)
{
unsigned int adc_temp; //Hold the 10-bit A/D value
ADGO = 1; //Start A/D conversion.
while(ADGO == 1); //Wait while conversion is
// not finished.
adc_temp = ADRESL; //Read the lower 8-bit, then
adc_temp += (ADRESH
-
7/30/2019 Day 3 AM ADC
10/13
21-Aug-10 Paranz 28
PIC16F A/D MODULE
EXERCISE:Open Example#1
Build the project, program the microcontroller, andrun the application
Example#1
21-Aug-10 Paranz 29
PIC16F A/D MODULEExample#2
21-Aug-10 Paranz 30
-
7/30/2019 Day 3 AM ADC
11/13
21-Aug-10 Paranz 31
21-Aug-10 Paranz 32
Interfacing LM35 Sensor
LM35National Semicon.
Temp. sensor
T0-92 package
21-Aug-10 Paranz 33
-
7/30/2019 Day 3 AM ADC
12/13
21-Aug-10 Paranz 34
21-Aug-10 Paranz 35
21-Aug-10 Paranz 36
-
7/30/2019 Day 3 AM ADC
13/13
21-Aug-10 Paranz 37
21-Aug-10 Paranz 38
21-Aug-10 Paranz 39