DS18B20 là một sản phẩm của công ty MAXIM, đây cũng là công ty đóng góp nhiều vào việc cho ra đời bus một dây và các cảm biến một dây. Hình dạng bên ngoài của cảm biến một dây DS18B20 được mô tả trên hình trong đó dạng vỏ TO-92 với 3 chân là dạng thường gặp và được dùng trong nhiều ứng dụng, còn dạng vỏ SOIC với 8 chân được dùng để đo nhiệt độ bề mặt, kể cả da người.
Đặc trưng
- Các đặc điểm kỹ thuật của cảm biến DS18B20 có thể kể ra một cách tóm tắt như sau:
- Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông.
- Độ phân giải khi đo nhiệt độ từ 9 bit tới 12bit. Dải đo nhiệt độ -55°C đến 125°C, từng bậc 0.5°C, có thể đạt độ chính xác đến 0.1°C bằng việc hiệu chỉnh qua phần mềm.
- Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu đo có thể được nối trên một bus, bus này được gọi là bus một dây (1-wire).
- Không cần thêm linh kiện bên ngoài.
- Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng, từ 3.0 V đến 5.5 V DC và có thể được cấp thông qua đường dẫn dữ liệu.
- Dòng tiêu thụ tại chế độ nghỉ cực nhỏ.
- Thời gian lấy mẫu và biến đổi ra digital 12 bit không lớn quá 750ms.
- Mỗi cảm biến có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.
Tổng quan về DS18B20
Đầu đo nhiệt độ số DS18B20 đưa ra số liệu để biểu thị nhiệt độ đo được dưới dạng mã nhị phân 12 bit. Các thông tin được gửi đến và nhận về từ DS18B20 trên giao diện 1-wire, do đó chỉ cần hai đường dẫn gồm một đường cho tín hiệu và một đường làm dây GND là đủ để kết nối vi điều khiển đến điểm đo. Nguồn nuôi cho các thao tác ghi/đọc/chuyển đổi có thể được trích từ đường tín hiệu, không cần có thêm đường dây riêng để cấp điện áp nguồn.
Mỗi vi mạch đo nhiệt độ DS18B20 có một mã số định danh duy nhất, được khắc bằng laser trong quá trình chế tạo vi mạch nên nhiều vi mạch DS18B20 có thể cùng kết nối vào một bus 1-wire mà không có sự nhầm lẫn.
Đặc điểm này làm cho việc lắp đặt nhiều cảm biến nhiệt độ tại nhiều vị trí khác nhau trở nên dễ dàng và với chi phí thấp. Số lượng các cảm biến nối vào bus không hạn chế.
Mỗi cảm biến nhiệt độ DS18B20 có một dãy mã 64 bit duy nhất được lưu trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật laze. Ý nghĩa của 64 bit mã được giải thích trên hình:
Như vậy dãy mã được chia ra thành 3 nhóm, trong đó:
- Tám bit đầu tiên là mã định danh họ một dây, mã của DS18B20 là 28h.
- 48 bit tiếp theo là mã số xuất xưởng duy nhất, nghĩa là mỗi cảm biến DS1820 chỉ có một số mã.
- Tám bit có ý nghĩa nhất là byte mã kiểm tra CRC (cyclic redundancy check), byte này được tính toán từ 56 bit đầu tiên của dãy mã trên ROM
Để truy cập lên cảm biến một dây DS18B20 ta phải sử dụng hai nhóm lệnh: các lệnh ROM và các lệnh chức năng (function commands) bộ nhớ. Các bạn có thể xem DataSheet để hiểu rõ hơn 2 nhóm lệnh này nhé.
Phương thức giao tiếp
Việc đo nhiệt độ của DS18B20 được thực hiện theo từng lần lấy mẫu. Mỗi lần lấy mẫu được ngăn cách bởi 1 tín hiệu reset và 1 presence pulse. Reset được xem như quá trình ngăn cách và khởi động lại quá trình đo nhiệt độ mới, presence pulse giống như tín hiệu báo hiệu cho VDK biết là DS18B20 đang có mặt.
Các bước của 1 lần lấy mẫu:
- Khởi tạo xung reset và nhận tín hiệu hiện diện từ DS18B20.
- Gửi các lệnh ROM.
- Gửi các lệnh chức năng bộ nhớ.
Các bạn đọc thêm trong datasheet nhé
Lập trình Arduino đọc nhiệt độ cho cảm biến DS18B20
Để đọc nhiệt độ từ cảm biến DS18B20, chúng ta cần sử dụng các thư viện hỗ trợ sau:
- Thư viện OneWire.h
- Thư viện DallasTemperature.h
Sơ đồ kết nối chân với Arduino
DS18B20 | Arduino Uno |
GND (1) | GND |
DATA (2) | D2 |
VDD (3) | 5V |
Không có nhận xét nào:
Đăng nhận xét