Professional Documents
Culture Documents
Gui TT ADC + BT
Gui TT ADC + BT
MÔ ĐUN BỘ CHUYỂN
ĐỔI ADC
( Analog-to-Digital module)
C
N
Đ
T
BM DTMT
Microcontroller
Electric
Circuit RA1/AN1 (ADC)
Analog Signal
x(t)
t
ADC.3
C
What is an ADC?
N
Đ
T
BM DTMT
t
k
Discrete-Amplitude Signal Digital Signal
v’(t) x’[k]
t k ADC.4
Digital-to-Analog Conversion (ADC)
C
N
Đ
BM DTMT
T
Example
Microcontroller
DAC
Transducer
PIC16F877A
Digital Signal
x(t) Analog Signal
xÕ[k]
t k
1-bit Example
5V
2.5V
0V
5.00 V
4.375V < Vin ≤ 5.00V: Signal is 111 ‘111’
4.375 V
3.750V < Vin ≤ 4.375V: Signal is 110 ‘110’
A/D Converter
3.750 V
To Input Voltage
Binary Output
3.125V < Vin ≤ 3.750V: Signal is 101 ‘101’
3.125 V
2.500V < Vin ≤ 3.125V: Signal is 100 ‘100’
2.500 V
1.875V < Vin ≤ 2.500V: Signal is 011 ‘011’
1.875 V 1.250V < Vin ≤ 1.875V: Signal is 010 ‘010’
1.250 V 0.625V < Vin ≤ 1.250V: Signal is 001 ‘001’
0.625 V 0.000V ‹ Vin ≤ 0.625V: Signal is 000’ ‘000’
0.000 V
BM DTMT
Đ
T ADC The PIC16F877A Microcontroller
• 10-bits:
– 210 = 1024 levels => 1023 thresholds
– Resolution = 5V/1024 = 0.0048828125 V
– Thresholds:
• 0.0048828125 V
• 0.009765625 V
• 0.0146484375 V
• Etc.
ADC.11
C
ADC.23
C
N
Đ
T
ADC Timing
BM DTMT
19.75 µs
(example)
ADC.36
C
N ADC Conversion Time for
Đ
BM DTMT
T Successive Approx. Converter
Successive Approximation
ADC.37
C
N
Note – You must wait at least 2 * TAD before next acquisition is started.
ADC.39
C
Value on Value on
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
POR, BOR MCLR, WDT
0Bh,8Bh, INTCON GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF 0000 000x 0000 000u
10Bh,18Bh
0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000
8Ch PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
1Eh ADRESH A/D Result Register High Byte xxxx xxxx uuuu uuuu
9Eh ADRESL A/D Result Register Low Byte xxxx xxxx uuuu uuuu
1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON 0000 00-0 0000 00-0
9Fh ADCON1 ADFM ADCS2 — — PCFG3 PCFG2 PCFG1 PCFG0 00-- 0000 00-- 0000
85h TRISA — — PORTA Data Direction Register --11 1111 --11 1111
05h PORTA — — PORTA Data Latch when written: PORTA pins when read --0x 0000 --0u 0000
89h(1) TRISE IBF OBF IBOV PSPMODE — PORTE Data Direction bits 0000 -111 0000 -111
1= Quaù trình ñang xaûy ra hoặc Cho quaù trình xaûy ra.
0= Quaù trình khoâng xaûy ra hoaëc ñaõ Hoaøn taát.
ADON Cho pheùp Module ADC hoaït ñoäng
1= Cho pheùp ( ADC ñöôïc cung caáp nguoàn)
0= Khoâng cho pheùp (ADC khoâng ñöôïc caáp nguoàn)
C
Bit 7-6 ADCS<1:0>: Các bit lựa chọn xung chuyển đổi AD (AD Conversion Clock Select bits)
00 = FOSC/2 ; 01 = FOSC/8 ; 10 = FOSC/32
11 = FRC (xung clock lấy từ bộ dao động nội bên trong có tần số lớn nhất là 500 kHz)
Bit 5-3 CHS<3:0>: Các bit lựa chọn kênh tương tự (Analog Channel Select bits)
C
Bit 7 ADFM: bit lựa chọn định dạng kết quả ADC (AD Result Format Select bit):
ADFM = 1: có chức năng canh lề phải, 6 bit MSB của ADRESH có giá trị là „0‟.
ADFM = 0: có chức năng canh lề trái, 6 bit LSB của ADRESL có giá trị là „0‟.
Bit 5 VCFG1: bit lựa chọn điện áp tham chiếu (Voltage reference bit)
VCFG1 = 1: có chức năng nối điện áp tham chiếu Vref- với ngõ vào AN3.
VCFG1 = 0: có chức năng nối điện áp tham chiếu Vref- với VSS. Bit 4
Bit 4 VCFG0: bit lựa chọn điện áp tham chiếu (Voltage reference bit)
VCFG0 = 1: có chức năng nối điện áp tham chiếu Vref+ với ngõ vào AN3.
VCFG0 = 0: có chức năng nối điện áp tham chiếu Vref+ với VDD.
1. Port configuration
2. Channel selection
3. ADC voltage reference selection
4. ADC conversion clock source
5. Interrupt control
6. Results formatting
7 . Read ADC
C
N
Đ
Programming the A/D module
BM DTMT
T
consists of the following steps
1. Configure the analog/digital I/O ADCON1|ANSEL/ANSELH.
- All analog lines are initialized as input (TRIS registers).
2. Configure for ADC Module
- Select the A/D input channel (CHSx).
- Select right- or left-justification (ADFM bit),
- Select the reference voltage VCFGx/PCFGx
- Select the A/D conversion clock (ADCS bits),
- Enable the A/D module (ADON bit).
3. Configure for AD interrupt ADIF; ADIE, PEIE, GIE
4. Wait the acquisition time (tACQ)
5. Initiate the conversion (GO/DONE).
6. Wait for the conversion to complete.
+polling – check GO/DONE; + interrupt – check ADIF
7. Read and store the digital result (ADRESH|ADRESL
8. Clear ADIF; go back step 5 to continous
C
1. Cấu hình PORT: Chọn pin của PIC là ngõ vào (TRISXi)
pin của PIC là analog (ANSEL, ANSELH)/ ADCON1
2. Cấu hình mô dul ADC: - Chọn kênh vào ADC (SHx).
- Chọn điện áp mẫu tham chiếu (VCFGx/ PCFGX )
- Chọn tần số xung chuyển đổi clock (ADCSx).
- Định dạng dữ liệu (ADFM)
- Cho phép bộ chuyển đổi AD hoạt động (ADON).
3. Cấu hình ngắt ADC (tùy chọn)
Xóa cờ ngắt ADIF. Cho phép ngắt( ADIE; PEIE; GIE).
4. Đợi cho tới khi quá trình lấy mẫuổn định (tACQ=20us) .
5. Cho phép quá trình chuyrnt đổi (GO/DONE).
6. Đợi cho tới khi quá trình chuyển đổi hoàn tất:
Polling -- > Kiểm tra bit GO/DONE .
Ngắt -- > Kiểm tra xử lý ISR ( ADIF)
7. Đọc kết quả chuyển đổi ADC (ADRESH/ADRESL)
8. Xóa cờ ngắt / và lặp lại từ bước 5 cho quá trình chuyển đổi tiếp theo
C
N
Đ
T
Một số bước thông dụng
BM DTMT
Lập trình điều khiển module ADC đọc dữ liệu điện áp tương tự (0-
5V) từ VR đưa đến đầu vào AN3, với điện áp tham chiếu
VREF+=Vcc, VREF_=Vss. Dữ liệu 10 bit trên ADRESH:ADRESL
được xuất ra và cập nhật liên tục trên 10 Diode nối như hình vẽ,
Biết bít LSB->D1; bít MSB->D10;
C
N
Đ
T
BM DTMT
Lưu đồ
3 lưu đồ:
Lưu đồ CT chính (…xử lý dữ liệu)
Lưu đồ chương trình con khởi tạo các pin/port
Lưu đồ chương trình đọc dữ liệu về thanh ghi
ADRESH:ADRESL
C
chương trình
N
Đ
T
BM DTMT
CONFIG…
#include<xc.h>
#define _XTAL_FREQ 4000000
void ADC_Init() {
ADCON0 = 0xD9; //ADC Module Turned ON and Clock is selected
// co the thiet lạp tung bit cua ADCON0
ADCON1 = 0xC0; //cac pin la Analog Input, VREF+= VDD and, VREF-= VSS
// co the thiet lạp tung bit cua ADCON0
// Neu dung PIC16F887 bo sung cac thanh ghi ANSEL/H….
}
unsigned int ADC_Read(unsigned char channel) {
__delay_ms(2); //Acquisition time to charge hold capacitor
GODONE=1; //Initializes A/D Conversion
while(GODONE); //Wait for A/D Conversion to complete
return ((ADRESH<<8)+ADRESL); //Returns Result
}
C
N
Đ
T
BM DTMT
void main()
{ unsigned int a, tmp;
TRISD = 0x00; //PORTB as output
TRISC = 0x00; //PORTC as output
TRISA = 0xFF; //PORTA as input
ADC_Init(); //Initializes ADC Module
while(1);
{
a = ADC_Read(0); //Reading Analog Channel 0
PORTD = a; //Lower 8 bits to PORTB
PORTC =a>>8//Higher 2 bits to PORTC
__delay_ms(100); //Delay
} }
C
BM DTMT
T vẽ lưu đồ
Điện áp cần đo Từ Voltage to
measure
Bộ hiện thị dung 10 LED
Bộ đọc và chuyển đổi điện áp
tương tự sang số dung PIC,
không dung ngắt
Bộ nguồn cấp điện cho hệ
Sơ đồ
C
Chương trình
N
Đ
T
BM DTMT
Bài ADC4
N
Đ
T
BM DTMT
Chương trình
N
Đ
T
BM DTMT
SV tự hoàn thiện