Tải bản đầy đủ (.pdf) (17 trang)

Chuong 6 Vi điều khiển PIC 16F887 chuyển đổi tương tự sang số ADC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1009.08 KB, 17 trang )

TRƯỜNG ĐẠI HỌC PHENIKAA
KHOA ĐIỆN ĐIỆN TỬ

KỸ THUẬT VI XỬ LÝ VÀ VI
ĐIỀU KHIỂN
Chương 6: Vi điều khiển PIC 16F887 chuyển
đổi tương tự sang số ADC
GIẢNG VIÊN:

ThS. ĐÀO TÔ HIỆU

Hà Nội, 08/2021


NỘI DUNG

✓Giới thiệu
✓ADC của vi điều khiển PIC 16F887
✓Tập lệnh C cho khối ADC của PIC 16F887
✓Ứng dụng ADC của PIC 16F887

2


GIỚI THIỆU
- ADC: Chuyển đổi tín hiệu điện áp sang tín
hiệu số, miền ánh xạ trong khoảng 0-1023.
- PIC16F887 có 14 kênh ADC (AN0-AN13)
phân giải 10 bit
- Các thanh ghi liên quan: TRIS, ANSELANSELH, ADCON0, ADCON1, ADRESHADRESL.


3


ADC CỦA VI ĐIỀU KHIỂN PIC 16F887
- 14 kênh Analog: 5 kênh
trên PORTA, 3 kênh trên
PORTE và 6 kênh trên
PORTB.
- Các thanh ghi quan
trọng:
- TRIS->1: Kênh đọc ADC
phải cấu hình chân tương
ứng là nhập dữ liệu.
+ ADRESH, ADRESL: kết
quả chuyển đổi 10 bit của
ADC sau khi chuyển đổi
xong.
+ ADCON0 và ADCON1:
Điều khiển ADC0 và ADC1
4


ADC CỦA VI ĐIỀU KHIỂN PIC 16F887
Thanh ghi ADCON0: Điều khiển khối ADC0
- Bit 7 (ADCS1), bit 6 (ADCS0): Lựa chọn xung chuyển đổi AD

ADCS1:ADCS0 20MHZ 8MHz 4MHz 1MHz
00 = FOSC/2
100ns 250ns 500ns 2us
01 = FOSC/8

400ns 1us
2us
8us
10 = FOSC/32 1.6us 4us
8us
32us
11 = Frc (xung clock lấy từ bộ dao động nội bên
trong (tần số lớn nhất 500kHz)

5


ADC CỦA VI ĐIỀU KHIỂN PIC 16F887
Thanh ghi ADCON0: Điều khiển khối ADC0
- Bit CHS3, CHS2, CHS1, CHS0 (Bit5-Bit2): Lựa chọn kênh ADC

6


ADC CỦA VI ĐIỀU KHIỂN PIC 16F887
Thanh ghi ADCON0: Điều khiển khối ADC0
Bit 1 (GO/DONE) : bit báo trạng thái chuyển đổi ADC
GO/DONE = 1 báo quá trình chuyển đổi ADC bắt đầu
GO/DONE = 0 báo quá trình chuyển đổi ADC hoàn thành
- Bit 0 (ADON): bit mở nguồn cho ADC hoạt động (AD ON bit );
ADON = 1 Cấp nguồn cho khối ADC
ADON = 0 Ngưng cấp nguồn cho ADC

7



ADC CỦA VI ĐIỀU KHIỂN PIC 16F887
Thanh ghi ADCON1: Cấu hình đọc tương tự hoặc I/O số
Bit 7 (ADFM) : bit định dạng trạng thái chuyển đổi ADC
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".

8


ADC CỦA VI ĐIỀU KHIỂN PIC 16F887
Thanh ghi ADCON1: Cấu hình đọc tương tự hoặc I/O số
Bit 7 (ADFM) : bit định dạng trạng thái chuyển đổi ADC

Bit 5: VCFG1 là bit lựa chọn điện áp tham chiếu âm
VCFG1 = 1: nối Vref- với ngõ vào AN3
VCFG1 = 0: nối Vref- với VSS
Bit 4: VCFG0 là bit lựa chọn điện áp tham chiếu dương
VCFG0 = 1: nối Vref- với ngõ vào AN3
VCFG0 = 0: nối Vref- với VDD

9



ADC CỦA VI ĐIỀU KHIỂN PIC 16F887
- Cấu hình cho port đọc ADC là ngõ vào (nhập dữ liệu).
- Chọn nguồn xung dao động cho chuyển đổi AD =>cấu hình điện áp
tham chiếu => Chọn kênh ngõ vào tương tự cần chuyển đổi => Chọn
định dạng cho 2 thanh ghi lưu kết quả => Mở nguồn cho ADC.
- Thiết lập cấu hình ngắt ADC (nếu cần) và delay 1 khoảng thời gian để
ADC ổn định
- GO/DONE l=1 => Bắt đầu ADC
- GO/DONE l=0 => ADC kết thúc. Nếu dùng ngắt thì chờ ngắt ADC xảy
ra.
- Đọc cặp thanh ghi kết quả (ADRESH: ADRESL), xóa bit ADIF nếu
dùng ngắt.
- Lặp lại các bước trên cho chu kỳ chuyển đổi Adc tiếp theo.

10


Tập lệnh C cho khối ADC của PIC 16F887

setup_adc (mode);
setup_adc2(mode);
- Cài đặt chế độ ADC: chế độ tín hiệu tương tự sang tín hiệu số.
SETUP_ADC_PORT(VALUE)
- value: giá trị hằng số dùng trong device.h
- thiết lập các chân ADC la tương tự hay số (có thể là tổ hợp )

11



Tập lệnh C cho khối ADC của PIC 16F887

- Tất cả các chân analog: setup_adc_ports( ALL_ANALOG );
- Chân A0,A1,A3 là analog và tất cả các chân còn lại là digital. Điện áp
+5V được sử dụng như điện áp tham chiếu: setup_adc_ports(
AN0_AN1_AN3);
- Chân A0,A1 là analog,chân A3 được sử dụng cho điện áp tham chiếu
và tất cả các chân còn lại là digital: setup_adc_ports(
12
AN0_AN1_VSS_VREF);


Tập lệnh C cho khối ADC của PIC 16F887
SET_ADC_CHANNEL(CHAN)
- Khi ta muốn đo nhiều hơn 1 kênh thì cần chuyển kênh (nếu chỉ là 1 thì
khơng cần
- CHAN là thứ tự kênh mà ta cần chuyển (bắt đầu từ số 0)
- Lưu ý : nên chờ 1 khoảng thời gian ngắn khi chuyển kênh thường là
10us
value = Read_ADC (mode)
- Đọc kết quả khi chuyển đổi xong
- 1 số mode : (ta nên dùng cái thứ 1 vì adc sẽ liên tục đọc và cập nhập
số liệu)

13


ỨNG DỤNG ADC CỦA PIC 16F887
Lập trình đọc dữ liệu từ LM35


14


ỨNG DỤNG ADC CỦA PIC 16F887
Lập trình đọc dữ liệu từ LM35

15


ỨNG DỤNG ADC CỦA PIC 16F887
Lập trình đọc dữ liệu từ LM35

16




×