Сегодня я расскажу и покажу, как в домашних условиях повторить эффект ультразвуковой левитации своими руками.
В предыдущих статьях раз, два. Я демонстрировал псевдо левитацию. В этот раз все по настоящему. Начну с теории.
Звуковые колебания
Чтобы понять всю суть эффекта левитации, нужно понять, что такое звуковая волна и стоячая волна.
По этому я начну с них. Акустическая волна распространяется во все стороны и состоит из двух полуволн, положительной и отрицательной. Положительная полуволна представляет из себя зону сжатия или повышенного давления, в дальнейшем я буду ее называть компрессионная, а отрицательная полуволна зону разряжения, назовем ее декомпрессионная.
На практике это выглядит так: Диффузор динамика при движении наружу создает компрессию, а при движении во внутрь декомпрессию. На изображении это наглядно показано.
Максимальная сила волны создается около диффузора динамической головки и в процессе отдаления от излучателя постепенно теряет свою мощность, чем дальше от динамика тем она слабее.
Стоячая волна — это волна, которая образуется при наложении двух встречных, совпадающими по фазам и с одинаковой частотой волн. Если обычная волна теряет свою мощность в процессе распространения в пространстве, то стоячие волны на не больших расстояниях образуют узлы с примерно равной мощностью. Достигается это за счет складывания разнонаправленных волн. Слабеющая волна усиливается за счет встречной волны. Чтобы понять как это происходит, посмотрите на изображение ниже. Серым цветом выделены узлы или в нашем случаи полки из стоячих волн. На этих полках(узлах) и удерживаются предметы.
Длина волны — это скорость звука разделенная на частоту колебаний. При температуре 20°C и влажности воздуха 50%, звук распространяется в такой среде со скоростью 340 м/с. Резонансная частота колебаний нашего пьезоизлучателя примерно 40 000 Гц. В итоге получаем длину волны 340000 мм / 40000 Гц = 8,5 мм. Длина стоячей волны будет такой же 8,5 мм.
Излучатели можно располагать на разном расстоянии друг от друга, но оно всегда должно быть кратным длине волны. Чем меньше расстояние между излучателями, тем мощнее узлы стоячей волны. Чем больше пространства между акустическими трансмиттерами, тем больше узлов между ними, но слабеет мощность узлов и наоборот. Так же нужно понимать, что для удержания большого количества предметов в узлах волн и на большем отдалении между ультразвуковыми излучателями, потребуются более мощные пьезо головки. Например от автомобильных парковочных радаров, или от бытовых увлажнителей. В этой статье я рассматриваю самый доступный и бюджетный ультразвуковой излучатель. Который можно выпаять из дальномера HC-SR04.
Схема подключения — я использовал Ардуино нано и драйвер моторов MX1508, можно было бы обойтись генератором NE555, а в качестве усилителя для излучателей использовать микросхему MAX232 которая установлена на дальномере HC-SR04, но я для себя избрал более простой путь, который сэкономил мне время. Так как на сборку акустического левитрона у меня ушло не более 5 минут. Соединения я произвел набором проводов dupont.
Описание скетча Ардуино
Код ничего особенного из себя не представляет. Все сводится к настройке таймера и дерганий ногами порта D Arduino. Для этого переводим Timer1 в режим сброса при совпадении(CTC) и теперь при совпадении значений регистра счета TCNT1 с заданным числом в регистре сравнения OCR1A, будет срабатывать прерывание, в обработчике которого выполняется инверсия всего порта D. После чего счетный регистр обнулитcя и после выхода из обработчика процесс счета запустится по новой.
Нужное нам значение регистра OCR1A рассчитывается следующим образом: так как делитель в регистре TCCR1B выключен, то мы берем частоту тактового генератора 16 000 000 Гц и делим на требуемую нам частоту срабатывания прерывания 80 000 Гц, в результате получаем число 200, это и будет наше значение для регистра OCR1A.
Почему 80 кГц, а не 40 кГц, спросите Вы? Потому, что период в обработчике формируется за два срабатывания прерывания. При первом срабатывании на выходах формируется D3=0 и D4=1, а при втором D3=1 и D4=0.
Код для Arduino
volatile uint8_t portD3_D4 = 8; // единица на D3 и ноль на D4
void setup()
{
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
// Инициализируем Timer1
TCNT1 = 0;
TCCR1A = 0;
TCCR1B = 0;
OCR1A = 199; // Установить регистр сравнения 16 МГц / 80 кГц = 200
TCCR1B = (1 << WGM12)|(1 << CS10); //Устанавливаем режим CTC, без делителя
TIMSK1 |= (1 << OCIE1A); // Включить прерывания таймера
}
void loop () {}
ISR (TIMER1_COMPA_vect) // Обработчик прерывания по таймеру
{
PORTD = portD3_D4; // Отправляем значения в порт
portD3_D4 = 255-portD3_D4;// Инвертируем значения для следующей отправки в порт
}
Комментарии (18)
Protos
27.07.2019 07:14Увидеть бы как меняется направление волн когда колонна из камней колышется при добавлении нового камня
ferosod
27.07.2019 07:35А если дунуть дымом между излучателями, получится визуализировать стоячую волну?
rrust
27.07.2019 20:20интересно сложно ли будет сделать автоподстройку частоты для автоматического достижения резонанса при произвольном расстоянии между излучателями?
CyberBot Автор
27.07.2019 21:08Резонанс нужен только для излучателя, а для подстройки расстояния под частоту, достаточно в программе сделать перерасчет и поднимать излучатель при помощи ШД и шпильки с резьбой. Но для чего все эти сложности?
rrust
27.07.2019 21:13как раз чтобы не перемещать излучатели, подстраиваясь под текущую длину волны, а наоборот подстроить частоту, чтобы достичь стабильной стоячей волны.
Исключить ручную механическую работу, переложив ее на быстродействующий процессор.CyberBot Автор
27.07.2019 21:43Стоячая волна рассчитываться по длине волны, зная расстояние между излучателями, легко вычисляется частота и количество узлов
vagran
27.07.2019 20:26А прямоугольные импульсы не влияют на качество эффекта?
CyberBot Автор
27.07.2019 21:05Я думаю что влияют. Хочу попробовать сделать выход на биполярном транзисторе с дросселем. По схеме повышающего преобразователя. Тем самым увеличится КПД и возрастет мощность в 2-3 раза. Возможно удастся повесить, что нибудь по тяжелее. На выходе сигнал будет близок к синусоиде
yellowknife
Где-то я уже этот ролик видел. Пошел повторять магию. Тут как раз на подоконнике пара дохлых мух лежит.
they all float down here
kalapanga
Да тут на хабре и было уже habr.com/ru/post/432934
Но тот автор указал, что только воспроизвёл проект makezine.com/projects/micro-ultrasonic-levitator
А здесь не сослались ни на того, ни на другого
CyberBot Автор
Я не брал за основу ни один из приведенных Вами проектов.
Почитал по Вашей ссылке, там даже нет подробного объяснения, что такое стоячая волна