今天,给大家介绍一个
「超酷的DIY声波悬浮」研究项目。
虽然超声波悬浮,不能像磁悬浮那样悬浮比较重的物品。不过能把小泡沫球、水滴或者蚂蚁这样的小物体悬浮起来也是很有意思的。
制作这样一个简易的超声波悬浮器并不需要多少成本,而且材料很容易获得。你只需要:
- Arduino Nano/UNO
- HC-SR04超声波测距模块
- L293D步进电机驱动模块
拆解超声波测距模块
常见的超声波模块一般有两个柱状头。一个是发生器,一个是接收器。我们把它们拆下来。
这里特别提一点,拆下来的柱头里有圆形的网格,留一个备用。
连接电路
准备好L298N型步进驱动板。 将四个输入中的两个连接到Arduino的端口A0和A1,然后连接GND和5V。输出正负极接两个发生器的正负极。
上传代码
将下面的代码上传到Arduino,Arduino在setup()阶段执行大部分工作。 首先,它将所有模拟端口设置为输出。 然后,Timer1配置为触发时钟频率为80kHz的比较中断。 每个中断只是反转模拟端口的状态。 将80kHz方波信号转换为40kHz的全波循环。 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() {
}
寻找最优距离
接下去是个体力活。我们需要不断地调整两个柱头之间的距离来找到一个能让小物品完美悬浮起来。 这里需要一些技巧和工具。
首先,这个距离必须完全正确,以产生具有足够强的高气压和低气压区域的驻波。 我们可以使用以下公式估算距离,基于室温下的声速,343米/秒:
343,000毫米/秒/ 40,000赫兹= 8.575毫米
所以,这个距离应该是8.575毫米的倍数。但是发射器屏幕之间的距离与声波所包围的区域不同,因此结果不会很正确,最终还是需要手动微调的。
所以我们可以把柱头距离调整到20毫米左右,然后不断地调整。
这里我们需要制作一个小工具,如下图,找一跟牙签用胶水把它合成如图这样的小勺。
它会帮你把那些小的泡沫塑料球放在适当的位置,因为它在声学上是透明的。 如果你试图用手或镊子,它们可能会干扰传感器产生的波,使得超生波无法形成或者不稳定。
调试
- 如果小泡沫球感觉马上就能悬浮了,但突然又掉了,可以尝试用再小一点的泡沫球。而且也不用特别圆的,实验发现越不规则的碎片似乎越容易悬浮
- 如果小物体能悬浮住,但不停地抖动“跳舞”,可以尝试降低电源电压,或者串联1N4007二极管,每个二极管可以降低0.7V。供电电压建议在9V-11V之间,最方便当然是用可调节的电源。
- 如果你成功将泡沫球悬浮了,可以尝试悬浮不同的物体,还可以尝试悬浮多个物体。