有時,我們需要在項目中添加一個溫度指示器。因此,在本篇文章中,您將學習如何使用Arduino和DS18B20溫度傳感器制作一款模擬溫度計。
DS18B20模塊
首先,Maxim DS18B20數字溫度計提供9位至12位攝氏溫度測量,并具有報警功能以及非易失性用戶可編程的上下觸發點。同樣,DS18B20通過1-Wire總線進行通信,根據定義,該總線僅需要一條數據線(和地線)即可與中央微處理器進行通信。此外,DS18B20可以直接從數據線獲取電源(“寄生電源”),而無需外部電源。
實際上,每個DS18B20都有一個唯一的64位串行代碼,它允許多個DS18B20在同一1-Wire總線上工作。因此,使用一個微處理器控制分布在大面積上的許多DS18B20很簡單。
所需的零件
● Arduino Uno開發板
● DS18B20傳感器
● 模擬電壓表
電路
幸運的是,電路是如此簡單。首先,將帶有(-)符號的DS18b20引腳連接到Arduino GND,將帶有(+)符號的引腳連接到5V,將信號引腳連接到數字引腳2,以開始感測溫度。我們將電壓表的正極連接到數字引腳9(PWM引腳之一),將負極連接到GND。然后,要將電壓表的標簽更改為攝氏溫度計,只需下載附件中的照片并打印出來即可!
脈沖寬度調制
簡而言之,脈寬調制或PWM是一種通過數字方式獲得模擬結果的技術。因此,我們可以發送一個脈沖,而不是向PWM中的數字引腳寫入高電平。因此,Arduino UNO的一些數字引腳支持PWM,您可以通過旁邊打印的信號(?)識別它們。
代碼
首先,您需要在Arduino IDE中添加“DallasTemperature”庫,因為該庫支持Maxim溫度IC,包括我們的DS18B20。該代碼包含三個主要方面:從傳感器讀取溫度、將溫度轉換為一個PWM值以及在溫度計上顯示該值
首先,在setup函數中,我們將從傳感器讀取溫度。然后,將其傳遞給PWM函數,以將獲取的值轉換為0到255范圍內的PWM值。這可以在函數內部借助“map”函數來完成。接下來,我們將其寫入引腳9,以顯示在電壓表上。
不過,您可以指定自己喜歡的最低和最高溫度度,但您應該注意:這兩個值之間的差距越小,溫度計的分辨率就越高。讓我們看一下代碼:
//Written by Nick Koumaris
//info@educ8s.tv
//educ8s.tv
#include
#include
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int MIN_TEMP = 16;
int MAX_TEMP = 28;
void setup() {
pinMode(9,OUTPUT);
Serial.begin(9600);
sensors.begin();
}
void loop() {
float temperature = getTemperature();
int voltage = temperatureToPWM(temperature);
analogWrite(9,voltage);
delay(500);
}
float getTemperature()
{
float temperature =0;
sensors.requestTemperatures(); // Send the command to get temperatures
temperature = sensors.getTempCByIndex(0);
Serial.println(temperature);
return temperature;
}
int temperatureToPWM(float temperature)
{
float temp=0;
float voltage = 0;
temp = temperature*10;
voltage = map(temp,MIN_TEMP*10,MAX_TEMP*10,0,250);
return voltage;
}
編輯:hfy
-
溫度傳感器
+關注
關注
48文章
2940瀏覽量
156025 -
DS18B20
+關注
關注
10文章
779瀏覽量
80825 -
溫度計
+關注
關注
6文章
404瀏覽量
78465 -
Arduino
+關注
關注
188文章
6469瀏覽量
186958 -
溫度指示器
+關注
關注
0文章
5瀏覽量
1608
發布評論請先 登錄
相關推薦
評論