Khảo sát ADC

22
+Khái Niệm +Cách Dùng Khảo sát ADC Hoàng Văn Lợi

Transcript of Khảo sát ADC

+Khái Niệm

+Cách Dùng

Khảo sát ADC

Hoàng Văn Lợi

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?

PIC cung cấp ta 1 bộ ADC

Bộ ADC này sẽ chia khoảng điện áp từ Vrf- đến

Vrf+ thành 2 mũ n khoảng

PIC chỉ hiểu được tín hiệu 0 và 1 ( tức là 0 hoặc 5 v)

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

Nguyên Lý Hoạt Động

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)

Quá trình chuyển đổi

Quá trình chuyển đổi

TAD: là thời gian chuyển đổi từng bít. TACQ: là thời gian đợi tín hiệu đi vào

Quá trình chuyển đổiChọn TAD theo bảng sau:

Quá trình chuyển đổi

• Có thể chọn TACQ = 0, 2,4,6,8, 12, 16,20 TAD

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 PCFG3:PCFG0

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();

Bài giảng kết thúc

•ENJOY !

Video sau tôi sẽ hướng dẫn viết code với ADC để đọc điện áp