當(dāng)前位置: 首頁 > 工業(yè)控制產(chǎn)品 > 自動化控制 > 工業(yè)觸摸屏
發(fā)布日期:2022-10-09 點擊率:49
顏色傳感器
顏色傳感器是一種數(shù)字傳感器,它可以檢測到進(jìn)入傳感器表面小窗口的顏色或光強(qiáng)度。該傳感器可用于三種模式:顏色模式、反射光強(qiáng)度模式和環(huán)境光強(qiáng)度模式。
在顏色模式中,顏色傳感器可識別七種顏色-黑色、藍(lán)色、綠色、黃色、白色和棕色,加上無顏色。傳感器區(qū)別不同顏色的能力意味著您可對機(jī)器人編程來分類彩色球或模塊,說出各種檢測到的顏色,或見到紅色即停止動作。
在反射光強(qiáng)度模式中,顏色傳感器測量從紅燈(即發(fā)光燈)反射回來的光強(qiáng)度。該傳感器測量范圍為0(極暗)到100(極亮)。這意味著您可對機(jī)器人編程,使其在一個白色表面上來回移動,直到檢測到一條黑線或解釋顏色編碼識別卡。
在環(huán)境光強(qiáng)度模式中,該顏色傳感器測量從周圍環(huán)境進(jìn)入到窗口的光強(qiáng)度,如太陽光或手電筒的光束。該傳感器測量范圍為0(極暗)到100(極亮)。這意味著您可對機(jī)器人編程來設(shè)定早間鬧鐘,或在燈滅時停止動作。
該顏色傳感器采樣速率為每秒 1 kHz。
當(dāng)處于“顏色模式”或“反射光強(qiáng)度模式”時,為求最精確,傳感器必須角度正確、靠近但不接觸到正在檢測的物體表面。
■顏色傳感器介紹part one
■顏色傳感器介紹part two
LEGO? MINDSTORMS? EV3 幫助:
原標(biāo)題:LEGO-樂高,也做傳感器!萌萌噠 請看...
談到樂高大家第一反應(yīng)跳出來
關(guān)鍵詞是什么?
塑料積木 益智玩具 丹麥曲奇~~~
★
這些貌似和傳感器八桿子打不著邊,小編也是最近在全能的淘寶偶爾意外發(fā)現(xiàn)的
(好吧 orz 雙十一剛過)
這些傳感器是配套他們家EV3機(jī)器人
★
樂高出品傳感器與控制器連接線目測rj11接頭的電話,給出的信號應(yīng)該是通訊協(xié)議。樂高傳感器輸出接口如此選擇?
傳感器為通訊所帶來的好處
● 信號穩(wěn)定不受干擾傳輸過程中無精度損失
● 方便診斷及時修復(fù)
● 接線方式統(tǒng)一布線簡單
● 能在線修改傳感器參數(shù)
萌萌的和硬硬的
要和傳統(tǒng)傳感器對比
買道傳感網(wǎng)|傳感新媒體:記錄傳感商圈真實發(fā)生的...
更多傳感器-新聞?wù)堅L問:News.51mydao.com
或可關(guān)注“買道傳感網(wǎng)”同名微信號返回搜狐,查看更多
責(zé)任編輯:
4.1簡介
馬達(dá)通過齒輪和滑輪傳動,可以讓你搭建的機(jī)器人動起來,他們就如同是移動機(jī)器人腿和手臂的肌肉。同時,你還可以使用傳感器來裝備你的機(jī)器人,它們就如同是機(jī)器人的眼睛、耳朵和手指。機(jī)器人套裝中包含兩種傳感器:觸動傳感器(兩種)和光電傳感器。在此主要是描述它們的特性,對于其它的傳感器可以單獨購買,如:角度傳感器和溫度傳感器。每一個設(shè)備都有其特定的作用,你將會因為它們的功能強(qiáng)大和所能涉及的范圍之廣而感到驚訝。當(dāng)然也包括這種情況,可以用一種傳感器仿效另一種傳感器,以用來代替不能使用的傳感器。利用RCX上的紅外光電,使用一些小技巧,你可以把把你的光電傳感器變成一個雷達(dá)。
4.2觸動傳感器
觸動傳感器(圖4.1)的工作方式非常像是你家門鈴上的按鈕:當(dāng)它被按下時,電路接通,電流就會通過,RCX就能夠檢測到這個數(shù)據(jù)流,你的程序就會讀取觸動傳感器的當(dāng)前狀態(tài):開或者關(guān)。
圖4.1 觸動傳感器
如果閱讀了Constructopedia,并搭建了一些模型,你可能對傳感器的一般用途比較熟悉,如緩沖器。緩沖器是與周圍環(huán)境相互作用的一種簡單方式,當(dāng)你的機(jī)器人遇到障礙物時,可以用它們來進(jìn)行檢測,并由此而改變運動狀態(tài)。
典型的緩沖器是一個重量較輕的可移動裝置,事實上,當(dāng)它碰到障礙物時會把沖擊力傳遞給觸動傳感器并使之關(guān)閉。你也可以發(fā)明出很多種緩沖器,但它們的外形應(yīng)該能夠反映機(jī)器人的外形,而且還能反映出環(huán)境中障礙物的外形。如圖4.2中所示一個非常簡單的緩沖器,可以很容易發(fā)現(xiàn)墻壁,假如房間里有像椅子一樣等復(fù)雜障礙物,它的效果就不好了。在這種情況下,我們建議你通過實驗來進(jìn)行。為機(jī)器人設(shè)計一個緩沖器,在房間的周圍離地板適當(dāng)高度的地方移動它,檢查它是否能夠發(fā)現(xiàn)所有可能的碰撞點。如果你的緩沖結(jié)構(gòu)較大,當(dāng)它用最佳部位撞擊到障礙物并按下觸動傳感器時,不要以為這就是正確的。圖例4.2是一個不太好的緩沖器,因為當(dāng)碰撞發(fā)生時,它幾乎不能用橫軸的邊緣來關(guān)閉觸動傳感器,說它是一個不好的緩沖器是因為它把整個碰撞產(chǎn)生的力直線傳輸給了傳感器,也就是說,在機(jī)器人身上安裝一個非常穩(wěn)固的支架對傳感器的安裝是非常有必要的。
圖4.2簡單的緩沖器
根據(jù)經(jīng)驗,應(yīng)該嘗試不同的碰撞來看看緩沖器在各個位置是否能很好的工作。你可以編寫一個無限循環(huán)的小程序,當(dāng)傳感器被按下時,發(fā)出一聲蜂鳴聲用來測試你的緩沖器。
談起緩沖器,人們往往會想到當(dāng)遇到障礙物時開關(guān)會被按下。這樣說似乎有點絕對,在發(fā)生碰撞的時候同樣可以松開開關(guān)??匆幌聢D4.3,橡膠皮筋可以使積木輕壓著傳感器,當(dāng)緩沖器的前面部分接觸到物體時,開關(guān)就會被釋放。
圖4.3
平常壓下的緩沖器
實際上,推薦這種緩沖器有這樣幾個重要的原因:
l 沖擊力不可能直接傳遞給傳感器,傳感器與標(biāo)準(zhǔn)的樂高積木相比更容易受損壞,因此應(yīng)避免不必要的撞擊。
l 橡皮圈可以吸收撞擊力,這對你的傳感器和機(jī)器人來說都會起到保護(hù)作用,當(dāng)你的機(jī)器人速度非???,或者重量大,或者反應(yīng)比較慢,或者具備其中的一個因素時,這種保護(hù)作用顯得尤其重要。
緩沖器是一個非常重要的裝置,而且觸動傳感器的應(yīng)用也非常廣泛。當(dāng)你想告之RCX一個事件發(fā)生時,你可以使用按鈕一樣人為的把它按下去。你能想象出類似的情況嗎?事實上,有很多。比方說,你可以按下銨鈕告訴RCX”現(xiàn)在讀取光電傳感器的值”,從而進(jìn)行讀取校準(zhǔn)(我們將在以后的部分進(jìn)行討論)。
另一個常用的作用就是把觸動傳感器作為一個位置控制器來用。如圖4.4,機(jī)器人向前看時(圖
4.4b)就關(guān)閉了頭部(圖4.4a)的觸動傳感器。通過編程可以在水平面上實時的控制頭部的旋轉(zhuǎn)(向左或向右),當(dāng)傳感器被按下時,機(jī)器人的頭部就能轉(zhuǎn)回到正確的位置,值的注意的是,我們在這個例子中用到的凸齒輪在與觸動傳感器相配合時是非常的有用,你可以讓軸通過三個十字孔個中的一個來選擇合適的距離去關(guān)閉觸動傳感器。
圖4.4
用觸動傳感器定位
在本書的第三部分我們還會介紹位置控制的其它一些應(yīng)用。事實上,在搭建你的機(jī)器人之前需要你去研究一些不同的方法。
我們再舉幾個事例來說明傳感器的應(yīng)用
都能停下。首先你會想到在每一層安放一個觸動傳感器,當(dāng)按下其中一個時,電梯室會在那一層停下。這是一個好方法,但這里有一個小問題;你僅有兩個觸動傳感器,對你來說,一個電梯僅有二層不是非常實際,你可以再買一個觸動傳感器,但這只能再加高一層,并沒有解決實質(zhì)性的問題。此時,RCX的三個輸入端口已經(jīng)全部被占用。突然,你會想到一個辦法:為什么不把傳感器放在電梯廂上而不是外面呢?在電梯廂上固定一個傳感器,這樣只需一個傳感器就可以加高更多的樓層了。從最初的方案到現(xiàn)在更好的方案,兩個系統(tǒng)是完全相同的嗎?答案是否定的。首先,你需要決定廂的絕對位置,當(dāng)它在第二層時,你僅是可以知道它的相對位置。那么,你需要一個初始點,從起始點開始計算就可以推斷出廂的位置.或者程序運行時,需要廂體在一個特定的位置,或者用第二個傳感器來探測一個特定的樓層。例如,在最底層放置一個傳感器,因此程序一開始就降下電梯到最底層。那樣就可以計算出廂體的絕對位置了。
現(xiàn)在,電梯就能夠準(zhǔn)確的升降了。但你還有最后一個問題需要解決:如何告訴你的電梯它應(yīng)該去哪一層呢?在每一樓層放置一個傳感器去提示電梯是不切合實際的。在RCX上只剩下一個輸入端口了。你要用這一個觸動傳感器來做什么呢?你還可以采用以前的方法嗎?可以,你可以計算一個觸動傳感器被按下的次數(shù)。比如說,被按下三次表示是三樓,依次類推。現(xiàn)在你就可以去搭建你的電梯了。
。假如你想搭建一個電梯。你希望電梯可以在任何一層
計算按下次數(shù)
下面這個例子是用偽代碼來編寫的,一個代碼并不與實際編寫語言相對應(yīng),而是界于程序語言和機(jī)器語言之間。使用偽代碼編程在專業(yè)程序員中是一種非常普遍的做法。
計算觸動傳感器被按下多少次需要一些小竊門。假如你寫了一些簡單的代碼,如下:
Counter=0
repeat
if Sensor1 is on then
Counter = Counter +1
end if
end repeat
當(dāng)你保持觸動傳感器被按下很短的間隔內(nèi),你的程序代碼就會在你的RCX上飛快的執(zhí)行。然而,在記錄下一個新的按下之前,需要松開觸動傳感器:
Counter =0
repeat
if Sensor1 is
on then
Counter=Counter+1
wait until Sensor1 is off
end if
end repeat
現(xiàn)在,你編寫的代碼正確地記錄了從斷開到閉合的變化。在你的代碼中,有一個重要的特點需要介紹一下:當(dāng)它在一段時間內(nèi)接收不到觸動信息時,你希望你的計數(shù)程序停止。為了實現(xiàn)這一點,你需要使用一個計時器用來測量上一次按下時間與最后一次時間的間隔:
Counter=0
interval=
reset Timer
repeat
if Sensor1 is on then
Counter=Counter + 1
wait until Sensor1 is off
or until Timer if greater then Interval
reset Timer
end if
until Timer is greater then
Interval
假如你的時間間隔是兩秒。當(dāng)計數(shù)程序開始時,計時器和計數(shù)器首先復(fù)位為0,然后開始檢測傳感器的狀態(tài)。如果兩秒內(nèi)沒有按下觸動傳感器,它仍將保持復(fù)位狀態(tài),如果有觸動傳感器被按下,此動作將被記下并等待使用者釋放按鈕,計時器復(fù)位為零,在程序停止運行之前,使用者可以在兩秒內(nèi)第二次按下觸動傳感器。
4.3光電傳感器
用”看”來形容光電傳感器的功能有點夸大其辭。實際上它只是用來檢測光并測量其強(qiáng)度。盡管受到限制,但其應(yīng)用范圍仍比較廣。
圖4.5 光電傳感器
光電傳感器和觸動傳感器的最大區(qū)別是,后者返回的是一些數(shù)值而不是單純的開/關(guān)狀態(tài)。你所讀到的數(shù)值由光電傳感器在那個時候所檢測到的光強(qiáng)所決定。這些數(shù)值以0至100的百分?jǐn)?shù)的形式返回,光值越大,百分?jǐn)?shù)就越大。你可以用光電傳感器來做什么呢?你可以用它搭建一個由光電傳感器所驅(qū)動的機(jī)器人,我們稱之為光的追隨者,它可以檢測周圍的環(huán)境,找到一個強(qiáng)光源(或者是最亮的)并朝著它前進(jìn)。在一間足夠暗的房間里進(jìn)行,以免產(chǎn)生干擾,你也可以用手電筒來控制你的機(jī)器人。
檢測外部光源的功能是非常有趣的,但是或許你不能用它來做最令人驚奇的事情。我們介紹一下光電傳感器的另一個用途:它不但可以用來檢測光強(qiáng),而且還可以自身發(fā)光。提供穩(wěn)定光源的是一個紅色的發(fā)光二極管,因此你可以用來測量反射光并傳給傳感器。
當(dāng)你用來測量反射光時,你必須去避免一些來自其它光源的干擾。需要注意的是光電傳感器對IR所發(fā)出的光也非常紅外光,如攝像機(jī);或者是樂高紅外發(fā)射器。
敏感,像典型的遠(yuǎn)距離控制器發(fā)出的
設(shè)計與計劃
讀取周圍的光值
樂高光電傳感器并不適合于測量外部光源來說,因為其靈敏度比較弱。紅色發(fā)光二極管所所發(fā)出的光太靠近檢光器以致于過多的影響了光值的讀取。如果你想測外部光源,你應(yīng)該考慮盡可能的去減少紅色發(fā)光二極管的影響。一個簡單的辦法就是在光電傳感器的前部放一個1×2的單孔積木塊,.更多的行之有效的辦法需要你對光電傳感器有些細(xì)微的改動。在Ralph
Hempel的網(wǎng)站中,他提到了如何對光電傳感器作修改,既不是永久的改變也不會損害你的光電傳感器。(見附錄A)
光在表面的反射率取決于許多因素,主要是表面的顏色,質(zhì)地和它距光源的遠(yuǎn)近。黑色物體的反射能力要弱于白色物體;黑色光滑表面的反射能力要強(qiáng)于黑色不光滑表面。另外,距離光電傳感器越遠(yuǎn),光電傳感器所檢測到的反射光就會越少。
這些因素都是相互依賴的,通過光感讀取的值,并不能說明是由哪個因素引起的。但你可以保持其它因素不便,而讓一個變化,這樣就可以通過讀取的數(shù)值來推斷出環(huán)境的一些變化。例如,如果你的光電傳感器經(jīng)常對著同一個物體,或者相同質(zhì)地和顏色的物體,你能夠用它去測出它的相對距離。另一方面,你可以把不同的物體放置在光電傳感器的前面,在恒定的距離內(nèi)分辨出它們的顏色。
4.3.1測量反射光值
為了舉例說明測量反射光的原理,我們來做一個實驗。拿一個RCX并打開其電源,在任意一個輸入端口連接一個光電傳感器,在你的程序中正確的設(shè)置其端口(紅色發(fā)光二極管應(yīng)該發(fā)光)。準(zhǔn)備一間光線較暗的房間,RCX有個控制模式,可以實時查看光感讀取的值。按RCX上的VIEW鍵,當(dāng)小箭頭正確顯示在傳感器所接的輸入端口位置。在顯示屏上會顯示出讀取的光線值。接下去你把光感放到桌上,在桌上以一定間隔(0.5cm,1cm,1.5cm)并排放置不同顏色的積木塊,保證積木之間的間距相等。查看數(shù)據(jù),得到的是不同顏色的積木反射的光值是不同的。
再進(jìn)行第二個實驗:將白色的積木快慢慢的移向光感,然后再慢慢的移開,觀察顯示屏上的數(shù)據(jù),可以發(fā)現(xiàn)當(dāng)光感與積木間的距離加大時數(shù)值將減小。我們的目的就是為了證明光感是不能同時判斷出距離和顏色的。我們重點強(qiáng)調(diào)在你使用光感時盡量避免外界光線的干擾。
方法與技巧
理解原始值的概念
了解原始值是很關(guān)鍵的,對于熟練的使用機(jī)器人套裝并不是必須的。但從另一個方面講,它可以幫助你理解傳感器是如何工作的。
RCX把來自傳感器(不管是什么類型)的電信號全部轉(zhuǎn)變成范圍在0至1023之間的數(shù)字信號,我們稱之為原始數(shù)值。在程序中,你在一個端口上設(shè)置了一個特定的傳感器,RCX會自動設(shè)定該傳感器的原始數(shù)值范圍,例如,從觸動傳感器讀取的數(shù)值范圍是1或者0,代表開或者關(guān),當(dāng)從溫度傳感器讀取時就會轉(zhuǎn)變成攝氏溫度或華氏溫度。同樣地,光電傳感器讀取時就會通過下面的方程式轉(zhuǎn)換成一個百分?jǐn)?shù):
百分?jǐn)?shù)=146-原始數(shù)值/7
為什么我們需要知道這種轉(zhuǎn)換呢?對于大多數(shù)應(yīng)用程序來說,通過RCX返回的光感值的百分?jǐn)?shù)形式更加有效,但也有這種情況,你需要所有光感變化值而百分?jǐn)?shù)形式卻不能體現(xiàn)出光感值的一些變化。我們用一個例子來做一下說明。假設(shè)會有兩種不同的情形,光電傳感器讀取707和713兩個不同的數(shù)值。把這兩個數(shù)值轉(zhuǎn)換成百分?jǐn)?shù),因為RCX只使用整數(shù),需要將除的結(jié)果進(jìn)行圓整。
146-(707/7)=146-101=45
146-(713/7)=146-101=45
在第二個方程式中數(shù)值101實際上是101.857…,去掉小數(shù)部分為101.就看部不出兩個值是不同的。我們知道在大多情況下數(shù)值的小數(shù)部分是不重要的。但也會有其它情況需要用到這樣一個微小的變化的數(shù)據(jù)
如果你用LEGO圖形化的編程環(huán)境為RCX編寫程序,你必須接受它的刻度值,否則無法處理原始數(shù)值。如果你選擇其它的編程語言,則可以直接處理沒有處理過的原始數(shù)值,在必須的時候,利用其優(yōu)勢,可能會有更好的解決方案。識別不同的顏色是光電傳感器一個非常普通的應(yīng)用。我們曾說過,光電傳感器實際上并不是用來識別顏色的,而是用來讀取反射光值。因此,它很難把黑色和藍(lán)色的積木塊區(qū)別開。但目前來說,我們?nèi)哉f它能識別顏色,在讀完之后您會明白真正的意思是什么。
4.3.2沿線走
目前,光電傳感器最普遍的使用方法就是用它搭建一個沿線走的機(jī)器人。
這個項目的設(shè)置是很簡單的,這也是之所以流行的一個原因。盡管其外觀簡單,這項工作仍需要引起足夠的重視,并需要你仔細(xì)設(shè)計和認(rèn)真編程。我們將在第二部分詳細(xì)的討論這個主題的細(xì)節(jié)內(nèi)容。當(dāng)光電傳感器在輕質(zhì)地面上讀取一條黑線時,你要注意有什么事情發(fā)生。
當(dāng)把光電傳感器放在地板上時,假設(shè)說讀取的數(shù)值為百分之七十,黑線為百分之三十。如果你想讓機(jī)器人緩慢的從地板移動到黑線或者是有污點的地方.你會注意到,數(shù)值不是從一個值突然跳到另一個值,而是會出現(xiàn)一系列的中間值。原因是光電傳感器不是讀取一個點,而是光電傳感器前部的一個小區(qū)域。所以當(dāng)光電傳感器穿過線的邊緣時,它所讀取的是地板和黑線的邊界值并返回一個中間值。
這個功能有用嗎?當(dāng)然,有時有用,有時沒有用。尤其當(dāng)我們涉及到沿線走時,它是有用的。實際上,你可以(或者說應(yīng)該)編寫一段程序讓你的機(jī)器人沿著邊界走而不是實際的黑線。這樣當(dāng)機(jī)器人需要改變它的行進(jìn)路線時,它知道往哪個方向轉(zhuǎn)身:如果所讀取的值太”暗”,它應(yīng)該向亮的區(qū)域前進(jìn),或有污點的區(qū)域。
技巧與提示
校準(zhǔn)讀取值
有時,你并不能預(yù)先知道光電傳感器實際上所讀取的數(shù)值是多少。假如你要參加一個沿線走的比賽:你并不能確定你的傳感器所返回的地板和黑線的數(shù)值。在這種情況下,一般的習(xí)慣是,在你的程序中不寫入預(yù)期的常數(shù)值是比較好的。但可以讓你的機(jī)器人通過一個簡單的測量程序來讀取這些數(shù)值。繼續(xù)我們沿線走的例子,你可以專設(shè)一個空的輸入端口用來接入一個觸動傳感器,當(dāng)你把機(jī)器人放在地板上時手動按下觸動傳感器,然后再放在黑線上,因此它就可以保存下讀取到的最大值和最小值?;蛘吣憧梢跃帉懸粋€小的檢測程序,以取消那些限制。
當(dāng)你需要控制一個更復(fù)雜的區(qū)域時,舉例來說,區(qū)域包括三種不同的顏色,想象一個臺面被劃為白色,黑色和灰色三個不同顏色的區(qū)域。在白色和黑色之間的邊界上你如何能區(qū)別出灰色區(qū)域?
這時你不能只做一個簡單的讀取,你必須深入考慮其它的因素,
像預(yù)先讀取,或者你可以使你的機(jī)器人在一個地方收集更多的數(shù)據(jù)并推斷它所在的位置。要處理這樣的情況,對軟件的要求就會變得更加復(fù)雜。
光電傳感器如同一個萬能器,它有很多種使用方法。你可以在光電傳感器的前部放置一個彩色的可以移動的樂高梁來搭建一個對者拉梁的上部時,光電傳感器就會讀取不同的光值。
圖4.6
用光電傳感器作一個模擬控制
光電傳感器與燈相結(jié)合(不包括在頭腦風(fēng)暴套裝中)可做成一個光電管(圖4.7);當(dāng)有物體擋在光電傳感器和燈之間時,機(jī)器人就會察覺。值得注意的是,我們在光電傳感器的前面放置了一個1×2的單孔梁,以減少來自周圍光線的干擾。
圖4.7 光電管
4.3.3接近探測
你可以用光電傳感器做成一個雷達(dá)探測器用于檢測即將碰到的障礙物。這被稱之為接近探測。這項技術(shù)所基于的特性我們已經(jīng)討論并探究過了,就是光電傳感器可以根據(jù)反射光線來測定相對距離。假如你的機(jī)器人要直線前進(jìn),用一個光電傳感器為它在前面引路。假如你的機(jī)器人要在一個暗室里移動,除了光電傳感器上的紅色發(fā)光二極管之外沒有任何的光源。在向前移動的過程中,機(jī)器人連續(xù)不斷的讀取傳感器所檢測到的光值。如果讀取值趨向于迅速增大,就可以推斷出機(jī)器人正向著一個物體前進(jìn)。但不能推斷出障礙物的種類及與障礙物之間的距離,如果房間內(nèi)沒有物體在移動,你確信機(jī)器人正在接近障礙物?,F(xiàn)在我們有了一套系統(tǒng)可以躲避障礙物而不是局限于碰撞以后再檢測它們。
注意:
RCX內(nèi)部的IR
LED發(fā)射的是不可見光,光電傳感器的紅色二極管發(fā)射的是可見光。
遺憾地是,當(dāng)房間內(nèi)有光源時,這項技術(shù)工作就有問題了,原因是你的程序不能區(qū)別自身反射回的紅色光還外界環(huán)境光線。你需要在機(jī)器人身上有一個更明顯的獨立光源提供更高的參考。
令人欣慰的是,正好有一個!RCX內(nèi)部有一個IR
LED可以發(fā)射信息給紅外發(fā)射儀或是另一個RCX。用RCX內(nèi)部的IR
LED以比特的編碼形式發(fā)送信息可以被紅外發(fā)射器所接收到。關(guān)于信息的內(nèi)容我們并不關(guān)心;我們需要的僅僅是光。盡管紅外光對于肉眼來說是不可見的,卻與可見光具有相同的性質(zhì),LEGO光電傳感器對此卻非常敏感。
所以,現(xiàn)在你的程序有了使用接近探測的所有條件。發(fā)送一個IR信息并立即讀取光電傳感器的值.你最好把讀取的數(shù)值進(jìn)行一下平均處理,這樣可以把外部光源所導(dǎo)致的影響降至最低(我們將會第12節(jié)討論這個竅門)。如果你注意到在隨后的二組值中有顯著的增加,舉例來說,百分之十,說明你的機(jī)器人很有可能正朝著障礙物前進(jìn)。
4.4角度傳感器
我們將要研究的第三個樂高傳感器是角度傳感器(圖4.8)。遺可是機(jī)器人套裝中沒有包含該部件,它的多功能性僅次于光電傳感器。在3801
Ultimate
Accessory套裝里面包含一個角度傳感器,還有一個觸動傳感器,一個燈,遙控器和少量的其它附件。
圖4.8 角度傳感器
角度傳感器是如何工作的呢?
因為角度傳感器有四種不同的狀態(tài),所以會返回四種不同的值。我們稱之為A,B,C和D。對于每一次完整的旋轉(zhuǎn),它經(jīng)過了四種狀態(tài)各四次—這也就是我們?yōu)槭裁匆檬鶃碛嫈?shù)的原因。如果角度傳感器是順時針旋轉(zhuǎn),它會讀序列ABCD…,如果是逆時針旋轉(zhuǎn),讀取的結(jié)果會是ADCBA…,RCX會時刻檢測傳感器,當(dāng)RCX檢測到狀態(tài)發(fā)生變化時,它不但可以推斷出角度傳感器已經(jīng)轉(zhuǎn)動,而且還可以知道所旋轉(zhuǎn)的方向。舉例來說,從A轉(zhuǎn)變到B,或從D轉(zhuǎn)變到A,計數(shù)器將增加一個單位,然而,從D到C,或者是從A到D,計數(shù)器將減少一個單位。
角度傳感器,顧名思義,是用來檢測角度的。它的身體中有一個孔,可以配合樂高的軸。當(dāng)連結(jié)到RCX上時,軸每轉(zhuǎn)過1/16圈,角度傳感器就會計數(shù)一次。往一個方向轉(zhuǎn)動時,計數(shù)增加,轉(zhuǎn)動方向改變時,計數(shù)減少。計數(shù)與角度傳感器的初始位置有關(guān)。當(dāng)初始化角度傳感器時,它的計數(shù)值被設(shè)置為0,如果需要,你可以用編程把它重新復(fù)位。
通過計算旋轉(zhuǎn)的角度,你可以很容易的測出位置和速度。當(dāng)在機(jī)器人身上連接上輪子(或通過齒輪傳動來移動機(jī)器人)時,可以依據(jù)旋轉(zhuǎn)的角度和輪子圓周數(shù)來推斷機(jī)器人移動的距離。然后就可以把距離轉(zhuǎn)換成速度,你也可以用它除以所用時間。實際上,計算距離的基本方程式為:
距離=速度×?xí)r間
由此可以得到:
速度=距離/時間
如果把角度傳感器連接到馬達(dá)和輪子之間的任何一根傳動軸上,必須將正確的傳動比算入所讀的數(shù)據(jù)。舉一個有關(guān)計算的例子。在你的機(jī)器人身上,馬達(dá)以3:1的傳動比與主輪連接。角度傳感器直接連接在馬達(dá)上。所以它與主動輪的傳動比也是3:1。也就是說,角度傳感器轉(zhuǎn)三周,主動輪轉(zhuǎn)一周。角度傳感器每旋轉(zhuǎn)一周計16個單位,所以16*3=48個增量相當(dāng)于主動輪旋轉(zhuǎn)一周。現(xiàn)在,我們需要知道齒輪的圓周來計算行進(jìn)距離。幸運地是,每一個LEGO齒輪的輪胎上面都會標(biāo)有自身的直徑。我們選擇了體積最大的有軸的輪子,直徑是81.6CM(樂高使用的是公制單位),因此它的周長是81.6×π=81.6×3.14≈256.22CM。現(xiàn)在已知量都有了:齒輪的運行距離由48除角度所記錄的增量然后再乘以256。我們總結(jié)一下。稱R為角度傳感器的分辨率(每旋轉(zhuǎn)一周計數(shù)值),G是角度傳感器和齒輪之間的傳動比率。我們定義I為輪子旋轉(zhuǎn)一周角度傳感器的增量。即:
I=G×R
在例子中,G為3,對于樂高角度傳感器來說,R一直為16.因此,我們可以得到:
I=3×16=48
每旋轉(zhuǎn)一次,齒輪所經(jīng)過的距離正是它的周長C,應(yīng)用這個方程式,利用其直徑,你可以得出這個結(jié)論。
C=D×π
在我們的例子中:
C=81.6×3.14=256.22
最后一步是將傳感器所記錄的數(shù)據(jù)-S轉(zhuǎn)換成輪子運動的距離-T,使用下面等式:
T=S×C/I
如果光電傳感器讀取的數(shù)值為296,你可以計算出相應(yīng)的距離:
T=296×256.22/48=1580
距離(T)的單位與輪子直徑單位是相同的.
實際上,在程序不僅僅會用到乘法和除法的數(shù)學(xué)運算,還有更多的需要多留心(有關(guān)內(nèi)容我們將在第12章進(jìn)行進(jìn)一步的討論)。
使用角度傳感器來控制你的輪子可以間接的發(fā)現(xiàn)障礙物。原理非常簡單:如果馬達(dá)運轉(zhuǎn),而齒輪不轉(zhuǎn),說明你的機(jī)器已經(jīng)被障礙物給擋住了。此技術(shù)使用起來非常簡單,而且非常有效;唯一要求就是運動的輪子不能在地板上打滑(或者說打滑次數(shù)太多),否則你將無法檢測到障礙物。如果是一個空轉(zhuǎn)的齒輪連接到馬達(dá)上就可以避免這個問題,這個輪子不是由馬達(dá)驅(qū)動而是通過裝置的運動帶動它:在驅(qū)動輪旋轉(zhuǎn)的過程中,如果惰輪停止了,說明你碰到障礙物了。
在許多情況下角度傳感器是非常有用的:控制手臂,頭部和其它可移動部位的位置。值的注意的是,當(dāng)運行速度太慢或太快時,RCX在精確的檢測和計數(shù)方面會受到影響。事實上,問題并不是出在RCX身上,而是它的操作系統(tǒng),如果速度超出了其指定范圍,RCX就會丟失一些數(shù)據(jù)。Steve
Baker用實驗證明過,轉(zhuǎn)速在每分鐘50到300轉(zhuǎn)之間是一個比較合適的范圍,在此之內(nèi)不會有數(shù)據(jù)丟失的問題。然而,在低于12rpm或超過1400rm的范圍內(nèi),就會有部分?jǐn)?shù)據(jù)出現(xiàn)丟失的問題。而在12rpm至50rpm或者300rpm至1400rpm的范圍內(nèi)時,RCX也偶會出現(xiàn)數(shù)據(jù)丟失的問題。
給機(jī)器人感知世界的能力
——傳感器的應(yīng)用介紹
在創(chuàng)意機(jī)器人這個欄目中,我們相繼介紹了RCX(樂高機(jī)器人的大腦),ROBOLAB圖形化編程軟件(樂高機(jī)器人的編程語言)和樂高機(jī)器人套件(用來自己動手制作機(jī)器人的器材)。利用它們我們已經(jīng)可以做出一個機(jī)器人,并通過編程來讓它完成一定的任務(wù)。
可是,我們的機(jī)器人還不完整,它現(xiàn)在的智能化程度很低,即使能夠完成任務(wù),也是極為簡單的。因為它沒有“感覺”,它不知道外界的情況,只能盲目去做一些事情?,F(xiàn)在,我們就將給機(jī)器人加上傳感器,讓它具有各種各樣的感覺,讓機(jī)器人可以從外界獲取信息,這樣我們就能夠讓機(jī)器人更加的智能化。
我們?nèi)祟愔挥幸曈X、嗅覺、聽覺、觸覺、味覺這五種感官,而在這方面機(jī)器人要比我們?nèi)祟悘?qiáng)的得多。就以樂高機(jī)器人為例,常用就有光電傳感器、觸動傳感器、角度傳感器和溫度傳感器四種。另外還有十多種可供選擇的工業(yè)傳感器,例如空氣壓力傳感器,PH值傳感器、電壓傳感器、電流傳感器、聲音傳感器等等。
現(xiàn)在我們就分別介紹一下樂高常用的四種傳感器:
圖1觸動傳感器
1、 觸動傳感器(簡稱觸感)
觸感簡單的說就是充當(dāng)機(jī)器人觸覺的傳感器。當(dāng)它前端的黃色突點被壓下去,它就會生效,反饋給RCX(樂高機(jī)器人的大腦)的信號就會發(fā)生改變。這樣,機(jī)器人就會知道有物體碰到了觸感。當(dāng)黃色的突點被松開,傳感器反饋給RCX的信號又會改變成初始狀態(tài)的值。知道了觸感的工作原理,我們就可以使我們的機(jī)器人更加“聰明”。例如,我們制作一輛在左右兩側(cè)都裝有一個觸感的自動規(guī)避障礙的小車,當(dāng)左側(cè)的觸感被壓下,RCX就會知道這一情況,那么就可以根據(jù)程序的設(shè)定讓機(jī)器人向右轉(zhuǎn)彎以避開障礙;同樣的道理右側(cè)觸感被壓下就向左轉(zhuǎn)彎。因此小車就可以自動規(guī)避障礙了。
圖2 光電傳感器
2、 光電傳感器(簡稱光感)
我們注意到光感的前面有兩個二極管,其中一個是一個發(fā)光二極管,起發(fā)射的作用;另一個起接收的作用(接收從物體表面反射回來的光)。所以確切的說樂高的光感是一種對反射光線強(qiáng)度做出反饋的傳感器。它與觸感有很大的不同,觸感只有兩種反饋值(0,1),而光感的反饋值是連續(xù)的,經(jīng)過RCX的處理后在反饋值在0~100之間。物體表面的反射率越低(越暗越粗糙),那么光感探測時的反饋值就越接近于0;物體表面的反射率越高(越亮越光滑),那么光感探測時的反饋值就越接近于100。因此,給機(jī)器人安裝上光感后,機(jī)器人就可以識別物體表面的情況。假如我們在地面上畫出一條與地面的反射率有區(qū)別的軌跡,那么就可以讓機(jī)器人沿著軌跡前進(jìn)了。
圖3角度傳感器
3、 角度傳感器
角度傳感器上有一個十字形的孔,這個孔的大小恰好可以和樂高的軸進(jìn)行匹配。它的功能也就是用來測量軸轉(zhuǎn)動的角度或者圈數(shù),但是由于它的精度是22.5度(1/16圈),所以在實際應(yīng)用中多是用來測量軸的轉(zhuǎn)動圈數(shù)。假如我們知道與輪胎相連的軸轉(zhuǎn)過的圈數(shù),那么我們也就能夠知道機(jī)器人運動的距離了。
圖4溫度傳感器
4、 溫度傳感器
溫度傳感器的功能就比較簡單了,它就是用來測量溫度的。唯一要注意的是它上面實際用來測量的部位——金屬探頭。它的測量范圍是-20度~50度。
這些就是四種常用的樂高傳感器的基本情況,至于其它的傳感器,我們將在以后逐步介紹。以上這四種傳感器其實是比較簡單的,但同時它們也是比較重要的。一般情況下,我們的機(jī)器人只要使用這四種傳感器,就可以獲得很多的外界信息了,就可以完成一些比較復(fù)雜的任務(wù)了。
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原