Introduction: Ultrasonic Array
In this project we will show you how to build a phased-array controller and a flat array of 8x8 elements. These systems can be used for acoustic levitation, haptic feedback or directional speakers.
This is quite a complex project so I would recommend a little bit of knowledge on ultrasonics, computer science and electronics.
Do not forget to check the other Instructables for more information www.acousticlevitator.com
More detailed information in our open paper: http://ieeexplore.ieee.org/document/8094247/
All the detailed steps are in the attached video.
Step 1: Gather the Components
The source code is available here: https://github.com/asiermarzo/Ultraino
You will also find the STL files for the 3D printed arrays and the AI files for the laser-cut arrays.
The PCB files for manufacturing are also there here I recommend to use PCB Shopper to look for a cheap manufacturer. The dimensions of the board are 62mm by 115mm and it has 4 layers. It would be a good idea to order an stencil if you do not want to solder the components by hand.
The BOM can be found here.
Step 2: Assemble the Driver Board
You can solder by hand, or use solder paste and a reflow oven. I am not the most proficient SMD solderer, there are lots of goods tutorials on the Internet.
The code for the Arduino Mega is here
Step 3: Assembling a 8x8 Flat Array
You can find how to mark the polarity of the transducer in the previous Instructable In that Instructables there is also a guide to buy transducers for a reasonable price.
The components can be found here
- You can also use the great integrated PCB from Thomas Grooten.
The last image shows the pin numbers of each pin, luckily you will not need to do the pin assignment manually but using the semi-automatic method shown in the video.
Step 4: Single-sided Levitation
Step 5: Standing-wave Levitation
Step 6: Haptic Feedback
Step 7: Directional Speaker
I used this audio amplifier TDA7492P but anything that you can find will probably do the job.
* This is just a quick way of getting a directional speaker, the sound quality is not great and it is not very powerful. I am working on a dedicated directional speaker that will be released soon.
We have a be nice policy.
Please be positive and constructive.
could u tell me if i could replace the driver board with an already existing one for arduino, for example with "h bridge" L298N ? particularly i want to demonstrate standing wave levitation with planar surface and i was wondering if i could achieve it with h bridge and arduino. also can i levitate other materials asides from polystyrene?
If you check the my other instructables, there are simplified versions that use only an arduino and an L298N as a driver. The tractor beam is considered to be single-sided. If you want a pure flat surface then you need individual phase control, you can also check the tractor beam for the 3D printed tubes device.
Hello ... Thank you for this amazing project.
It is very useful..
I have built a circuit that did generate a 40 kHz frequency by a very simple code for a 7x7 array.. The code only sends 40 kHz square wave to each transducer but with no phase shift of delay. I used the code you provided and followed all instructions but there still seems to be an error you can see it in the picture below.
Also is it possible if i can get the schematic diagram for the PCB drivers circuit to compare it to the one I have?
Thank you very much.
Yes I did.
I erased that line of code. Seems to be working normally.
I would also like to ask if I want to operate two opposing arrays of 7x7 transducers, should I use two MEGA arduinos and how should I change the code accordingly?
Have you selected the MEGA as the target device?
I do not have the uncompiled schematics for this one but a brief schematic for the channel can be found in the paper http://ieeexplore.ieee.org/document/8094247/
I want to generate standing waves for which the droplet position does not vary so much. Here your ultrasonic transducers are pretty much parallel to each other 'along a line', but in the TinyLev example, the transducers are in a bowl configuration.
From your videos it appears that there is some wobble in having the transducers NOT in a bowl configuration (https://youtu.be/h0Mh0bIv9Fk?t=8m27s); similarly the bowl configuration for the TinyLev seems to lend itself to more stable drop positions (https://youtu.be/9We1LNf3tes). Is this a real effect, or is the wobble more dependent on droplet diameter than in the transducer configuration?
Could you explain, briefly, the benefits of each geometry from your findings? I'm thinking that for my research, replicating this instructable yet having them in the TinyLev configuration would be preferable, and wanted to know if there would be any issues with this.
All the best,
TinyLev only needs 2 signals because the focusing is achieved by the position, and the orientation.
In the Ultrasonic Array, you control the phase of each transducer, this permits to focus dynamically.
In Figure 3 http://aip.scitation.org/doi/full/10.1063/1.4989995 they are compared.
Also this video may be useful to understand the differences between electronic phase control and distance phase control: https://www.youtube.com/watch?v=ixXaCD5bf0I
An interesting project. I'm in the process of making this for possible use in ultrafast spectroscopy of droplets; how do I go about replicating the array base considering there are no dimensions to the image, unless I'm being a bit slow? Is it possible to 3D print the array instead?
All the best,
Hi Ryan, do you need to move the droplet in 3D?
If up/down is enough for you, this project is cheaper, stronger an simpler: https://www.instructables.com/id/Acoustic-Levitator/
Aha, the dimensions are available in Illustrator by highlighting with the cursor. Fantastic.
first i have too say, awesome Projekt.
We would like to build the levitator, but the documentation on the wiring of the driver boards with the transducer array is a little bit inaccurate, or I have overlooked it.
Can you put a schematic of the driver board online in which I can see which pin has to be connected to which transducer. That would be very helpful, because
I want to make a PCB insteat of the cables. Thank you.
The pin number is like this: https://drive.google.com/file/d/0B3wpLYs5lc3xc3BqZmFReEFZejQ/view?usp=sharing
Bear in mind that some numbers are missing since some ports from the Arduino are not fully used. Basically, the idea is to use the tinyDevice to do the channel assignment semi-automatically.
I agree that is quite messy when you just want a flat array. I had schematics and code for a 16x16 integrated flat array: https://www.dropbox.com/sh/mru3ekz2vsq9q2q/AABGDmF6O7i5g2pUHDM1kP4Oa?dl=0
I am happy to share them if you email amarzo at hotmail.com but they are still quite tricky to make, I am refining the design. I promise I will publish an instructables when they are ready.