Shield cảm biến nhiệt độ DS18B20 cho Lua D1 Mini

Mã sản phẩm: (Đang cập nhật...)
Thương hiệu: cập nhật
Còn hàng
Liên hệ

Shield cảm biến nhiệt độ DS18B20 cho Lua D1 Mini Nhiệt độ đo: 55°C đến + 125°C  (67°F đến + 257°F). Độ phân giải nhiệt kế có thể được người dùng lựa chọn từ 9 đến 12 bit

Freeship đơn hàng từ 500k

Kiểm tra khi nhận hàng

Hỗ trợ khách hàng 24/7

Shield cảm biến nhiệt độ DS18B20 cho Lua D1 Mini có thể được cung cấp từ dòng dữ liệu, phạm vi cung cấp điện là 3.0V đến 5.5V. Chuyển đổi nhiệt độ thành kỹ thuật số 12 bit trong 750ms (tối đa).

THÔNG SỐ SHIELD CẢM BIẾN NHIỆT ĐỘ DS18B20

  • Nhiệt độ đo: 55°C đến + 125°C  (67°F đến + 257°F).
  • Độ chính xác ± 0,5°C từ 10°C đến + 85°C.
  • Mỗi thiết bị có một mã nối tiếp 64 bit duy nhất được lưu trữ trong ROM trên bo mạch.
  • Khả năng đa hướng đơn giản hóa các ứng dụng cảm biến nhiệt độ phân tán.
  • Không yêu cầu thành phần bên ngoài.
  • Độ phân giải nhiệt kế có thể được người dùng lựa chọn từ 9 đến 12 bit.
  • Lệnh tìm kiếm báo động xác định và xử lý các thiết bị có nhiệt độ nằm ngoài giới hạn được lập trình (điều kiện cảnh báo nhiệt độ).

ỨNG DỤNG

  • Điều khiển nhiệt, hệ thống công nghiệp, sản phẩm tiêu dùng, nhiệt kế hoặc bất kỳ hệ thống nhạy cảm nhiệt nào.
  • Cài đặt báo động nhiệt độ

Kết nối với D1 Mini Pro:


#include <OneWire.h>
OneWire  ds(D2);  // on pin D4 (a 4.7K resistor is necessary)
 
void setup(void) 
{
  Serial.begin(9600);
}
 
void loop(void) 
{
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
 
  if ( !ds.search(addr)) 
  {
    ds.reset_search();
    delay(250);
    return;
  }
 
  if (OneWire::crc8(addr, 7) != addr[7]) 
  {
      Serial.println("CRC is not valid!");
      return;
  }
 
  
  switch (addr[0]) 
  {
    case 0x10:
      type_s = 1;
      break;
    case 0x28:
      type_s = 0;
      break;
    case 0x22:
      type_s = 0;
      break;
    default:
      Serial.println("Thiết bị không phải là DS18x20.");
      return;
  } 
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        
  delay(1000);
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         
  for ( i = 0; i < 9; i++) 
  {           
    data[i] = ds.read();
  }
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) 
    {
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } 
  else 
  {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Nhiệt độ = ");
  Serial.print(celsius);
  Serial.print(" *C, ");
  Serial.print(fahrenheit);
  Serial.println(" F");
}
Xem thêm Thu gọn

Xin mời nhập nội dung tại đây