arduino 連接ds18b20


下載類庫

  1. OneWire releases -- v2.3.5
  2. Arduino-Temperature-Control-Library releases --v3.8.0

我的做法是將下載的壓縮包解壓,然后將文件放入到項目的目錄下,我的ardunio 項目里的文件層級是:

- 37-temp-18b20.ino
- DallasTemperature.cpp
- DallasTemperature.h
- OneWire.cpp
- OneWire.h
- util
-- OneWire_direct_gpio.h
-- OneWire_direct_regtype.h

接線

我使用的是 37 in 1 Sensors Kit for Arduino里面的 TEMP 18B20 模塊,三個引腳上面標識: GRY

G -> 地線,R -> 電源5V,Y -> 2數據庫

使用

修改DallasTemperature.h 22行的 #include <OneWire.h>#include "OneWire.h"

//#include <Arduino.h>
//#include "OneWire.h"
#include "DallasTemperature.h"
//G -> GND, R -> VCC,Y -> 2
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
void setup()
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  // Start up the library
  sensors.begin();
}
void loop()
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("開始獲取溫度...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("獲取完成");
  
  Serial.print("設備1(索引 0),溫度是: ");
  Serial.println(sensors.getTempCByIndex(0));
  delay(1000);
}

//Steinhart-Hart Thermistor 方程的應用
#include <math.h>
double Thermister(int RawADC) {
 double Temp;
 Temp = log(((10240000/RawADC) - 10000));
 Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
 Temp = Temp - 273.15; // Convert Kelvin to Celcius
 return Temp;
}

References

  1. 在Arduino中使用DS18B20溫度傳感器(基於OneWire和DallasTemperature庫)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM