大約71%的地球被水覆蓋,但可悲的是,只有2.5%是飲用水。隨著人口、污染和氣候變化的增加,預(yù)計到2025年,我們將經(jīng)歷長期的水資源短缺。一方面,民族和國家之間已經(jīng)存在分享河水的小爭議,另一方面,由于我們的疏忽,我們作為人類浪費了大量的飲用水。
它第一次可能看起來不大,但是如果你的水龍頭每秒滴一滴水,你只需要大約五個小時就可以浪費一加侖水,這足以讓普通人生存兩天。那么可以做些什么來阻止這種情況呢?與往常一樣,答案在于技術(shù)的改進。如果我們將所有手動水龍頭替換為一個自動打開和關(guān)閉的智能水龍頭,我們不僅可以節(jié)約用水,還可以擁有更健康的生活方式,因為我們不必用臟手操作水龍頭。因此,在這個項目中,我們將使用Arduino構(gòu)建一個自動飲水機和一個電磁閥,當玻璃杯靠近它時,它可以自動給你水。聽起來很酷吧!所以讓我們建立一個...
所需材料
電磁閥
Arduino Uno (任何版本)
IRF540 場效應(yīng)管
1k 和 10k 電阻器
面包板
連接線
工作理念
自動飲水機背后的概念非常簡單。我們將使用HCSR04 超聲波傳感器來檢查是否有任何物體,使得玻璃被放置在分配器之前。電磁閥將用于控制水的流動,即通電時水將流出,當斷電時,水將停止。因此,我們將編寫一個Arduino程序,該程序始終檢查水龍頭附近是否放置了任何物體,如果是,則電磁閥將打開并等待直到對象被移除,一旦物體被移除,電磁閥將自動關(guān)閉,從而關(guān)閉供水。
電路圖
基于 Arduino 的飲水機的完整電路圖如下所示
本項目使用的電磁閥為12V閥,最大額定電流為1.2A,連續(xù)額定電流為700mA。也就是說,當閥門打開時,它將消耗大約 700mA 來保持閥門打開。眾所周知,Arduino 是一種以 5V 工作的開發(fā)板,因此我們需要一個開關(guān)驅(qū)動器電路來打開和關(guān)閉電磁閥。
本項目中使用的開關(guān)器件是IRF540N N 溝道 MOSFET。它分別具有引腳 1 的 3 個引腳門、源極和漏極。如電路圖所示,螺線管的正極端子由Arduino的Vin引腳供電。因為我們將使用 12V 適配器為 Arduino 供電,因此 VIN 引腳將輸出 12V,可用于控制電磁閥。電磁閥的負極端子通過 MOSFET 的源極和漏極引腳接地。因此,只有當 MOSFET 導通時,電磁閥才會通電。
MOSFET 的柵極引腳用于打開或關(guān)閉它。如果柵極引腳接地,它將保持關(guān)閉狀態(tài),如果施加柵極電壓,它將接通。為了在柵極引腳未施加電壓時保持 MOSFET 關(guān)斷,柵極引腳通過一個 10k 電阻器拉至地。Arduino引腳12用于打開或關(guān)閉MOSFET,因此D12引腳通過1K電阻連接到柵極引腳。該 1K 電阻器用于限流目的。
超聲波傳感器由Arduino的+5V和接地引腳供電?;芈暫陀|發(fā)引腳分別連接到引腳 8 和引腳 9。然后,我們可以對Arduino進行編程,以使用超聲波傳感器來測量距離,并在檢測到物體時打開MOSFET。整個電路很簡單,因此可以很容易地構(gòu)建在面包板的頂部。建立連接后,我的在下面看起來像這樣。
對 Arduino 板進行編程
對于這個項目,我們必須編寫一個程序,該程序使用 HCSR-04 超聲波傳感器來測量它前面物體的距離。當距離小于10cm時,我們必須打開MOSFET,否則我們必須關(guān)閉MOSFET。我們還將使用連接到引腳 13 的板載 LED,并將其與 MOSFET 一起切換,以便確保 MOSFET 是處于導通還是關(guān)斷狀態(tài)。本頁末尾給出了執(zhí)行相同操作的完整程序。在下面,我通過將程序分解為有意義的小片段來解釋該程序。
程序從宏定義開始。我們有超聲波傳感器的觸發(fā)和回波引腳,MOSFET柵極引腳和LED作為Arduino的I / O。因此,我們已經(jīng)定義了這些將連接到哪個引腳。在我們的硬件中,我們已將回聲和觸發(fā)引腳連接到 8 和 9千分別是數(shù)字引腳。然后,MOSFET 引腳連接到引腳 12,板載 LED 默認連接到引腳 13。我們使用以下行定義相同
#define trigger 9
#define echo 8
#define LED 13
#define MOSFET 12
在設(shè)置函數(shù)中,我們聲明哪些引腳是輸入的,哪些是輸出的。在我們的硬件中,只有超聲波(US)傳感器的回波引腳是輸入引腳,其余都是輸出引腳。所以我們使用 Arduino 的 pinMode 函數(shù)來指定如下所示的相同內(nèi)容
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(LED,OUTPUT);
pinMode(MOSFET,OUTPUT);
在主循環(huán)函數(shù)中,我們調(diào)用名為 measure_distance() 的函數(shù)。此函數(shù)使用美國傳感器測量其前方物體的距離,并將值更新為變量“距離”。要使用美國傳感器測量距離,觸發(fā)引腳必須首先保持低電平兩微秒,然后保持高電平十微秒,然后再次保持低電平兩微秒。這將向空氣中發(fā)送超聲波信號的聲波,這些信號將被它前面的物體反射,回聲引腳將拾取它反射的信號。然后,我們使用所用時間值來計算傳感器前方物體的距離。
digitalWrite(trigger,LOW);delayMicroseconds(2);digitalWrite(trigger,HIGH);delayMicroseconds(10);digitalWrite(trigger,LOW);delayMicroseconds(2);time=pulseIn(echo,HIGH);distance=time*340/20000;
計算距離后,我們必須使用簡單的if語句比較距離值,如果該值小于10cm,則使MOSFET和LED變高,在下面的其他語句中,我們使MOSFET和LED變低。執(zhí)行相同操作的程序如下所示。
if(distance<10)
{
digitalWrite(LED,HIGH);digitalWrite(MOSFET,HIGH);
}
else
{
digitalWrite(LED,LOW);digitalWrite(MOSFET,LOW);
}
自動飲水機的工作原理
按照電路中所示進行連接,并將以下給定的程序上傳到Arduino板中。進行一些簡單的安排,將電磁閥連接到進水口,并使用 12V 適配器為 Arduino 板的直流插孔為電路供電。確保板載 LED 已關(guān)閉,這可確保電磁閥也熄滅。我為演示該項目所做的設(shè)置如下所示
如您所見,我將超聲波傳感器直接放置在電磁閥下方,這樣當玻璃/滾筒放置在電磁閥下方時,它與超聲波傳感器直接相對。該物體將由超聲波傳感器感應(yīng),MOSFET 和 LED 將打開,從而使電磁閥打開,水向動。
同樣,當玻璃被移除時,超聲波傳感器告訴Arduino前面沒有玻璃,因此Arduino關(guān)閉閥門。該項目的完整工作可以在下面的視頻中找到。如果您對使其工作有任何疑問,請將其發(fā)布在評論部分或使用論壇尋求技術(shù)幫助。
警告:不同的電磁閥具有不同的工作電壓和電流額定值,請確保您的電磁閥在 12V 下工作并且最大消耗不超過 1.5A。
#define trigger 9
#define echo 8
#define LED 13
#define MOSFET 12
float time=0,distance=0;
void setup()
{
Serial.begin(9600);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(LED,OUTPUT);
pinMode(MOSFET,OUTPUT);
delay(2000);
}
void loop()
{
measure_distance();
if(distance<10)
{
digitalWrite(LED,HIGH);digitalWrite(MOSFET,HIGH);
}
else
{
digitalWrite(LED,LOW);digitalWrite(MOSFET,LOW);
}
delay(500);
}
void measure_distance()
{
digitalWrite(trigger,LOW);
delayMicroseconds(2);
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
delayMicroseconds(2);
time=pulseIn(echo,HIGH);
distance=time*340/20000;
}
-
電磁閥
+關(guān)注
關(guān)注
14文章
510瀏覽量
31407 -
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
187106
發(fā)布評論請先 登錄
相關(guān)推薦
評論