Ultrasonic Array





Introduction: Ultrasonic Array

About: Build your own cutting-edge devices coming directly from the research lab. Ultrasonics, electromagnetism and more. Researcher at Bristol University interested in Ultrasound and in general any effect that wa...

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

I used a 2mm styrofoam particle and a metallic grid to place it in the trap.

The base of the array is laser-cut: link to github

The simulation file is here:

Step 5: Standing-wave Levitation

With this array the trapping strength is greater so it is possible to levitate liquids.

The base of the array is laser cut: link

and the simulation file is here

Step 6: Haptic Feedback

When the focal point is modulated at 200Hz it is noticeable at our skin.

The base of the array is 3d-printed: link
and the simulation file is here

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.



    • Oil Contest

      Oil Contest
    • Water Contest

      Water Contest
    • Creative Misuse Contest

      Creative Misuse Contest

    62 Discussions


    Question 9 days ago

    Hi Asier! Thank you for sharing your work! I have some questions concerning the 3D Acoustic SIM part. What does each element produced by the MatlabField option under Utils correspond to? Additionally, how would I use that? (I am interested in creating a plot of the sound field using data provided by the software.)

    1 more answer

    I usually change that part quite a lot. You can check gui/AddTransducerForm.java the function void exportTransducersMatlab() to see what is going on.If you uncomment the part in the beginning it will generate a nice function with one line per Transducer. Then you need the PistonModel.m which is commented at the end of that function.

    Hey Asier

    Thank a lot for publishing your great work, its a really cool project!
    We are a small group of students in Switzerland and built both variants of standing-wave Levitaters.

    Now we are struggeling a bit with a software issue.
    When we try to do the semi-automatic pin assigment, it will fill out all of the parameters correctly except the pin one. How can we fix this? ...In the meantime we did the assigment manualy, so all the other parameters are missing, does this weaken the strength of the field?

    We also don't know how to upload the animation to our Arduino. We have adjused all settings, but we dont know were the upload button is.

    Some parts of your programm isn't that easy to understand, do you have a manual or something else which could generally help us?

    Thanks a lot!!

    1 more answer


    Can you check that when everything is one (just by connecting the driver board) pin one is emitting?

    Doing it manually is fine, in fact phase correction is not implemented yet. Just check that the polarities and the assignment are right (as in the video).

    If you click play, the animation will be played because the frames are sent one by one, this is usually enough for most applications. You can also double-click the animation and all the frames will be uploaded (up to 32), then in the Devs tab you can send the exact amount of periods that you want to play each frame.

    For the moment I just released the attached video. If one day I get some time, I will improve it a little bit.




    Question 5 weeks ago

    Hi Asier,

    do you have the STL file for the 8x8-flat-array? There is only one for the spherical cap.
    Thank you!

    2 more answers

    Here is my solution...Use readily available "Generic PCB board" and mount transducers on that. Also you can use 3D printer to make stand(Optional). You don't have to do laser cutting.


    The flat 8x8 is for laser-cutting there is a ai file around. If you want you can pierce the transducers in some fine&rigid cardboard. Best.

    Hi Asier.

    A question regarding the implementation with the Arduino: if I have the Arduino Nano, how could I manage to manipulate the 64 transducers? In theory I need 64 pins. Do you have an instructable that can help me?

    1 more answer

    Nano will give 16 channels at most, in the github there is code for the nano.

    You need the MEGA to control 64 channels.

    hi asier, i was wondering if theres a way i can evaluate the acoustic radiation pressure or force experimentally so i could compare it with the theoretical one ?

    1 more answer

    Hi Asier,

    I tried to order the PCB board with the zip fie you uploaded. However, the salesman told me I had missing file and I also cannot the project with Altium Designer also(trail version). Would you please take a look or briefly explain how to output the broad file?

    2 more answers

    If you're located in the EU, use https://www.eurocircuits.com/. In their online tool you can select the entire zip file and the program automatically recognizes the files. It gives one error with one of the files. In the "build-up" selector select as "function" the "non-assigned" option to this file (I can't remember exactly, but I think it was one of the drilling files. Since there is already another file selected for the drilling location/sizes, this extra one is redundant) . In the general overview, make sure the "number of layers" is 4. The company also checks your files. Good luck!

    I recommend searching through pcbshopper, it is going to be cheaper and they usually support all the formats. I apologize since those files are not mine.

    Hi Asier,

    I have a question about connecting the integrated 8x8 pcb to the driver board (see attached picture from comment below): do you replace the MOLEX 2x8-way female connector by a double row pins of length 8?

    Kind regards,


    2 more answers

    Great, thanks!

    I think there is a link to the connectors to be used in the zip file.

    Hi Asier!

    Does this simulation software have the function of adding a reflective surface?

    Thank you very much!


    Question 8 weeks ago

    Hi, I have a few questions below:

    - Why do we need 3 way pcb connectors for the transducers when the transducers only have 2 pins. And could you share a picture of the underside of the array as you have not shown how and which ports to connect to the transducers. It does not seem that the headers will fit in that space.

    - What is the dimensions for the integrated pcb by Thomas Grooten. Also it is single layered right?


    1 more answer


    - 3 ways because the pitch is 2.53mm, the separation between the legs of the transducers is 5mm, so the middle hole is not used. It is the cheapest and most reliable way I have found to connect transducers to wires in a reusable manner. If you want you can just solder directly the wires.

    - You can see how they connect in Figure 10 https://ieeexplore.ieee.org/document/8094247/

    - The PCB has 2 layer, I do not know about the dimensions but it should appear in the manufacturer.