CẢM BIẾN NHIỆT ĐỘ DS18B20Đặc điểm chính của DS18B20 như sau: • Có thể đo nhiệt độ trong khoảng đến.. • Lệnh cho phép bộ điều khiển bus có thể dò tìm được số lượng thành viên tớ đang được
Trang 1BÁO CÁO
MÔN VI ĐIỀU KHIỂN
SỬ DỤNG CẢM BIẾN DS1820 ĐO NHIỆT ĐỘ MÔI TRƯỜNG,
GỬI VỀ VI ĐIỀU KHIỂN XỬ LÝ VÀ HIỂN THỊ LÊN MÀN HÌNH LCD
GVHD: Đoàn Thế Thảo
Trang 2DANH SÁCH NHÓM
Trang 3NỘI DUNG
Trang 5CẢM BIẾN NHIỆT ĐỘ DS18B20
Phiên bản chống nước, chống ẩm
Trang 8CẢM BIẾN NHIỆT ĐỘ DS18B20
Đặc điểm chính của DS18B20 như sau:
• Lấy nhiệt độ theo giao thức 1 dây (1wire)
• Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit (tùy theo sử dụng)
• Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit
Trong trường hợp không config thì nó tự động ở chế độ 12 bit
Trang 9CẢM BIẾN NHIỆT ĐỘ DS18B20
Đặc điểm chính của DS18B20 như sau:
• Có thể đo nhiệt độ trong khoảng đến
• Với khoảng nhiệt độ là đến thì độ chính xác là , , , theo số bit config tương ứng là 8 bit, 9 bit, 10 bit và 12 bit Mặc định sẽ là 12 bit
• Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép
• Có mã nhận diện lên đến 64 bit, vì vậy có thể kiểm tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp
•
Trang 10CẢM BIẾN NHIỆT ĐỘ DS18B20
• Đo nhiệt độ từ cảm biến DS18B20
Trang 11CẢM BIẾN NHIỆT ĐỘ DS18B20
Một số lệnh trong ROM liên quan đến cảm biến DS18B20
• READ ROM (33h)
• Cho phép đọc ra 8 byte mã khắc bằng laser trên ROM, bao gồm:
8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC
• Chỉ dùng khi trên bus có 1 cảm biến DS18B20, nếu không sẽ xảy
ra xung đột trên bus do tất cả các thiết bị slave cùng đáp ứng
Trang 12CẢM BIẾN NHIỆT ĐỘ DS18B20
Một số lệnh trong ROM liên quan đến cảm biến DS18B20
• MATCH ROM (55h)
• Được gửi đi cùng với 64 bit ROM tiếp theo
• Cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào
Trang 14• Lệnh cho phép bộ điều khiển bus có thể dò tìm được số lượng
thành viên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm
Trang 15CẢM BIẾN NHIỆT ĐỘ DS18B20
Một số lệnh trong ROM liên quan đến cảm biến DS18B20
• ALARM SEARCH (ECh)
• Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện
cảnh báo trong phép đo nhiệt độ cuối cùng
• Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo
được lớn hơn giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến
Trang 16CẢM BIẾN NHIỆT ĐỘ DS18B20
• Sau khi master sử dụng các lệnh ROM để định địa chỉ cho các cảm biến 1 dây đang được đấu vào bus, nó sẽ đưa ra các lệnh chức năng
• Bằng các lệnh chức năng này, master có thể:
• đọc ra và ghi vào bộ nhớ nháp (scratchpath) của cảm biến
DS18B20
• khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo được
• xác định chế độ cung cấp điện áp nguồn
Trang 17CẢM BIẾN NHIỆT ĐỘ DS18B20
Các lệnh chức năng
• WRITE SCRATCHPAD (4Eh)
• Lệnh cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820
• Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp)
• Byte thứ hai được ghi vào thanh ghi TL (byte 3 của bộ nhớ nháp)
• Dữ liệu truyền theo trình tự đầu tiên là bit có ý nghĩa nhất và kế tiếp là những bit có ý nghĩa giảm dần Cả hai byte này phải được ghi trước khi master xuất ra một xung RESET hoặc khi có dữ liệu khác xuất hiện
Trang 18CẢM BIẾN NHIỆT ĐỘ DS18B20
Các lệnh chức năng
• READ SCRATCHPAD (BEh)
• Lệnh cho phép master đọc nội dung bộ nhớ nháp
• Quá trình đọc bắt đầu từ bit có ý nghĩa nhất của byte 0 và tiếp tục cho đến byte thứ 9 (byte 8 - CRC)
• Master có thể xuất ra một xung RESET để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc
Trang 20• Thời gian chuyển đổi không quá 200 ms.
• Trong thời gian đang chuyển đổi, nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0
Trang 21CẢM BIẾN NHIỆT ĐỘ DS18B20
Các lệnh chức năng
• READ POWER SUPPLY (B4h)
• Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào
• Giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một đường dẫn riêng
Trang 22CẢM BIẾN NHIỆT ĐỘ DS18B20
Cách config độ phân giải cho DS18B20
• Sơ đồ bộ nhớ của DS18B20
Trang 23CẢM BIẾN NHIỆT ĐỘ DS18B20
Cách config độ phân giải cho DS18B20
• Các byte thứ 5 của bộ nhớ đệm có chức năng đăng ký cấu hình
(config) cho DS18B20, và các bit được tổ chức như sau:
• Các bit từ 0 đến bit 4 luôn được đọc giá trị là 1, bit 7 luôn được đọc giá trị là 0
MSB
Trang 24CẢM BIẾN NHIỆT ĐỘ DS18B20
Cách config độ phân giải cho DS18B20
• Cấu hình độ phân giải cho DS18B20 được quyết định bởi R1 và R0
• Ta có bảng thiết lập như sau:
R1 R0 Thermometer resolution conversion time Max
Trang 27LCD 1602
Trang 2816 chân chức năng
Trang 30LCD 1602
• Tập lệnh giao tiếp với LCD đã được chuẩn hóa trong thư viện CCS
• Để sử dụng, ta chỉ cần khai báo #include <LCD.c>
Trang 31LCD 1602
• Một số hàm thông dụng:
• lcd_init(): Khởi tạo LCD, gọi 1 lần trong hàm main
• lcd_gotoxy(int8 x, int8 y) : hiển thị tại vị trí cột x , hàng y, bắt đầu ở
Trang 32LCD 1602
• Một số hàm thông dụng:
• lcd_clear() : xóa LCD
• lcd_putc(char c) : gửi 1 ký tự lên LCD
• lcd_getc(int8 x, int8 y) : đọc ký tự tại cột x, hàng y
Trang 33CODE VÀ MÔ PHỎNG
• Lập trình bằng CCS-C
• Mô phỏng Proteus
Trang 34MẠCH PROTEUS
Trang 36void hienthi(int8 chuc, int8
donvi, int8 phandonvi)
int8 chuc, donvi, phandonvi;
Trang 37output_low(ONE_WIRE_PIN);
delay_us(2);
output_bit(ONE_WIRE_PIN, shift_right(&data, 1, 0));
delay_us(60);
output_float(ONE_WIRE_PIN);
delay_us(2);
} }
int onewire_read() {
int count, data;
for(count=0;count<8;++count) {
output_low(ONE_WIRE_PIN); delay_us(2);
output_float(ONE_WIRE_PIN); delay_us(8);
shift_right(&data, 1, input(ONE_WIRE_PIN));
delay_us(120);
} return data;
}
#endif /*ONE_WIRE_C*/
Trang 39KẾT QUẢ THỰC TẾ
• Video
Trang 40CẢM ƠN THẦY VÀ CÁC BẠN
ĐÃ LẮNG NGHE