Introduction: Acoustic Levitator

Picture of Acoustic Levitator

Use acoustic waves to hold in mid-air samples such as water, ants or tiny electric components. This technology has been previously restricted to a couple of research labs but now you can make it at your home.

If you want more background and details you can check our Open Access papers:

Do not forget to watch the attached video. The first video is the instructions whereas the second one is a fantastic video by Physics Girl explaining the physics behind it.

If you want to build other devices coming directly from the research lab subscribe or get in touch: Youtube:

Twitter: @AsierMarzo

Step 1: Gather the Components

Picture of Gather the Components


Now you can get all the components in this kit:

Individual components

We present a list of the necessary components. I have tried to place links for different countries. However, the same parts can be found all around the world, some useful websites are

  • 72x 10mm 40kHz transducers. Manorshi provides MSO-P1040H07T at a very good price, minimum order is 500 but they will ship with less at a higher price. Also Ningbo has good ones FBULS1007P-T
  • 1x 3D-printed TinyLev support. (STL file provided in Step 2)
  • 1x Arduino Nano (US UK)
  • 1x L298N Dual Motor Drive Board (US UK)
  • 1x 130x90mm sheet (wood or acrylic) for the base of the driver board.
  • 1x power switch
  • DC adaptor variable between 7V and 12V
  • DC female connector
  • Jumper wires
  • 12AWG black and red wire
  • 24AWG black and red wire
  • 24AWG exposed wire (UKUSA)
  • Some Expanded Polystyrene beads to levitate (between 1mm and 3mm diameter)
  • An acoustically transparent material: A metallic grid, very thin fabric or teabag paper.

Necessary Tools

  • 3D printer -> you can use an online service
  • Soldering Iron, Tin and Flux.
  • Hot-glue gun
  • Multimeter
  • Cable Peeler
  • Screwdriver and Pliers.
  • Drill
  • Oscilloscope with two probes (optional) -> you can get one for less than 50£

Step 2: 3D Print the Base

Picture of 3D Print the Base

3D print the STL file included in this step. We used a 0.4mm nozzle and brim but no support. It should be possible to print it in one piece.

Step 3: Clean the Base

Picture of Clean the Base

You may need to use a file to clean the edges around the levitator and clean the sockets. A Dremel will do the job faster. You may also want to drill a hole in the centre of each side, this will allow to insert a camera, a needle or evacuate liquids.

Step 4: Mark Polarity (Recommended Method)

Picture of Mark Polarity (Recommended Method)

The easiest way to mark the polarity is to use the Arduino itself. This method does not require an oscilloscope or to poke the transducers inside.

Install the code from this section into the Arduino. Connect one wire to A0 and another wire to GND.

While the Arduino is connected to the PC, run the Serial Plotter (Tools->Serial Plotter) and be sure that the speed is set to 115200.

When a transducer is connected between A0 and GND the signal will do one of the following things:

  • Signal goes down or remains at 0. Then, mark the leg connected to GND.
  • Signal goes up or remains at 1023. Then, Mark the leg connected to A0.
  • It is important to not touch the transducers leg or the wires while doing that or the values will reset.

If it is still not possible to detect the polarity, poke the inside of the transducer with a thin wire and check if the spike goes up or down (like in the obsolete method). Spike up -> mark A0 leg, spike down -> mark GND.

Step 5: Mark Polarity (Obsolete Method)

Picture of Mark Polarity (Obsolete Method)

The transducers have polarity and it is important to glue them in the base oriented with the same polarity. Do not trust the marks made by the manufacturer, they are not reliable at all. The easiest way is to connect a transducer to an oscilloscope and poke the inside with a thin wire. If the spike goes up, mark the leg connected to the positive part of the probe. If the spike goes down, mark the leg connected to ground. You can use two stripes of copper to make this process faster. After all, you will need to mark 72 transducers.

Step 6: Glue the Transducers

Picture of Glue the Transducers

Apply a little bit of hot glue on the side of the socket (if you apply glue near the holes for the legs, the legs will be covered in glue when you push the transducers through), push the transducer in and apply some pressure with your fingers to make it lay as flat as possible in the socket.

It is very important that all the marked legs are pointing towards the centre of the device (where the hole is).

Step 7: Wire the Transducers

Picture of Wire the Transducers

Wrap the exposed wire in six concentric rings around the legs of the transducers.

Step 8: Solder

Picture of Solder

Solder the pins to the wires.

Step 9: Prepare 4 Long Wires

Picture of Prepare 4 Long Wires

Now, we need to make the wires that connect the transducers to the driver board.

2 red wires and 2 black wires. They need to be around 1 meter. In one side there is only the tip exposed. On the other side there are 3 segments exposed, in the video it is shown how this can be done.

The side with 3 segments will go into the transducers rings and the side with only the tip will go into the driver board.

Step 10: Solder Long Wires

Picture of Solder Long Wires

Solder the long wires to the transducers. The side with the 3 segments exposed goes into the transducers, one segment for each ring. Each side of the levitator has a black and a red wire. You can use flux and tweezers to facilitate the soldering. Tin the other sides of the wires (the side that only has the tip exposed)

Step 11: Solder Arduino Headers

Picture of Solder Arduino Headers

Solder the headers of the Arduino, backwards if possible.

Step 12: Program the Arduino

Picture of Program the Arduino

Upload the code provided in this step into the Arduino Nano.

Step 13: Glue Arduino and Driver

Picture of Glue Arduino and Driver

Glue the Arduino Nano and the Driver into the base. It is important to use the positions and orientations of the figures.

Step 14: Create the DC Supply

Picture of Create the DC Supply

You will need to solder the DC female connector to the Switch and leave two wires prepared to supply power to the driver board.

Step 15: Glue DC and Wiring

Picture of Glue DC and Wiring

Glue the DC connector and the switch.

Connect the red wire from the supply into the 12V input of the driver.

Connect the ground from the supply into the middle connector of the driver, also insert a male-female jumper there.

Insert a male-female jumper into the 5V input of the Driver.

Connect the male-female jumpers that we connected to the driver into ground and 5V of the Arduino.

Connect 4 female jumpers from the Arduino (A0,A1,A2,A3) into the inputs of the driver (IN1,IN2,IN3,IN4).

Connect a female-male jumper into ground of the Arduino, this jumper can be connected to D2, D3 or D4 to move the particles up, down or reset them to their original position.

Step 16: Test the Driver

Picture of Test the Driver

When powered (always between 6V and 12V) the output signals of the driver (IN1&IN2 or IN3&IN4) should output a 40kHz square wave of twice the voltage provided to the circuit.

Step 17: Test for Shortcuts

Picture of Test for Shortcuts

Test that there are no shortcuts between the red and black wires of the levitator.

Step 18: Test the Transducers

Picture of Test the Transducers

Connect the levitator to the driver board and switch it on (always provide between 6V and 12V). For testing, 6V will be enough.

You will need two probes with transducers connected (pay attention to connect the marked leg into the positive part of the probe).

Transducers of the same array (side) should be in phase.

You can correct mistakes by cutting the exposed wire and bridging with wires.

Step 19: Test Optimum Resonance

Picture of Test Optimum Resonance

Connecting the wires as shown in the right should provide optimum performance and minimum power consumption. Otherwise, swap the red and black wire.

Step 20: Secure the Wires and Glue the Legs

Picture of Secure the Wires and Glue the Legs

Apply some hot-glue to glue the wires to the levitator for mechanical support.

You can now glue the legs.

Step 21: Levitating Solids

Picture of Levitating Solids

Provide up to 10V. You can use a tweezer to place the particles. Also a metallic grid or thin fabric (acoustically transparent) will be useful since the particles can be placed there and then introduced into the levitator.

Step 22: Levitating Liquids

Picture of Levitating Liquids

It is necessary to adjust the voltage to the type of liquid. Too high and the droplets will pop, too low and they will fall. For water around 9V is enough and for alcohol around 8V.

It is important to place a thin fabric on the bottom to absorb falling droplets, they can damage the transducers.

Place a particle to have a guidance of where to inject the droplets.

A syringe with a bent needle and the tip removed is the best option.

Step 23: BIGLev (optional Device)

Picture of BIGLev (optional Device)

If you want a more powerful levitator you can use the 16mm transducers. The process is exactly the same but you will need to 3d-print the levitator base in 2 part and glue them together (one half is attached in this step). This levitator can take up to 20V in the driver board (40Vpp) and levitate solids of up to 6g/cm3 but it is not as easy to use for liquids.

Step 24: Mid-Lev (Optional Device)

Picture of Mid-Lev (Optional Device)

If you want to use 16mm diameter transducers but BIGLev is too big, you can use MidLev. It uses 16mm diameter transducers but it will fit most of the printers.

Step 25: MiniLev (Optional Ultra Low-budget Device)

Picture of MiniLev (Optional Ultra Low-budget Device)

This solution only requieres an Arduino Nano and two transducers. You can desolder the transducers from a cheap Range Finder HC-SR04.

Install the provided Arduino Code from Step 12. Connect pin D10 to D11. Connect one transducer to A0 and A1; and another transducer to A2 and A3.

Put the transducers opposite to each other to levitate a particle between them, it is easier to place the particle with a metallic grid.


ryan422 made it! (author)2017-12-31

Thanks for the great tutorial, I made a minilev with an Arduino UNO clone and an HC-SR04 module's transmitters. A teabag really helps to position the styrofoam also get something to hold the transmitters thats adjustable. A side note i could actually hear the transmitters when i turned them on, i thought that wasant possible.

ryan422 (author)ryan4222017-12-31

Has anyone gotten a minilev to levitate water?

Johannes Keppler (author)2017-12-31


I tryed to build the mini levitator with my arduino mega but it does not work, I cant levitate anything. Can I use a arduino mega?


Yeah, but MEGA has different pinouts than UNO/Nano
Mega and sometimes different clock speed.

This sketch is for the nano that has the A0-A7 at PortC
The Mega has the A0-A7 in PortF so change all the appearances of
DDRC to DDRF and

isaacsavona (author)2017-12-31

Is there a way to check to see if all the transducers are running without an oscilloscope? I can levitate styrofoam, but I think I can't levitate liquids because I am not able to check each transducer.

SethG20 (author)2017-12-27

How do you get the code onto the Arduino Nano? We keep getting an error message when we try

Asier Marzo (author)SethG202017-12-28

What error?
If you are using an arduino clone you may need to install the drivers for it first.

SethG20 (author)Asier Marzo2017-12-28

we are using the arduino nano that came with the kit.

Asier Marzo (author)SethG202017-12-28

What is the error? Have you selected the correct port and the Nano board. Also you may need to install the drivers linked in this instructables.

Asier Marzo (author)2017-12-28

Yeah, Uno and Nano are the same so it should work fine.

fmarquis made it! (author)2017-12-26

That was today's project. I ordered the kit, everything went well with the built. A few comments :

1- The "obsolete" technique works really well. In my case, I started to get suspicious after the 10th transducer with the correct polarity. Maybe it was the computers or the music making interferences with the arduino, but I ended up checking all the transducers with the obsolete technique and noticed quite a few errors!

2- I use CA glue. Works well.

3- Look a the picture of the first schematic and the picture on step 10. The relative position of the red and black wire is inverted.

4- It is really not obvious that you need a connection between D10 and D11. That is the one thing that prevented my success on the first try.

I highly recommend this built. It does work very well. I have a few transducers left... I'll built myself a minilev!


Asier Marzo (author)fmarquis2017-12-27

That is great work. I will try to make more obvious the connection between D10 and D11.

johnfixesstuff made it! (author)2017-12-26

I built the kit over Christmas break--thank you for making the kit available--it was just not easy to get a low quantity of the transducers at an affordable price without buying 500 and I'd wanted to build one since I saw the first instructable. Sometimes it is difficult to place the first ball. If you drop them in with a tweezer it shoots them off to the side if you don't get the spot correct (and appears that something may not be working correctly)--I found a trick to locating it without the frustration (or confusion)--thread a ball with a fine needle and lower it into place and locate the centerline and nodes and then place the second one with a tweezer...

DavidW769 (author)2017-12-22

You showed that the styrofoam stays levitating in any rotation of the contraption.
Is it possible to introduce the small objects with the levitator in a horizontal orientation?

Asier Marzo (author)DavidW7692017-12-22

Sure. The lateral forces are 5 times weaker than the transversal force ( ), however, styrofoam is so light that you can levitate it in any direction even while shaking the levitator.

sunfun66 (author)Asier Marzo2017-12-24

Hello. What program do you use to control the position of the levitating parts?

sunfun66 (author)2017-12-24

Hello. What program do you use to control the position of the levitating parts?

LêD27 (author)2017-12-21

I have two questions:

1) This uses ultrasonic sound so does it have negative effects on human ears?

2) Are the transducers on both side all transmitters? Or transmitters on one side and receivers on the other side?

Asier Marzo (author)LêD272017-12-21

1) If you do not put your ear inside the levitator it should be fine. Ultrasound is very powerful but very directive. It is hard to find exact max db but take into account that uBeam uses way much more power and is directly beamed at people.

2) They are all emitters.

LêD27 (author)Asier Marzo2017-12-22

then what about the Acoustic Tractor Beam. It's too costly for me to build the Levitator (I'm not ordering the kit because shipping from the US to my country is a pain and the materials here are expensive) so I'm checking out the Tractor Beam one. I assume it'll still be safe to some extent, as long as I'm not waving the Tractor Beam around, or directly to anyone's ears, right?

Asier Marzo (author)LêD272017-12-22

Yeah, it is safe we have built it with kids at schools.

harristotle (author)2017-12-15

Has anyone got this to work on an Arduino Uno? In theory they should, in practice it seems not. I have tried both the tiny-lev array, and the two sensors from sonar SR-04. No levitation of polystyrene. CRO shows output when using a transducer as a sensor and checking all the sensors. Phasing is correct (multimeter method). Very frustrating!
D10-11 all ok. I am wondering if anyone has done it with Uno- they are supposed to be the same but there might be something odd in the firmware.



Asier Marzo (author)harristotle2017-12-16

Hi Leon,

Mmmm do you know if the transducers are emitting something? try to put big chunck of styrofoam and see if it makes noise or if at least pushes the tiny particles. I have seen people working with a Uno. But I imagine if it is the very old version (with different clock speed) it may not work. You can also try this sketch (which does not need D10 connected to D11), it cannot control the phases but it should always get 40kHz regardless of the micro


harristotle (author)Asier Marzo2017-12-19

Hi Asier. Transmitters are emitting at 40.0khz with your dropbox software. On the scope there is also a funny set of spikes about 1.14kHz that are of higher amplitude than the 40kHz. A tiny piece of paper partly levitates, and then falls. When I place a transducer on the scope probes, and measure the sonic field, at the node in the centre it is 40 kHz too, although I get different frequencies above and below this. Strange eh! . I cannot get the HR04 sensors (2 of them) to levitate anything, even though both emit. (One is very much less intense than the other, maybe that is why). I wonder whether I damaged any of the ultrasonic transducers when I tested for polarity, using the poke technique. All are emitting something as tested by scope/ transducer. I will use the arduino-based test and rebuild the array - when I have done this I will report. In summary, Arduino Uno makes signal, I am investigating damaged sensors.



collinleo25 (author)2017-12-07

Hi, I just wanted to know how much volts actually go on both outputs of the motor drive board to the top and bottom arrays. I can't get the device to levitate anything, styrofoam just bounces around.

Asier Marzo (author)collinleo252017-12-08

Hi, you put anything between 5V and 12V into the board. The board works in push-pull so the transducers see double the voltage that you put in, i.e. for a 7V input you get 14Vpp into the transducers, which should be more than enough for levitating styrofoam. Check the video for the particle sizes and how to put them in. Best.

collinleo25 (author)Asier Marzo2017-12-14

Does that mean I can just skip the arduino and the motor drive board, and connect another power supply (9V) to the top? That way i could have 9V on the top and bottom array, because as of now the most I've been able to send is 0.28V to the top and bottom.

Asier Marzo (author)collinleo252017-12-15

nope, the transducer need an AC signal (oscillating at 40kHz) and almost all your power supplies are DC. A multimeter will not be good to measure a 40kHz signal.

SamuelD85 (author)2017-12-12

Hi, thanks for sharing your excellent work. I am having trouble in getting the two transducer levitation set up. I connected the configuration as mentioned and ran arduino program in step 12. I am using Manorshi MSO-P-1040H07T transducer (10mm dia.). The Arduino program loads with no errors, but I see no voltage on the transducer. Can you please let me know how to get it working. BTW, I ordered the kit from makerfab :) thanks for putting it available.

Asier Marzo (author)SamuelD852017-12-13

How do you check the voltage? can you check that the pins to which the transducers are connected are generating the wave? Have you connected pin D10 to D11? Sometimes it is hard to connect the transducers to the wires that go into the arduino. Best.

klettervirus (author)2017-12-06

I made it and designed a simple clip-on foot. I do not want to violate any rights, would it be ok to post the *.stl file somewhere? Would use thingiverse... Its an easy print, ~1hr.

I can send it to you, so you can use it!

NagyD1 made it! (author)2017-12-06

Amazing tutorial. Thanks

benedic2 (author)2017-11-30

Hello, I built the tinylev and it can levitate multiple styrofoam particles, but will not levitate fluids no matter what I try. Any thoughts?

Jakub_Nagy (author)benedic22017-12-03


levitating fluids is a very hard task. I could not get it working the first two weeks, but after some practise, I did it. The key two things when levitating droplets are:

1) The angle of the needle

2) The voltage you put into the levitator

Also, levitating small droplets at high voltage is a lot easier than levitating big at lower voltage. That's because with small droplets, you don't have to care about surface tension. When you put a big droplet inside levitator when voltage is about 12V, the big droplet will immediately break down into hundreds of smaller droplets, and some of them will stay levitating.

Hope that this will help you

BoianM (author)2017-11-28

Thank you!

Just received probably the very first Acoustic Levitation KIT :-)

Hope to start potting it together soon!

Asier Marzo (author)BoianM2017-11-29

Very good luck

Jakub_Nagy made it! (author)2017-11-15


I build a case for the levitator using laser cut MDF. It's very robust and it hides all the electronics inside. It also serves as a stand because of it's rectangular shape. It also has a control panel where a switch can be placed and I also plan to add there a DC-DC step up module with display. I added two LEDs so others can see tiny particles levitating even in dark enviroment. I realy recommend this if you want your levitator to be nice and safe. If you want it to look more futuristic, you can cut it from acrylic, so you can see what's inside. But I like the mdf design more. Here are some pics:

Jakub_Nagy made it! (author)Jakub_Nagy2017-11-24


I'm preparing version 3.0. In this version, I want do add LM2577 (variable step-up converter), li-ion battery and charging module, so it'll gonna run on rechargable batteries. I'll post a separate instructable about how to make this nice little case. Some process pics:

Yokostarling (author)Jakub_Nagy2017-11-22

Would you be able to post a pattern of your case? With dimensions etc of the pieces? I am very interested in creating this for our levitator as well.

Jakub_Nagy (author)Yokostarling2017-11-23

OK. Give me your email adress. But there are some mistakes and I can't fix them because my trial version of corel draw already expired. But I'll try to redraw it in some other program.

Asier Marzo (author)Jakub_Nagy2017-11-15

That is amazing work. One cool option could be to use UV paint (or just highligther) and use UV LEDs. Best, Asier.

Jakub_Nagy (author)Asier Marzo2017-11-15

Did you meant the UV paint for the case or for the particles?

Asier Marzo made it! (author)Jakub_Nagy2017-11-16

The particles

Jakub_Nagy (author)Asier Marzo2017-11-16

That looks very cool. Where did you get the UV paint?

Asier Marzo (author)Jakub_Nagy2017-11-16

Any fluorescent paint does the job. Regular yellow highligther is also fluorescent.

Jakub_Nagy (author)Asier Marzo2017-11-16

Ok. What's the device under the particles? Is it something new? Why are the transducers aranged in such shape?

Asier Marzo (author)Jakub_Nagy2017-11-18

It is a 8x8 flat array, I will publish soon an Instructables about it (it needs a 64-channel board to be controlled). In a tractor beam, when you put several particles they stick to each other in a vertical formation. In the standing wave if you try to put several particles in the same node they will be in a horizontal formation.

bob8898 (author)Jakub_Nagy2017-11-15

looks awesome

bob8898 (author)2017-10-05

Hey Asier! Thanks so much for all of your help, I have all the supplies and have started building. I was wondering how you designed these levitators? I was hoping I could design a small one of my own using only 2 of the transducers.

Asier Marzo (author)bob88982017-10-06

I used the approach described in this paper:

If you put just 2 transducers opposite to each other it will work as long as they are not separated more than 5cm or so.

About This Instructable




Bio: Do you want to build your own cutting-edge devices? Directly from the research lab. Ultrasonics, Electromagnetism and more. Researcher at Bristol University interesting in Ultrasound ... More »
More by Asier Marzo:Ultrasonic ArrayAcoustic LevitatorAcoustic Tractor Beam
Add instructable to: