這篇文章來(lái)源于DevicePlus.com英語(yǔ)網(wǎng)站的翻譯稿。
ARDUINO激光絆線
目的
本教程描述了如何使用Arduino Uno制作一個(gè)激光絆線。如果您不熟悉Arduino平臺(tái),請(qǐng)參閱“Arduino設(shè)置教程”。
概述
在本教程中,您將學(xué)習(xí)如何設(shè)置激光絆線傳感器,并在光束被阻斷時(shí)觸發(fā)執(zhí)行器,在此例中為點(diǎn)亮LED。您將學(xué)習(xí)如何使用if/else循環(huán)、激光二極管以及光敏電阻。
警告: 激光可能對(duì)眼睛有害,切勿直視激光束。
設(shè)備
Arduino Uno R3
“DOT”激光模
20件光敏電阻套
9V、1A電源適配器
跳線
USB電纜(A-to-B)
面包板
目錄
編寫(xiě)代碼
引腳定義
設(shè)置
循環(huán)
上傳并運(yùn)行程序
程序
1.1 電路設(shè)計(jì)
這個(gè)項(xiàng)目的電路設(shè)計(jì)相當(dāng)簡(jiǎn)單。電路分為三部分:激光電源、光敏電阻接收器(傳感器)和LED指示燈(執(zhí)行器)。一般來(lái)講,單片機(jī)通過(guò)傳感器接收來(lái)自外界的信息,并通過(guò)執(zhí)行器傳遞信息或執(zhí)行操作。我選擇使用LED指示燈作為我的執(zhí)行器,但是執(zhí)行器可以是警報(bào)、短信,甚至是門(mén)鎖。
我總是喜歡用Fritzing繪制原理圖(圖1:電路原理圖)。Fritzing是一款開(kāi)源原理圖設(shè)計(jì)和PCB布線軟件。這樣,將來(lái)可以作為參考。
圖1:電路原理圖
電路的第一部分是激光二極管的電源。您可以用5V引腳(紅色導(dǎo)線)為激光二極管供電。我希望能夠打開(kāi)/關(guān)閉激光器,但是Arduino上的數(shù)字輸出引腳無(wú)法為激光二極管提供足夠的功率。負(fù)極應(yīng)接地(黑色導(dǎo)線)。確保您的激光二極管不需要限流電阻。如果需要,請(qǐng)選擇適當(dāng)?shù)淖柚怠?/p>
接下來(lái)將創(chuàng)建我們的執(zhí)行器(LED指示燈)。執(zhí)行器的目的是告訴我們激光二極管光束已經(jīng)被阻斷。LED和電阻應(yīng)串聯(lián)在引腳9(淺藍(lán)色導(dǎo)線)和GND(黑色導(dǎo)線)之間。電阻的作用是限制流過(guò)LED的電流,并應(yīng)根據(jù)您的LED進(jìn)行相應(yīng)調(diào)整,以防止電流過(guò)大將LED燒壞。請(qǐng)記住,LED較長(zhǎng)的引線是正極,應(yīng)連接到引腳9。
最后,電路的最后一部分是光敏電阻(圖2:光敏電阻),即我們的傳感器。光敏電阻是一種電阻,其阻值會(huì)隨電阻面上的光線強(qiáng)度變化而變化。電阻的一個(gè)引線應(yīng)連至引腳7(淺藍(lán)色導(dǎo)線),另一個(gè)引線應(yīng)連至GND(黑色導(dǎo)線)。我使用的光敏電阻在光線照射時(shí)具有高電阻,而在沒(méi)有光線時(shí)具有低電阻。
圖2:光敏電阻
2.0 編寫(xiě)代碼
2.1 引腳定義
代碼的第一部分是定義引腳。這一步是可選操作,但是為了便于記憶和跟蹤,我為引腳添加了描述性名稱(chēng)。另外,如果我改變電路的連接方式,只需改變引腳定義即可,無(wú)需改變引用引腳編號(hào)的每一行代碼。
在我們的電路中,光敏電阻被定義為“引腳7”,LED被定義為“引腳9”。
圖3:引腳定義
2.2 設(shè)置
在代碼的設(shè)置部分,我將LED引腳配置為數(shù)字輸出。
圖4:設(shè)置代碼
我們還將光敏電阻配置為帶上拉電阻(INPUT_PULLUP)的數(shù)字輸入。我們正在創(chuàng)建的電路與下面的電路類(lèi)似,這是一種常用電氣電路。在這種情況下,上拉電阻和電壓源位于單片機(jī)(Arduino)內(nèi)部,“按鈕”則是我們的光敏電阻。當(dāng)激光二極管照射在光敏電阻上時(shí),它呈現(xiàn)高電阻,并且上拉電阻將輸入的電壓拉到數(shù)字高電平。當(dāng)光束被阻斷時(shí),光敏電阻的電阻下降,輸入電壓變?yōu)閿?shù)字低電平。
圖5:上拉電阻輸入電路
2.3 循環(huán)
對(duì)于重復(fù)循環(huán),我編寫(xiě)了一個(gè)連續(xù)查詢(xún)光敏電阻數(shù)字輸入的IF/ELSE語(yǔ)句。如果數(shù)字輸入為高電平,LED輸出關(guān)閉;否則LED輸出開(kāi)啟。
圖6:循環(huán)代碼
3.0 上傳并運(yùn)行程序
圖7:激光絆線的Arduino電路
將代碼上傳到Arduino。確保Arduino已經(jīng)連接9V電源適配器,因?yàn)閁SB電源不足以為Arduino和激光二極管同時(shí)供電。程序開(kāi)始后,激光二極管應(yīng)該輸出一束激光。如果光束照射在光敏電阻上,LED應(yīng)熄滅(圖8:激光絆線)。當(dāng)光束被阻斷時(shí),LED亮起,表明絆線已經(jīng)斷開(kāi)(圖9:絆線斷開(kāi))。
圖8:激光絆線
圖9:絆線斷開(kāi)
提示:如果您的LED沒(méi)有點(diǎn)亮,請(qǐng)使用萬(wàn)用表分別檢查激光照射到光敏電阻上時(shí)光敏電阻的阻值以及光束阻斷時(shí)光敏電阻的阻值。光照射到光敏電阻上時(shí),光敏電阻的阻值應(yīng)該在數(shù)千歐姆;沒(méi)有照射時(shí),阻值應(yīng)為幾百歐姆或更低。
附件:激光絆線代碼
/* Project: Laser Tripwire Tutorial * Written by: Chris Marella * Date: January 24, 2018 * Version: 1.0 * */ //Pin Definitions const int photo = 7; const int LED = 9; void setup() { //Pin Configurations //Outputs pinMode(LED, OUTPUT); digitalWrite(LED, LOW); //Inputs pinMode(photo, INPUT_PULLUP); } void loop() { //if/else loop checks if photoresistor is high or low if(digitalRead(photo)==HIGH){ digitalWrite(LED, HIGH); }else{ digitalWrite(LED, LOW); } }
DevicePlus 編輯團(tuán)隊(duì)
設(shè)備升級(jí)版適用于所有熱愛(ài)電子和機(jī)電一體化的人。
審核編輯黃宇
-
傳感器
+關(guān)注
關(guān)注
2550文章
51035瀏覽量
753083 -
激光
+關(guān)注
關(guān)注
19文章
3181瀏覽量
64449 -
Arduino
+關(guān)注
關(guān)注
188文章
6468瀏覽量
186957
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論