2013年8月18日

電腦發出超音波的方式

電腦能發出的聲音取決於音效卡和喇叭的規格,由於人耳理論上能聽到範圍在20Hz到20000Hz,所以電腦的聲音設計落在這個範圍也就夠了。如果需要電腦能夠發出超過20000Hz的超音波,那該怎麼作呢?


要作到這件事,得先了解波形,最基本的波稱為正弦波(Sine Wave),是大家畫波時最容易畫出的樣子,我們可以用一個正弦函數(sin)來描述它。  我們可以用audacity的生成/單音,來做出正弦波。

當然我們也可以用同樣的功能做出其它波,例如方波(在軟體中翻譯成平方),我先設置一個頻率為1000的方波。
1


它的樣子就是這樣方方正正的。其實方波可以被分解成數個正弦波,這個分解的過程稱之為「傅立葉分析」。在audacity中,我們可以用分析/繪製頻譜圖來作到
2


這個就是上頭的1000Hz方波經過傅立葉分析後的頻譜圖,可以看到的是最主要的成份是1000Hz的正弦波,其次是3000Hz、5000Hz等奇數倍的正弦波。
3


反過來,我們也可以透過geogebra將數個正弦波合成變成方波。在下圖中,若是將藍色那條當作頻率為1的波,則紅色那條則是頻率為3,綠色是頻率為5。把這三個波按不同的比例加起來就會變成黑色的波,看起來已經接近方波了。如果要更方,可以詢著這樣的規則,繼續把波加起來。(公式可以在wikipedia裡找得到)
7


上面兩個例子是要說明,若是我做出一個頻率為f的方波,這裡頭就藏著3f、5f的正弦波。雖說前面用傅立葉分析去分析出來,但這些不同頻率的波其實就藏在裡頭。

原理懂了之後,就要來說明怎麼讓電腦發出高於20KHz 的聲音呢?我就以40KHz的正弦波為目標吧,這個是連audacity都不給生出來的頻率。既然audacity不給生,那我就生一個頻率為1/3的方波吧,也就是13.3k的方波。這麼一來就可以在裡頭藏了40KHz的正弦波,當然也還有66.5KHz 的正弦波。不過要注意的是,那些3倍、5倍、7倍頻率的波能量都已是衰減的了。

初次作這時,其實我也懷疑到底會不會有超音波,所以我就用蝙蝠超音波偵測器靠在耳機上,的確可以偵測到那些超音波,不過不算太強,我得將偵測器靠耳機很近才行。

要產生高頻率的波,除了這種方式外,還可以用上次用iPad當紅外線遙控器的方式,產生19KHz的波之後,將其中一聲道上下翻轉,然後藉由二極體(LED)做出全波整流的效果。


讓電腦發出40KHz的波是要作什麼哩?這點還真奇妙哩,目的是要把這個波透過天線發出後,來幫時鐘校時。

這個要從大人の科学 パタパタ電波時計說起,這是一個可以透過無線電波自動校時的鐘。台灣附近發射電波的地方有兩處,一是日本,二是中國河南,雖然距離甚遠,但理論上台灣也都還是能接收到這些訊號。但是呢,偏偏就是有人收不到,所以就有人做出了用電腦來發無線訊號校時的功能。

這幾篇都是日文資料,
這篇講到自製天線的方式,用一個5-10公尺的單心線繞圈當作天線,接上3.5mm的雙聲道的接頭,一端接Gnd,一端則是和兩個雙聲道接在一起。
http://www.starstonesoft.com/JJY_Simulator.htm

這篇JJY Emulator有用電腦發出訊號的Java,也可以直接用耳機當作訊號線
http://siio.jp/jjy/

甚至還有for iPhone/iPad的app
https://itunes.apple.com/jp/app/jjy-simulator/id431054911?mt=8

這篇講的是用arduino來達成的方式
http://d.hatena.ne.jp/NeoCat/20110328/1301256560

這裡則有mobile01上的介紹
http://www.mobile01.com/topicdetail.php?f=376&t=2343533#31620814

這個經驗挺妙的,因為關注著「大人的科學」產品,所以讓我意外學會怎麼讓電腦發出超音波呢。