17 C
Hanoi
Thứ Sáu, Tháng Mười Hai 3, 2021
Home LẬP TRÌNH VI ĐIỀU KHIỂN ARDUINO Giao tiếp nhiều cảm biến nhiệt độ DS18B20

[Arduino]Giao tiếp nhiều cảm biến nhiệt độ DS18B20

Giới thiệu về DS18B20

Cảm biến nhiệt độ DS18B20 IC đo nhiệt độ mới của hãng MAXIM với độ phân giải cao (12bit), cảm biến nhiệt độ IC sử dụng giao tiếp 1 dây rất gọn gàng, dễ lập trình và giao tiếp nhiều DS18B20 trên cùng 1 dây. IC còn có chức năng cảnh báo nhiệt độ khi vượt ngưỡng và đặc biệt hơn là có thể cấp nguồn từ chân data (parasite power).

Để đo được nhiệt độ ta cần thêm 1 điện trở 4.7k Ohm nối từ chân DQ lên VCC

THÔNG SỐ KỸ THUẬT

Nguồn: 3 – 5.5V

Dải đo nhiệt độ: -55 – 125 độ C ( -67 – 257 độ F)

Sai số: +- 0.5 độ C khi đo ở dải -10 – 85 độ C

Độ phân giải: người dùng có thể chọn từ 9 – 12 bits

Chuẩn giao tiếp: 1-Wire (1 dây).

Có cảnh báo nhiệt khi vượt ngưỡng cho phép và cấp nguồn từ chân data.

Thời gian chuyển đổi nhiệt độ tối đa: 750ms ( khi chọn độ phân giải 12bit ).

Mỗi IC có một mã riêng (lưu trên EEPROM của IC), DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn 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 với các IC này.

Code lập trình nhiều cảm biến trên một dây

#include <OneWire.h> 
#include <DallasTemperature.h>  

OneWire oneWire(DS18B20_PIN);          
DallasTemperature sensors(&oneWire);  

void setup() {
	Serial.begin(9600);
	Serial.println("Do nhieu cam bien nhiet do DS18B20");
  
	sensors.begin();  // DS18B20 start
	Serial.print("Sensor: "); 

}
void loop(){
	sensors.requestTemperatures();
	for(byte i=0;i<sensors.getDeviceCount();i++)
	{	
		show_temperature(i+1,sensors.getTempCByIndex(i));  
	}
  delay(2000);

}
void show_temperature(byte num,float temp){
  
  Serial.print("Sensor ");
  Serial.print(num);
  Serial.print(": ");
  Serial.print(temp);
  Serial.print(" "); 
  Serial.write(176);  // um das °-Zeichen korrekt darzustellen
  Serial.println("C");

Code khác:

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into digital pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);	

// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);

int deviceCount = 0;
float tempC;

void setup(void)
{
  sensors.begin();	// Start up the library
  Serial.begin(9600);
  
  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  deviceCount = sensors.getDeviceCount();
  Serial.print(deviceCount, DEC);
  Serial.println(" devices.");
  Serial.println("");
}

void loop(void)
{ 
  // Send command to all the sensors for temperature conversion
  sensors.requestTemperatures(); 
  
  // Display temperature from each sensor
  for (int i = 0;  i < deviceCount;  i++)
  {
    Serial.print("Sensor ");
    Serial.print(i+1);
    Serial.print(" : ");
    tempC = sensors.getTempCByIndex(i);
    Serial.print(tempC);
    Serial.print((char)176);//shows degrees character
    Serial.print("C  |  ");
    Serial.print(DallasTemperature::toFahrenheit(tempC));
    Serial.print((char)176);//shows degrees character
    Serial.println("F");
  }
  
  Serial.println("");
  delay(1000);
}
//Nguồn: https://lastminuteengineers.com/

2 COMMENTS

  1. I do not know if it’s just me or if perhaps everybody else encountering problems with
    your blog. It appears as if some of the text on your posts
    are running off the screen. Can someone else please
    comment and let me know if this is happening to them as well?
    This may be a problem with my internet browser because I’ve had
    this happen previously. Kudos

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Tắt kính lúp hình vuông trong Altium

Tắt kính lúp của sổ PCB  trên Altium Sử dụng phím tắt: Shift+M Tham khảo thêm một số phím tắt khác trên phần mềm Altium Designer: Thiết...

Tổng hợp trang web liên quan thiết kế phần cứng điện tử

4 trang web tải thư viện SCH/PCB và 3D https://www.ultralibrarian.com/ https://componentsearchengine.com/ https://octopart.com/ https://www.snapeda.com/ https://componentsearchengine.com/ 2 trang tìm 3D cho thư viện của các bạn bao gồm: https://www.3dcontentcentral.com/ https://grabcad.com/library 4 trang cung cấp các...

Mạch đóng ngắt Relay sử dụng Transistor

Giới thiệu về Relay Rơ le (Relay) là một công tắc chuyển đổi hoạt động bằng điện. Dòng điện chạy qua cuộn dây của rơ...

Nạp Bootloader cho Arduino Pro Micro

Bootloader là một chương trình nhỏ được nạp sẵn vào chip vi điều khiển trên Arduino, nhờ đó bạn lập trình cho Arduino một...

Recent Comments