《Arduino實戰》 3 2 壓電換能器

2021-09-23 16:25:27 字數 3460 閱讀 4441

圖3-6展示了乙個典型的可以用於發聲的壓電換能器,它與那些在**賀卡中使用的類似。

它們是如何工作的?術語壓電的意思就是「由壓力產生電流」。當乙個壓電裝置受到擠壓時,它就會產生乙個電荷,如圖3-7所示。換能器在與arduino一起使用時的乙個典型應用就是將其作為敲擊感測器。

當換能器受到擊打或碰撞時,arduino就可以檢測到,並觸發相應的動作,比如點亮乙個led或者用揚聲器發出乙個聲響。

相反地,當乙個電荷施加到壓電換能器上時,它就會發生形變,如圖3-8所示。如果你對其施加乙個以一定頻率變化的電壓,換能器的振動就會使其發出聲音或者旋律。用在**賀卡或者蜂鳴器中的壓電換能器正是在這種模式下工作。

正如你所看到的那樣,乙個壓電換能器既可以作為輸入裝置,也可以作為輸出裝置。以壓電換能器為核心的聲吶裝置,就以這樣的方式發出乙個聲音頻號並接收回聲。這就是潛艇電影中最讓人熟悉的經典探測音。通過測定探測音從發出到接收到回聲的時間,就可以計算出距離目標有多遠。我們將在第6章講解另外乙個示例,那時會將devantech srf05作為測距儀。

現在你已經對壓電換能器有了乙個大概的了解,並知道了它如何工作,下面就要將壓電換能器作為乙個敲擊感測器了。當arduino檢測到敲擊感測器受到擊打或者碰撞時,它就會點亮乙個led。

對於這個專案,你需要下列元件:

你要使用乙個不帶外殼的壓電換能器,這會比帶外殼的效果更好。

受到敲擊時,壓電換能器會產生非常高的電壓,足以對arduino造成損壞。穩壓二極體可以保護arduino免受高電壓的損壞,而電阻的作用是洩放來自換能器的高電壓。

圖3-9展示了完整的電路圖。注意穩壓二極體的的方向,還有如何將其與電阻和壓電換能器併聯。

現在你已經看過了電路圖,可以在麵包板上組裝這個電路了。

電路除了arduino以外還有3個主要元件:乙個5.1 v的穩壓二極體,乙個1 mω的電阻和乙個壓電換能器。

如前文所述,穩壓二極體和電阻都併聯在壓電換能器上。

下面就可以將器件安放到麵包板上了,要特別注意壓電換能器的極性,極性可以通過由低熔點焊料焊接在上面的一紅一黑兩條線來區分。黑線連線到電路中的gnd部分,紅色連線到arduino的模擬輸入引腳a0。

穩壓二極體需要以正確的方式連線才能保護arduino的模擬輸入端電壓不超過5 v。按照慣例,在二極體的陰極或者負極,一般會設計有一條黑色的條紋,這一極會被連線到gnd,但在你的電路中,你要將二極體反向偏置,也就是將二極體的陰極連線到電路的正極。穩壓二極體的工作原理是,只在超過反向擊穿電壓的時候導通,在本例中擊穿電壓是5.1 v。任何超過5.1 v的電壓都會導致二極體反嚮導通並與gnd短路,從而保護arduino的輸入端。

當這三個元件都連線到麵包板上之後,你最終就可以連線arduino的gnd和模擬輸入端a0了。圖3-10展示了組裝完成後的電路,包括到arduino的連線。

當所有器件組裝完畢並連線到arduino之後,你就可以開始寫程式來讓arduino與壓電換能器協作了。

二極體

二極體是一種雙端器件,電流沿乙個方向流過時電阻很小,而沿另乙個方向流過時電阻很大(理想情況下是無窮大)。穩壓二極體是一種特殊的二極體,它被設計成在超過擊穿電壓(膝點電壓)時允許電流反向通過。

首先,你要使用如**清單3-1所示的程式。如果你沒有儲存之前的程式,請建立乙個新的程式檔案並輸入這些**。

接著,你將arduino連線到usb介面,燒寫你的程式並啟動串列埠監視器。最初,串列埠監視器應該只輸出0值。現在,嘗試著輕輕敲打或擠壓換能器,然後觀察感測器的數值如何改變。乙個典型的輸出如圖3-11所示。

當換能器受到擊打時,這個數值會快速攀公升到最大值,然後跌落回0。不同的數值反映了換能器受到擠壓或擊打的強烈程度,值越大說明其受到的擠壓越猛烈。如果什麼都沒觀測到,請檢查你的連線,尤其注意檢查換能器和穩壓二極體的方向。

下面你要修改程式,只把超過乙個既定閾值的資料列印出來。可以在現有的電位器程式上修改,也可以建立乙個新的程式。新版的程式見下列**清單,將這個程式儲存並命名為threshold。

**清單3-2 壓電換能器的閾值

在**清單3-2中,將閾值設定為200。在程式的迴圈中,只會輸出高於閾值的感測器數值。

接下來讓我們來測試這個程式。

在輸入程式清單3-2中的**後,校驗使其通過編譯,然後將它寫入到arduino中。開啟串列埠監視器,然後以不同的力度敲擊換能器。你會發現敲擊的力度越大,返回的感測器數值越高。圖3-12給出了一些示例輸出。

在本節中,你需要新增以下兩個器件:

圖3-13所示的電路在圖3-9的基礎上新增了揚聲器和電阻。

現在就把電路組裝到一塊麵包板上吧。

將揚聲器通過乙個1 kω電阻連線到8號數字引腳,這就完成了硬體連線。組裝完成後的電路如圖3-14所示。

我們需要在揚聲器上焊接兩根跳線,因為揚聲器原來的線太軟,以至於無法直接插入到麵包板上。如果你沒有焊接裝置,可以用一些絕緣膠帶將導線固定在跳線上,也可以使用鱷魚夾。

當所有的元件都連線好後,就可以編寫程式了。

**清單3-3給出了新程式的**,其中定義了3個新變數。

toneduration指定每個音階持續的時間,單位是毫秒(ms)。

speakerpin指定了揚聲器所連線到的引腳。

**清單3-3 用揚聲器產生乙個音階

在這個程式中,使用的是arduino內建的庫函式,tone,它接受3個引數。

tone (pin, frequency, duration)

notone(pin)

當程式順利通過編譯之後,將arduino連線到計算機並為它寫入程式。嘗試著敲擊壓電換能器,然後聽揚聲器是否發出了聲響。如果沒有發出聲音,請檢查所有的連線。

《Arduino實戰》 2 3 反應測試儀

arduino實戰 這是你在本章中最後一次電路修改。你要在電路中再新增兩個led,最好是一紅一綠,它們被用作開始和停止指示燈。最初是紅色led點亮,當它熄滅且綠色led點亮時,你要盡可能快地按下按鈕,來讓在前一節中搭建的led序列暫停。反應速度處於平均水平的人,可以在序列有2個或者3個led亮起時將...

《Arduino實戰》 2 2 獲得控制權

arduino實戰 現在你的程式已經開始工作了,伴隨著led乙個接乙個地點亮和熄滅,下面我們要新增乙個按鈕,來控制這電路了。這個按鈕用來啟動和停止led序列的閃爍。2.2.1 電路圖 電路圖如圖2 7所示。你需要保留最初版本的電路,並再新增乙個按鈕 s1 和乙個阻值為10 k 的電阻 r6 就可以了...

將你的STM32搞成Arduino(一)

接觸stm32有一年半了從剛開是的懵懂無知到現在的拉個庫就是幹,我慢慢的發現stm3功能的強大已經配套環境的完整程式,他不像是51微控制器那樣已經被intel拋棄,之後也沒人出乙個官方的庫,一切都是純生的需要自己搭建。stm32標準庫已經為你搭建好了乙個完整的環境,僅僅需要去呼叫就好了。更甚至st為...