Ultrasonic Array




About: Build your own cutting-edge devices coming directly from UpnaLab. UpnaLab is the future interactive devices lab working with Ultrasonics, electromagnetism, lasers and more.

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.



  • Pocket Sized Contest

    Pocket Sized Contest
  • Epilog X Contest

    Epilog X Contest
  • Trash to Treasure

    Trash to Treasure

84 Discussions


Question 9 days ago

Hi Asier, Thanks for the amazing work. We are trying to repeat the 8*8 array. While we were going to assign the pins. We cannot detect any signal in transducers assignment step with the phase detector. I made two phase detectors both not worked. However both oscilloscope and our hear can detect signal. Would you have any idea what the problem might be?

2 answers

You can try to assign the pins manually (in the flat array is simple, just select them in the order of the channels) and test if you can switch on/off individual transducers. Perhaps some connections between the phase detector and the board are missing? Is the phase detector sending something (you can check the RX,TX leds).

cchen31Direct From The Lab

Reply 6 days ago

Yes I finally found out I missed one connection. Now I can assign the pins, but just part of them. It actually cause the software dead frequently and also there a lot of faliure transducer while I was trying to assign pins. Moreover, I got different results in different trial. Does it mean I should check my driver board soldering work and cable connection?


Question 12 days ago on Step 4

Hi! The link for step 4:Single sided levitation, "simulation file" takes you to the link for the base of the array ("flat 8x8.ai") Any chance you could provide the correct link? Thanks!

1 answer

Question 19 days ago

Edit: never mind. I just found the arduino nano info in the github.
Edit2: New question: How do I know which way the Mosfet Driver is supposed to be soldered?
Question2: Can you clarify more on the amplifier you used for the directional speaker?
I searched for TDA7492P and the results looked different from in the video. Yours has more ports

1 answer
Direct From The LabBernardW24

Answer 17 days ago

The mosfet drivers have a point or dimple or line that needs to be in the same position as the dot that they have in the PCB.
Any amp will do the job although it is not the best way of building a directional speaker. If you are not interested in beamstearing we will publish soon an instructables on directional speakers.


Question 4 months ago

Hello Asier, thanks for sharing your excellent work. We are trying to reproduce the array ultrasonic array but encounter some problems.

We built a hemisphere-shape array with 45 transducers. We have tried all the three fields but no particles can levitate in the field.

- The phase and amplitude are properly assigned using the phase detector.
- Tested all the pins on the driver board. 40KHz square wave signals are correctly amplified.

We used the same transducers your recommended, but after test we find their amplitudes responses under 5Vpp square signals are quite unreliable. The average response is 3.64V and the standard deviation is 0.52V.

Is amplitude the reason for the failure of levitation? Or there is any other possible cause?

If amplitude is the cause. How could we fix it? We have noticed that amplitude correction is not implemented. Do we need to replace trouble transducers to reduce the error?

Thank you very much!

4 answers

Most transducers will have a deviation in amplitude and even phase. That is ok. It may be failing perhaps because the polarity of the transducers was not checked?

Thanks for your reply!

WOW!! We have made it !!!! I can't tell you how excited we are the first time we see the particle levitating in air. It's really COOOOOOL!

The deviation is OK as you said. The real problem is that the numerical controlled DC power we used at first time is not stable at high frequency. It produce a sine noise in driven signal which lead to the failure.

However, the levitation is not stable, still. We have managed to levitate a small particle several times, but it was really hard to find the trapping point and the particle will just fell down after we sent a moving command.

How can we fix it?
- Does the deviation of phase matter?
- Does the polarity of the central transducer matter?(We set all the transducer polarity pointing to the bottom of the hemisphere except the central one. Don't know which direction it should point to.)

Thanks for your excellent work, again!

I have also had noise from the power supply before. In my case, it was either a super cheap power supply or a GND loop, try to remove the GND lead from the power supply, if things are still working there is a GND loop through the VGA of the monitor for instance.

Be sure that in the move panel, the twin trap option is selected and that none of the checkboxes for use Alg of move all are selected. Add a slice to see if the field looks ok. Select all the transducers and switch them off and on to see if the board is actually sending the commands.


We have made it and posted the project, it's so amazing!!

It turn out that some of the TC4427 IC were burned. The apparatus finally works after we replaced those bad chips.

Again, thanks for your kind reply, we can never it without your help!

Hope more wonderful project from your lab :D



9 months ago

Hi Asier!

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

Thank you very much!

1 reply
Direct From The Labayon1748

Reply 5 months ago

A previous version had. Adding a flat reflective surface is just like mirroring the transducers on top.


Question 7 months ago

Dear Asier,
Firstly,thank you for sharing this great project.
I encountered a problem in the last step,when I pressed F2 to send simulation to driver board,nothing happened .But there existed a sound in a very short time.The previous steps had been done as the instructions, by the way.
Could you please tell me where is probably wrong?
Thanks a lot^ ^

5 answers
Direct From The LabEuleT

Reply 7 months ago

What happens if you select all the transducers and switch them off (press s) and on (press w) you should hear a noise when they are switched on. Also if you can check the current consumption you should see it changing. Best.

EuleTDirect From The Lab

Reply 7 months ago

thanks for your kind reply^ ^
I find what goes wrong, when I change the input voltage, the signal(only several mV) is not changing with it. I have checked the DC barrel, and it’s not broken .Is the PCB board’s wire broken? But I can do the transducer assignment.
Could you please tell me where is possible lay wrong?
Thanks again.

Direct From The LabEuleT

Reply 7 months ago

Does this happen for all the channels? Sometimes when the mosfets are not soldered correctly they are not taking DC from the barrel and their output is just from the arduino (5V).

EuleTDirect From The Lab

Reply 7 months ago

Just several channels have about 5V ,and the rest ones only have about several mV , super wired...I guess I have used the wrong tc4427 (AEOA),and I am preparing to resemble a new one.

Direct From The LabEuleT

Reply 7 months ago

TC4427a or MIC4127, be sure that you have orientated them correctly (paying attention to the dot). Otherwise check the legs with the multimeter if the vcc of the mosfet is connected to the vcc of the barrel. GND to GND, that you receive a 5V input signal and that the output is the same but with the voltage of the barrel.