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