25 C
Hanoi
Chủ Nhật, Tháng Chín 25, 2022

THIẾT KẾ PHẦN CỨNG - NHẬN THIẾT KẾ ĐIỆN TỬ CHO SẢN PHẨM PHẦN CỨNG SỐ, IOT, CÔNG NGHIỆP,...

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/

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Chia sẻ PCB KIT ESP32

Mạch nguyên lý schemaic: Download toàn bộ project phần mềm Altium: DOWNLOAD Một vài hình ảnh thiết kế trên Altium:

Chia sẻ PCB Ethernet Gigabit Switch 5 Port

Mạch nguyên lý Schematic: DOWNLOAD ALTIUM PROJECT Một số hình ảnh 3D và 2D của mạch: Lớp TOP: Lớp 2: Lớp 3:Lớp Bottom:

Chia sẻ PCB mạch Hub USB2.0 dùng FE1.1S

DOWNLOAD PROJECT (ALTIUM) Mạch thiết kế trên phần mềm Altium, 2 lớp, dùng cho mục đích thử nghiệm.

Chia sẻ PCB nguồn công nghiệp VRB2405YMD-20WR3

Công suất đầu ra 20 Vin (VDC) 18~36 Vout (VDC) 5 Số đầu ra 1 Điện áp cách ly 1500     DOWNLOAD  

Recent Comments