原文發布於《MAKE》德文版官網,由Niq Oltman翻譯。
如果你想試驗超音波懸浮,一種用聲波讓物體靜浮在空中的原理,你不需要準備任何科學儀器,更不用架設複雜的迴路控制系統或購買昂貴套件。只要一個Arduino、一個步進馬達驅動器,再改變一下距離感測器的功能就可以了。
好吧!我承認我們的微型超音波懸浮器沒辦法讓很重的東西浮起來,但光看保麗龍小球像被施了魔法般靜浮在空中,就已經很吸引人了。
相較於磁懸浮,超音波方法就不需要有用來穩定懸浮物體的控制迴路系統。聲波懸浮系統能讓物體自己停留在駐波節點上。你還可讓多個物體同時懸浮在彼此上方,均勻分布空間!
時間:3~8小時
難度:中等
成本: $0~50美元
Arduino Nano微控制板,附USB線
H橋L293D晶片,或者使用L298N晶片及整流器二極體1N4007(1個或以上)的步進馬達驅動器模組
電容:100nF(1)和2,200µF(1)
測試用無銲麵包板
萬用電路板(Perfboard),配接永久電路用,尺寸約2″×2″
懸浮用保麗龍小球(發泡聚苯乙烯)
跳線和/或安裝線
電源供應器9V–12V。桌上型電源供應器較好,或者小型變壓器也可。你甚至可以試試看9V電池
HC-SR04超音波距離感測器(2)
銅管,0.7″ (18mm),長度約6″,以及接頭:T型接頭(1)和90°接頭(3)
底座用小木塊
在2/18日發行的《MAKE》雜誌德文版中,我們發表了兩個超音波懸浮裝置的替代方案,其中一個是從已嚴重燒毀的超音波清潔器取下換能器來使用。
不過還有第三個方案,就是接下來要告訴大家的。該方法使用便宜的距離感測器來製作,這個方法也是目前最簡單的。
本專題以距離感測器中之超音波換能器為基礎,像是HC-SR04距離感測模組,該模組可於eBay以不到2美元購得。
模組內含有一個做為發射器(T)使用的換能器,另一個換能器則當作接收器(R)使用。原則上,選擇T換能器做為專題用的發射器效果較佳,所以我們買了兩個感測器,分別取出裡面的T換能器(必要的話也可以只買一個,以第一次做這個實驗來說,R換能器的發射功能已經夠好了)。
請將兩個換能發射器脫焊。不過既然開始拆了,就把R換能器也拆下來吧!請勿把接收器上的小線濾網丟掉。因為事實證明,這東西真是出乎意料地好用。
換能器的設計是以40kHz運作,該頻率下換能器的工作效能最佳,頻率訊號會由Arduino Nano發出。
以下Arduino腳本(sketch)大多由setup()程式執行工作。首先,將所有類比埠口設定為輸出。接著,Timer1設定為頻率80kHz時觸發中斷(interrupt),每次中斷會反轉類比埠口狀態,將80kHz方波訊號轉換為40kHz的全波循環。而loop()程式碼在此就無用武之地了!
byte TP = 0b10101010; //每個埠口都會收到反相訊號
void setup() {
DDRC = 0b11111111; // Set all analog ports to be outputs 將所有類比埠口設定為輸出
// 初始化Timer1
noInterrupts(); //中斷禁止
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 200; // 設定比較暫存器 (16MHz / 200 = 80kHz 方波 -> 40kHz全波)
TCCR1B |= (1 << WGM12); // CTC 模式
TCCR1B |= (1 << CS10); // Set prescaler to 1 ==> no prescaling 將預除器設為1 ==> 無預除
TIMSK1 |= (1 << OCIE1A); // Enable compare timer interrupt 允許比較暫存器中斷
interrupts(); // Enable interrupts 允許中斷
}
ISR(TIMER1_COMPA_vect) {
PORTC = TP; //傳送TP的值到輸出埠
TP = ~TP; //將TP值反相,以進行下一次運作
}
void loop() {
//剩下就沒什麼事了 🙂
}
完整的程式碼及示意圖ZIP檔請點擊makezine.com/go/micro-ultrasonic-levitator免費下載
理論上,你可以同時將兩個發射器直接連到Arduino Nano類比埠口,因為它們只需要非常小的電流。不過,這麼做的話,其工作電壓就會受限於Arduino所提供的5V,大大降低懸浮功率。為了加強訊號,請使用擁有H橋電路的L293D晶片,就是某些步進馬達驅動器裡會使用的那種晶片。
如果你對於直接使用L293D晶片感到憂心,可以用有L298N晶片的步進馬達驅動模組作為替代。只要把四個輸入端其中兩個接到Arduino的A0和A1埠口,再接通GND端和5V端即可,配接方式詳如下方示意圖。
假如你是直接在萬用板上使用IC晶片建立電路,請確保電路內加入兩個電容。如此可濾除換能器產生的線路雜訊,這些雜訊很可能會「毀損」Arduino,迫使控制板不斷重置。
請先將兩個發射器以間隔約20mm(0.8″)放置,可以用輔助夾座或其他功能類似的裝置將其固定。確切的間隔距離需透過反覆實驗才能得知。上圖說明了完整的架設原型,使用了步進馬達模組、麵包板和輔助夾座。
此間隔距離必須恰好能產生駐波,還要有夠強的高低氣壓場。你可用以下公式估算距離,並以室溫下音速343m/sec(1,125ft/sec)來計算:
343,000mm/sec / 40,000Hz = 8.575mm
所以,要期待能在距離為8.575毫米(0.338”)或該數值倍數時產生駐波。但兩發射器間之距離與聲波圍繞的區域範圍不盡相同,因此該計算結果並不是非常準確,你必須一直微調距離直到裝置能成功運作。
假如你有雙通道示波器,這將有助於你找到合適的距離。請將通道之一連接到Arduino,另一通道連接到兩發射器其中一個(測量時請確保發射器與電路板已中斷連接)。若距離恰好,超音波接收器發出的正弦波應該與Arduino的方波信號完全同相。
還記得你留下的超音波接收器線濾網嗎?把它黏在牙籤上,這可在你要把保麗龍小球放到適當位置時助你一臂之力,因為它能透射聲波(假如你用手或鑷子放小球可能會很辛苦。而且會使換能器發出的聲波產生折射或受到擾動,駐波也可能因此無法成形或不穩定)。
物體首次成功懸浮前,你需要有點耐心。
正式安裝超音波懸浮器時,你可以用漂亮的外殼包覆它,把它打造成令人欽羨的桌上逸品。
我們的最終版是用五金行買來的18mm(0.7″)銅管製成的。我們將兩個發射器的濾網到濾網之間的距離設計為37mm(約為1½”),這是經過實驗得來的數字。至於你用的是幾毫米,數值可能會有所不同。
假如你最後是用L293D晶片來建構電路,整個控制板就能輕鬆置入底座中。右側可以看到12V電源供應器插孔。
祝懸浮愉快!
這個Ultraino開源專題採用類似於超音波懸浮器的方法,不過功能更加強大。該專題由布里斯托大學Asier Marzo博士帶領,使用Arduino Mega控制板和客製放大器來控制置於3D列印盒子裡由64個換能器組成的相位陣列。此裝置能讓液體、晶片和昆蟲等物體懸浮,你可以在Instructables上找到製作細節。
Ultraino專題科學論文中提到許多超音波相控陣列的其他應用,相當引人入勝。其中包括可控式隔空觸覺反饋、無線功率傳輸、參量式揚聲器,甚至還有牽引聲波。 請點此免費線上閱讀。
另一篇和懸浮有關的有趣論文是「微懸浮:多發射器單軸聲波懸浮器」(TinyLev: A multi-emitter single-axis acoustic levitator)。這是Marzo早期製作的專題,用了72個換能器,該專題可於網上查閱。最後這項專題還提供「微懸浮」變化版本(MiniLev),只需要兩個換能器即可,和本專題就更相似了。另外,你也可以看到物理女孩黛安娜(Dianna Cowern from Physics Girl)採訪Marzo的影片,內容非常棒。
Ulrich Schmerold住在德國南部巴伐利亞州。他喜歡用專題創作來驚豔眾人,激發大家對物理的興趣。他的主要工作是製作能幫助身障人士的設備。
(譯:曾筱涵)