stm32超声波测距代码_超声波模块另类用法,悬浮,你也能做到
今天,給大家介紹一個
「超酷的DIY聲波懸浮」研究項目。
雖然超聲波懸浮,不能像磁懸浮那樣懸浮比較重的物品。不過能把小泡沫球、水滴或者螞蟻這樣的小物體懸浮起來也是很有意思的。
制作這樣一個簡易的超聲波懸浮器并不需要多少成本,而且材料很容易獲得。你只需要:
- Arduino Nano/UNO
- HC-SR04超聲波測距模塊
- L293D步進電機驅動模塊
拆解超聲波測距模塊
常見的超聲波模塊一般有兩個柱狀頭。一個是發(fā)生器,一個是接收器。我們把它們拆下來。
這里特別提一點,拆下來的柱頭里有圓形的網(wǎng)格,留一個備用。
連接電路
準備好L298N型步進驅動板。 將四個輸入中的兩個連接到Arduino的端口A0和A1,然后連接GND和5V。輸出正負極接兩個發(fā)生器的正負極。
上傳代碼
將下面的代碼上傳到Arduino,Arduino在setup()階段執(zhí)行大部分工作。 首先,它將所有模擬端口設置為輸出。 然后,Timer1配置為觸發(fā)時鐘頻率為80kHz的比較中斷。 每個中斷只是反轉模擬端口的狀態(tài)。 將80kHz方波信號轉換為40kHz的全波循環(huán)。 loop()部分沒有任何操作。
byte TP = 0b10101010;
void setup() {
DDRC = 0b11111111;
noInterrupts();
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 200;
TCCR1B |= (1 << WGM12);
TCCR1B |= (1 << CS10);
TIMSK1 |= (1 << OCIE1A);
interrupts();
}
ISR(TIMER1_COMPA_vect) {
PORTC = TP;
TP = ~TP;
}
void loop() {
}
尋找最優(yōu)距離
接下去是個體力活。我們需要不斷地調整兩個柱頭之間的距離來找到一個能讓小物品完美懸浮起來。 這里需要一些技巧和工具。
首先,這個距離必須完全正確,以產(chǎn)生具有足夠強的高氣壓和低氣壓區(qū)域的駐波。 我們可以使用以下公式估算距離,基于室溫下的聲速,343米/秒:
343,000毫米/秒/ 40,000赫茲= 8.575毫米
所以,這個距離應該是8.575毫米的倍數(shù)。但是發(fā)射器屏幕之間的距離與聲波所包圍的區(qū)域不同,因此結果不會很正確,最終還是需要手動微調的。
所以我們可以把柱頭距離調整到20毫米左右,然后不斷地調整。
這里我們需要制作一個小工具,如下圖,找一跟牙簽用膠水把它合成如圖這樣的小勺。
它會幫你把那些小的泡沫塑料球放在適當?shù)奈恢?#xff0c;因為它在聲學上是透明的。 如果你試圖用手或鑷子,它們可能會干擾傳感器產(chǎn)生的波,使得超生波無法形成或者不穩(wěn)定。
調試
- 如果小泡沫球感覺馬上就能懸浮了,但突然又掉了,可以嘗試用再小一點的泡沫球。而且也不用特別圓的,實驗發(fā)現(xiàn)越不規(guī)則的碎片似乎越容易懸浮
- 如果小物體能懸浮住,但不停地抖動“跳舞”,可以嘗試降低電源電壓,或者串聯(lián)1N4007二極管,每個二極管可以降低0.7V。供電電壓建議在9V-11V之間,最方便當然是用可調節(jié)的電源。
- 如果你成功將泡沫球懸浮了,可以嘗試懸浮不同的物體,還可以嘗試懸浮多個物體。
總結
以上是生活随笔為你收集整理的stm32超声波测距代码_超声波模块另类用法,悬浮,你也能做到的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu16版本安装截图软件Flam
- 下一篇: 黑龙江对口学计算机上机,2009年黑龙江