Хабрахабр

Акустическая левитация своими руками

Сегодня я расскажу и покажу, как в домашних условиях повторить эффект ультразвуковой левитации своими руками.
В предыдущих статьях раз, два. Я демонстрировал псевдо левитацию. В этот раз все по настоящему. Начну с теории.

Звуковые колебания

Чтобы понять всю суть эффекта левитации, нужно понять, что такое звуковая волна и стоячая волна.

Акустическая волна распространяется во все стороны и состоит из двух полуволн, положительной и отрицательной. По этому я начну с них. Положительная полуволна представляет из себя зону сжатия или повышенного давления, в дальнейшем я буду ее называть компрессионная, а отрицательная полуволна зону разряжения, назовем ее декомпрессионная.

image

На изображении это наглядно показано. На практике это выглядит так: Диффузор динамика при движении наружу создает компрессию, а при движении во внутрь декомпрессию.

image

Максимальная сила волны создается около диффузора динамической головки и в процессе отдаления от излучателя постепенно теряет свою мощность, чем дальше от динамика тем она слабее.

Если обычная волна теряет свою мощность в процессе распространения в пространстве, то стоячие волны на не больших расстояниях образуют узлы с примерно равной мощностью. Стоячая волна — это волна, которая образуется при наложении двух встречных, совпадающими по фазам и с одинаковой частотой волн. Слабеющая волна усиливается за счет встречной волны. Достигается это за счет складывания разнонаправленных волн. Серым цветом выделены узлы или в нашем случаи полки из стоячих волн. Чтобы понять как это происходит, посмотрите на изображение ниже. На этих полках(узлах) и удерживаются предметы.

image

При температуре 20°C и влажности воздуха 50%, звук распространяется в такой среде со скоростью 340 м/с. Длина волны — это скорость звука разделенная на частоту колебаний. В итоге получаем длину волны 340000 мм / 40000 Гц = 8,5 мм. Резонансная частота колебаний нашего пьезоизлучателя примерно 40 000 Гц. Длина стоячей волны будет такой же 8,5 мм.

Чем меньше расстояние между излучателями, тем мощнее узлы стоячей волны. Излучатели можно располагать на разном расстоянии друг от друга, но оно всегда должно быть кратным длине волны. Так же нужно понимать, что для удержания большого количества предметов в узлах волн и на большем отдалении между ультразвуковыми излучателями, потребуются более мощные пьезо головки. Чем больше пространства между акустическими трансмиттерами, тем больше узлов между ними, но слабеет мощность узлов и наоборот. В этой статье я рассматриваю самый доступный и бюджетный ультразвуковой излучатель. Например от автомобильных парковочных радаров, или от бытовых увлажнителей. Который можно выпаять из дальномера HC-SR04.

Так как на сборку акустического левитрона у меня ушло не более 5 минут. Схема подключения — я использовал Ардуино нано и драйвер моторов MX1508, можно было бы обойтись генератором NE555, а в качестве усилителя для излучателей использовать микросхему MAX232 которая установлена на дальномере HC-SR04, но я для себя избрал более простой путь, который сэкономил мне время. Соединения я произвел набором проводов dupont.

image

Описание скетча Ардуино

Код ничего особенного из себя не представляет. Все сводится к настройке таймера и дерганий ногами порта 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()
void loop () {} ISR (TIMER1_COMPA_vect) // Обработчик прерывания по таймеру
{ PORTD = portD3_D4; // Отправляем значения в порт portD3_D4 = 255-portD3_D4;// Инвертируем значения для следующей отправки в порт
}

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть