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

Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
18 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

ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino.

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

Thư viện ST7565 trên Arduino Create - Thử nghiệm đầu tiên: Hoàn hảo!

Mình rất tự hào và hãnh diện, khi thư viện made in Việt Nam đầu tiên của Thái Sơn (Nick Chung) được mình tải lên tại Arduino Create với mục đích thử nghiệm việc biên dịch code online trên Arduino Create đã hoàn thành công việc của nó ngay trong lần thử đầu tiên. Qua bài viết này, mình xin hướng dẫn các bạn lập trình Arduino với Arduino Create thông qua việc làm một ví dụ mẫu về việc cài thư viện và sử dụng nó trên Arduino Create.

lên
7 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Hướng tiếp cận với Raspberry Pi bằng python - Cài đặt thư viện và thử hiệu ứng nhấp nháy 1 đèn LED

Hôm nay chúng ta sẽ tìm cách nói chuyện với Raspberry Pi bằng ngôn ngữ Python. Thay vì sử dụng ngôn ngữ khác như C++ và NodeJS, sử dụng Python trên Raspberry Pi là một điều cực kỳ tuyệt vời. Bởi vì, python là một ngôn ngữ rất dễ học. Mình cũng đang tự học python và vọc raspberry pi, vì vậy, mình sẽ giúp các bạn khám phá nó. Nào, cùng đi với mình thôi.

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

Software Serial - Giao tiếp giữa Arduino và nhiều mạch Serial khác - Truyền tải trung gian giữa một mạch khác qua giao tiếp Serial

Có thể nói Serial là một trong những phương thức giao tiếp đơn giản nhất trong môi trường Serial. Vì bạn chỉ cần 2 dây và cách thức truyền dữ liệu của nó lại giống hệt stream trong các ngôn ngữ lập trình. Nhưng thật đáng tiết, con Arduino Uno chỉ có duy nhất một cổng Serial được phần cứng hỗ trợ sẵn (Mega thì 3). Vì vậy, nếu bạn muốn giao tiếp với nhiều module Serial thì đó là một chuyện không thể. Và đó chính là lý do vì sao thư viện Software Serial ra đời. Hôm nay, chúng ta sẽ tìm cách giao tiếp giữa 2 mạch Arduino thông qua Serial và một ví dụ về chuyển tiếp giá trị của một module giao tiếp qua Serial với thư viện này.

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