Khảo sát ADC
-
Upload
khangminh22 -
Category
Documents
-
view
3 -
download
0
Transcript of Khảo sát ADC
Khái niệm
ADC (Analog to Digital Converter) có nghĩa là bộ
chuyển đổi tín hiệu tương tự sang tín hiệu số
Công dụng: chuyển đổi tín hiệu tương tự sang tín
hiệu số
Giả sử:
Tôi muốn làm một đồng hồ đo điện áp
Trong khoảng từ 0 v => 5 v
Mà Pic chỉ hiểu giá trị 0 tương ứng 0 v
Và 1 tương ứng 5 V
Vậy các giá trị 1; 1,5; 1,6; 1,7 (volt)....v...v thì sẽ
nhận dạng thế nào đây?
Vin= value.(Vref+ - Vref- )/ (2n -1)
=> Vin = 409x(5-0)/(210-1) = 1,999 v
luôn có sai số sảy ra ở bộ ADC nhưng rất nhỏ
Nguyên Lý hoạt động
Tín hiệu tương tự sẽ đi vào 1 hay
nhiều chân (hay gọi là kênh (chanel)
Có tổng cộng 13 Kênh từ AN0- AN12
Nên có thể Chuyển đổi 13 tín hiệu
tương tự đi vào vi điều khiển
Nguyên Lý Hoạt Động
Giá trị đầu ra của bộ chuyển đổi sẽ
lưu vào 2 thanh ghi
ADRESH (thanh ghi byte cao)
ADRESL (thanh ghi byte thấp)
Cấu hình cho bộ ADC
B1: TAD = ? TOSC
B2: TACQ= ? TAD
B3: cách ghi giá trị
B4: chọn kênh (0 – 12)
B5: chọn có dùng ngắt không
B6: chọn Vref+-
B7: cấu hình vào ra A/ D
Hoạt động chuyển đỏi
B1: cấu hình
B2: cho chuyển đổi
B3: đọc giá trị
B4: tắt bộ chuyển đổi (có hoặc không)
Sử dụng thư viện ADC.H
BusyADC(): hàm báo bận
CloseADC(): hàm cấm
ConvertADC(): hàm bắt đầu chuyển đổi
OpenADC(): hàm cấu hình ADC
ReadADC(): hàm đọc giá trị ADC
SetChanADC(): hàm chọn kênh
Hàm OpenADC();
Ví Dụ:
OpenADC(ADC_FOSC_32&// TAD= 32TOSC
ADC_RIGHT_JUST&// chon dihc phai
ADC_12_TAD,// TACQ= 12TAD
ADC_CH0&// chon kênh 0
ADC_INT_OFF& // cấm ngắt ADC
ADC_VREFPLUS_VDD&// Vref+= Vdd
ADC_VREFMINUS_VSS,// Vref-= Vss
14); PCFG3:PCFG0 = 14//
Chọn Vref
• ADC_VREFPLUS_VDD: Vref+= 5v
• ADC_VREFPLUS_EXT: Vref+ VAN3
• ADC_VREFMINUS_VSS: Vref-= 0v
• ADC_VREFMINUS_EXT: Vref-= VAN2
Cách lấy giá trị ADC
• Khi cấu hình xong thì chạy hàm convertADC
• Và sau đó đọc giá trị như sau:
int AD;
AD= ReadADC();