Каталог
|
Ультразвукова левітація2021-05-19 Все статьи →Теорія. Стояча хвиля - це хвиля, яка при будь-якій фазі коливань, не поширюється в просторі. Простіше кажучи, стояча хвиля створює напруженість в малій області простору із заданими наперед параметрами. Легкий предмет, який знаходиться між, випромінювачами перебуває ніби в стані левітації Суть проєкту. Проєкт оснований на мікроконтролері atmega328p. В якості ультразвукових випромінювачів було використано УЗ дальнометр та драйвер двигунів для керування основними процесами. Суть цього ефекту в тому, що два випромінювачі розміщені один навпроти одного на відстані кратній цілому значенню довжини хвилі (для отримання стійкого максимума). Видаючи одинакову частоту коливань, випромінювачі створюють в просторі між ними ефект стоячої хвилі.
Комплектуючі:
Збірка установки. Спочатку необхідно розібрати ультразвуковий дальнометр, тобто дістати з нього випромінювачі, та бажано розібрати вже їх, для більшого ККД. Далі потрібно припаяти до них провідки. Другим кроком буде розміщення випромінювачів. Я їх розміщував одне навпроти одного за допомогою третьої руки. Так як було використано модуль ультразвукового дальноміра HC-SR04, в якого резонансна частота дорівнює приблизно 40кГц. При температурі 20°C і відносній вологості повітря 50%, звук поширюється в такому середовищі з швидкістю 340 м/с (340000 мм/с). В результаті отримаємо довжину хвилі 340000 мм / 40000 Гц = 8,5 мм. Тому необхідно розміщувати випромінювачі на довжині кратній 8.5 мм один від одного. Далі необхідно зібрати схему установки. Я, як вже говорив, буду збирати на голому мікроконтролері, тому мені окрім нього знадобляться ще два конденсатори на +- 20 пкФ та кварцевий резонатор на 16МГц. Живлення на мк буде йти від самого дайвера в першому випадку. Але я й лишу схему для простої збірки на Arduino nano. Також до цього проєкту було зроблено модель корпусу для друку на 3D принтері. В основі стоїть 2мм оргскло. Для зміни відстані між випромінювачами потрібно рухати по своїй осі тримачі випромінювачів. Програмна частина. Для розрахунку таймеру в мікроконтролері потрібно взяти тактову частоту кварцового генератора – 16000000 Гц та поділити її на потрібну частоту спрацювання переривань (80000Гц) Оскільки для правильної роботи установки потрібно два періоди для спрацювання регістру порівняння , то чисельне значення перемикання становить - 16000000 / 80000 = 200. Програмний код: 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;// Інвертування значень портк } Якщо питань з тим як вивантажити код питань немає, то як вивантажити його в голий мікроконтролер? Якщо мікроконтролер має вже бутлоадер, то можна залити код стандартними засобами Arduino IDE через USB-UART програматор. Але, якщо мк був голий, тобто без бутлоадера, то необхідно залити код через програматор. Можна в якості програматора використати саму Arduino nano, з відповідним кодом(шук. в інтернеті «програматор з Arduino nano»), або придбати копієчний USBASP програматор. Простіше за все використовувати програму AVRDUDE_prog. Схема підключення програматора та мк: Скомпільований код буде прикріплений до статті. Результат проробленої роботи: Посилання:
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Антон
26.05.2021 17:27:42
Класно, теж пробував: https://www.youtube.com/watch?v=e0Irp9iczqw
|