對于液體,濁度是一個重要術語。因為它在液體動力學中起著重要的作用,也用于測量 水質。所以在本教程中,讓我們討論什么是濁度,如何使用 Arduino 測量液體的濁度。
什么是液體濁度?
濁度是液體渾濁或渾濁的程度或水平。這是由于存在大量類似于空氣中的白煙的不可見顆粒(用肉眼)。當光穿過液體時,由于這些微小顆粒的存在,光波會被散射。液體的濁度與游離懸浮顆粒成正比,即如果顆粒數量增加,濁度也會增加。
如何使用 Arduino 測量濁度?
正如我前面提到的,濁度是由于光波的散射而發生的,為了測量濁度,我們應該測量光的散射。濁度通常以比濁法濁度單位 (NTU)或杰克遜濁度單位 (JTLJ) 進行測量,具體取決于用于測量的方法。兩個單位大致相等。
現在讓我們看看濁度傳感器是如何工作的,它有兩個部分, 發射器和接收器。發射器由一個光源(通常是一個 LED)和一個驅動電路組成。在接收端,有一個光檢測器,如光電二極管或 LDR。我們將解決方案置于發射器和接收器之間。
發射器只是傳輸光,光波穿過溶液,接收器接收光。通常(不存在溶液)透射光在接收器側完全接收。但是在存在混濁溶液的情況下,透射光的量非常低。也就是說,在接收端,我們只得到低強度的光,而這種強度與濁度成反比。因此,我們可以通過測量光強來測量濁度,如果光強高,則溶液濁度較低,如果光強非常低,則意味著溶液更混濁。
制作濁度計所需的組件
濁度模塊
阿杜諾
16*2 I2C液晶屏
共陰極RGB LED
面包板
跳線
濁度傳感器概述
本項目中使用的濁度傳感器如下圖所示。
如您所見,此濁度傳感器模塊包含 3 個部分。防水引線、驅動電路、連接線。測試探頭由發射器和接收器組成。
上圖顯示,這種模塊使用紅外二極管作為光源,紅外接收器作為檢測器。但工作原理和以前一樣。驅動器部分(如下所示)由一個運算放大器和一些放大檢測到的光信號的組件組成。
實際傳感器可以使用 JST XH 連接器連接到該模塊。它具有三個引腳,VCC、地和輸出。Vcc 連接到 5v 并接地。該模塊的輸出是一個模擬值,它根據光強度而變化。
濁度模塊的主要特點
工作電壓:5VDC。
電流:30mA(最大)。
工作溫度:-30°C 至 80°C。
兼容 Arduino、Raspberry Pi、AVR、PIC 等。
將濁度傳感器與 Arduino 接口 - 電路圖
將濁度傳感器連接到 Arduino 的完整示意圖如下所示,該電路是使用 EasyEDA 設計的。
這是一個非常簡單的電路圖。濁度傳感器的輸出是模擬的,因此連接到 Arduino 的 A0 引腳,I2C LCD 連接到 Arduino 的 I2C 引腳,即 SCL 到 A5,SDA 到 A4。然后將 RGB LED 連接到數字引腳 D2、D3 和 D4。連接完成后,我的硬件設置如下所示。
將傳感器的 VCC 連接到 Arduino 5v,然后將地線連接到地線。傳感器的輸出引腳到 Arduino 的模擬 0。接下來,將 LCD 模塊的 VCC 和地連接到 Arduino 的 5v 和地。然后SDA轉A4,SCL轉A5,這兩個管腳就是Arduino的I2C管腳。最后將RGB LED的地連接到Arduino的地,并將綠色連接到D3,藍色連接到D4,紅色連接到D5。
編程 Arduino 以測量水中的濁度
計劃是顯示從 0 到 100 的濁度值。即儀表應顯示 0 表示純液體,100 表示高度混濁的液體。這個Arduino代碼也很簡單,完整的代碼可以在這個頁面的底部找到。
首先,我包含了 I2C 液晶庫,因為我們使用 I2C LCD 來最小化連接。
#包括
然后我為傳感器輸入設置整數。
int sensorPin = A0;
在設置部分,我定義了引腳。
pinMode(3,輸出); pinMode(4,輸出); pinMode(5,輸出);
在循環部分,正如我之前提到的,傳感器的輸出是模擬值。所以我們需要讀取這些值。借助 ArduinoAnalogRead函數,我們可以讀取循環部分的輸出值。
int sensorValue =analogRead(sensorPin);
首先,我們需要了解傳感器的行為,這意味著我們需要讀取濁度傳感器的最小值和最大值。我們可以使用serial.println函數在串行監視器上讀取該值。
要獲得這些值,首先,自由讀取沒有任何解決方案的傳感器。我得到一個大約 640 的值,然后在發射器和接收器之間放置一個黑色物質,我們得到一個最小值,通常該值為零。所以我們得到了 640 的最大值和 0 的最小值。現在我們需要將這些值轉換為 0-100
為此,我使用了Arduino 的地圖功能。
int 濁度 = map(sensorValue, 0,640, 100, 0);
然后我在 LCD 顯示屏上顯示了這些值。
lcd.setCursor(0, 0); lcd.print("濁度:"); lcd.print(""); lcd.setCursor(10, 0); lcd.print(濁度);
之后,借助if條件,我給出了不同的條件。
if (濁度 < 20) { digitalWrite(2, HIGH); 數字寫入(3,低); 數字寫入(4,低); lcd.setCursor(0, 1); lcd.print("它的清除"); }
如果濁度值低于 20,這將激活綠色 LED 并在 LCD 上顯示“其清晰”。
if ((濁度 > 20) && (濁度 < 50)) { digitalWrite(2, LOW); 數字寫入(3,高); 數字寫入(4,低); lcd.setCursor(0, 1); lcd.print("它的陰天"); }
如果濁度值在 20 到 50 之間,這將激活藍色 LED 并在 LCD 上顯示“渾濁”。
if ((濁度 > 50) { digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); lcd.setCursor(0, 1); lcd.print("它的臟"); }
如果濁度值大于 50,這將激活紅色 LED 并在 LCD 上顯示“它很臟”,如下所示。
只需按照電路圖并上傳代碼,如果一切正常,您應該可以測量水的濁度,并且 LCD 應該會顯示水的質量,如上圖所示。
#include
LiquidCrystal_I2C lcd(0x27, 2, 16);
int sensorPin = A0;
無效設置()
{
序列號.開始(9600);
液晶顯示器開始();
pinMode(2,輸出);
pinMode(3,輸出);
pinMode(4,輸出);
}
無效循環(){
int sensorValue = 模擬讀取(sensorPin);
Serial.println(sensorValue);
int 濁度 = map(sensorValue, 0, 750, 100, 0);
延遲(100);
lcd.setCursor(0, 0);
lcd.print("濁度:");
lcd.print("");
lcd.setCursor(10, 0);
lcd.print(濁度);
延遲(100);
如果(濁度 < 20){
數字寫入(2,高);
數字寫入(3,低);
數字寫入(4,低);
lcd.setCursor(0, 1);
lcd.print("它的清除");
}
if ((濁度 > 20) && (濁度 < 50)) {
數字寫入(2,低);
數字寫入(3,高);
數字寫入(4,低);
lcd.setCursor(0, 1);
lcd.print("它的陰天");
}
如果(濁度 > 50){
數字寫入(2,低);
數字寫入(3,低);
數字寫入(4,高);
lcd.setCursor(0, 1);
lcd.print("它的臟");
}
}
-
測試測量
+關注
關注
25文章
892瀏覽量
90613 -
濁度傳感器
+關注
關注
0文章
31瀏覽量
10167 -
Arduino
+關注
關注
188文章
6469瀏覽量
187075
發布評論請先 登錄
相關推薦
評論