Hướng dẫn sử dụng cảm biến nhiệt độ DS18B20 (-55°C đến +125°C) sai số ±0.5°C

Lại quay về vấn đề đo nhiệt độ, như ở bài trước, mình đã dùng cả LM35, cả TMP36. Nhưng rốt cuộc vẫn không hiệu quả, lần này mình đang sử dụng con DS18B20 này và cảm thấy khá ổn hơn so với lần trước. Nhiệt độ ít bị chênh lệch hơn và như quảng cáo là chỉ có sai số ±0.5°C thôi (nếu nhiệt độ trong phạm vi -10°C to +85°C, đáng để thử phải không nào?

I. Giới thiệu

Về căn bản, con này cũng giống như com LM35 hay TMP36 mà mình đã từng dùng, các bạn có thể xem qua 2 con đó rồi đọc tiếp để chắc chắn có được kiến thức kế thừa. Tuy nhiên, không giống như 2 con kia là analog, con này thì lại dùng cơ chế truyền tín hiệu 1-Wire. Nôm na với cái chơ chế này, chúng ta có thể chơi (đọc) nhiều con DS18B20 cùng một lúc trên cùng 1 dây, đã thật phải không nào? Cùng điểm qua các đặc điểm đặc biệt của hắn nhé.

Đặc điểm nó nổi bật hơn 2 con kia:

  • Sử dụng một chân data với 64bit serial code cho phép chúng ta dùng nhiều con trên cùng 1 chân digial (cơ chế 1-Wire)
  • Có thể cấp nguồn từ 3 - 5.5V
  • Đo từ -55°C đến +125°C sai số ±0.5°C nếu đang trong khoản -10°C đến +85°C
  • Datasheet

II. Chuẩn bị

III. Nối mạch

IV. Chuẩn bị thư viện

Các bạn cài thư viện sau để sử dụng được cảm biến này:

//Include thư viện
#include <OneWire.h>
#include <DallasTemperature.h>

// Chân nối với Arduino
#define ONE_WIRE_BUS 2
//Thiết đặt thư viện onewire
OneWire oneWire(ONE_WIRE_BUS);
//Mình dùng thư viện DallasTemperature để đọc cho nhanh
DallasTemperature sensors(&oneWire);

void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
}

void loop(void)
{ 
  sensors.requestTemperatures();  
  Serial.print("Nhiet do");
  Serial.println(sensors.getTempCByIndex(0)); // vì 1 ic nên dùng 0
 
  //chờ 1 s rồi đọc để bạn kiệp thấy sự thay đổi
  delay(1000);
}

V. Vấn đề phát sinh

Mình thấy con này có thể kết hợp thành một chuỗi dài các con tương tự, nhưng mình không biết làm. Bạn nào đi trước, chỉ giúp mình với nhé :D

Bài viết truyền cảm hứng: 
lên
15 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Hướng dẫn sử dụng cảm biến dòng điện ACS712 với Arduino

Cảm biến dòng điện ACS712  là một IC cảm biến dòng tuyến tính dựa trên hiệu ứng Hall. ACS xuất ra 1 tín hiệu analog, Vout biến đổi tuyến tính theo sự thay đổi của dòng điện được lấy mẫu thứ cấp DC (hoặc AC), trong phạm vi đã cho. Tụ (Cf theo sơ đồ) được dùng với mục đích chống nhiễu và có giá trị tùy thuộc vào từng mục đích sử dụng.

lên
21 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Intel Edison là gì? Cùng bắt đầu với tôi nào.

Mới có cơ hội được vọc Intel Edison từ chị gái nên hôm nay mình tranh thủ viết bài review về nó để các bạn cùng có cái nhìn chung về board Intel Edison này. Tiếc là mình đang không có máy ảnh + điện thoại trong tay nên sẽ dùng ảnh trên mạng để trình bày nhé. Mình sẽ hướng dẫn các bạn bắt đầu với mạch này từ những bước đơn giản đầu tiên. Hy vọng qua bài viết này, newbie sẽ có cái nhìn toàn diện hơn với Intel Edison.

lên
15 thành viên đã đánh giá bài viết này hữu ích.