Acoustic Tractor Beam




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...

Intro: Acoustic Tractor Beam

Tractor Beams are mysterious waves that can attract particles towards the source. Here, we will show you how to build an Acoustic Tractor Beam with components that can be bought directly on the Internet for less than 75$.

With this Instructable you will be able to get in your hands a device that it was only seen on SciFi movies such as Star Wars or Star Trek.

If you want more scientific background on Acoustic Tractor Beams, you can check our Open Access research papers:

Do not forget to watch the attached video in this Instructables.

If you want to build other devices coming directly from the research lab keep in touch:

Twitter: @AsierMarzo

Step 1: Gather the Parts and Tools

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

The circuit is not complicated. Basically, an Arduino will generate 4 half-square signals at 5Vpp 40kHz with different phases. These signals get amplified to 25Vpp by the Motor Driver and fed into the transducers. A button pad can be used to change the phases so that the particle moves up and down. A battery (7.3V) powers the Arduino and the logic part of the Motor Driver. A DC-DC Converter steps-up the 7.3V to 25V for the Motor Driver.


  • 30x 16mm 40kHz Transducers The MSO-A1640H10T are the best but minimum order is 500, they are good so perhaps you can save them for future ultrasonic projects. Alternatively, others 16mm 40kHz transducers will serve (emitters and receivers are pretty much the same) for instance the MCUSD16P40B12RO.

Necessary Tools:

  • 3D printer -> you can use an online service
  • Soldering Iron, Tin and Flux.

  • Drill

  • Hot-glue gun

  • Multimeter

  • Cable Peeler

  • Screwdriver and Pliers.

  • Oscilloscope with two probes (Optional) -> you can get one for less than 50£

Step 2: 3D Print the Bowl

The transducers will be mounted in this bowl. This shape allows to naturally focus the beam.

We used an Ultimaker Extended 2+ with a 0.4mm nozzle and the Normal settings. No support, only brim. It does not need to have a perfect finish so any regular printer should work.

You can also use the case created by DanielN253, it is available in Thingiverse

Step 3: Solder Arduino Headers (upwards If Possible)

Step 4: Program Arduino

Upload the attached program in the Arduino Nano. If you are using a cheap Nano (totally recommendable) you will need to install new drivers, there are usually links in the webpage where you bought it.

Step 5: Charge the Battery

This way when you finish the project it will be at full charge.

Step 6: Cut the Handler

300x45x15mm rectangular piece of wood.

Step 7: Redrill the Bowl

Sometimes the holes are not perfect and are a little bit clogged, re-drill them if it were necessary.

Step 8: Attach the Bowl to the Handler

Drill an initial hole in the handler, attach the central screw and then you will be able to drill the two holes at the sides.

Deattach the bowl, it is more comfortable to attach and test all the components without the bowl. At the end of the Instructables we will reattach it.

Step 9: Screw the DCConverter and the Driver

Close the the drilled holes for the bowl we will place the DC-DC converter at one side and the Driver at the other. Put them and mark with a pen to drill later. Then pass a screw and a nut through the holes of the devices for being able to attach them properly to the wood.

It is very important to leave the OUT side of the Converter closer to the bowl.

Remove the indicated jumper of the Driver and keep it for later.

Step 10: Stick the Arduino

With Velcro tape, double sided tape or just hotglue stick the Arduino below the Driver with the USB port pointing to the right.

Put the jumper between the D10 and D11 pins.

Step 11: Drill Through Holes

Drill two through holes above the Driver.

Drill tree through holes below the Arduino.

We will pass wires through these holes.

Step 12: Solder Wires to the Power Switch

The central pins provides the current to the circuit, the right pins go to the DC barrel and the left ones to the battery connector pins.

Try to use red wires for (+) and black for ground (-) to keep things ordered. Pay attention to where the + and - of the DC barrel go and solder it appropriately.

For the battery connector pins we can use pin headers and a tiny piece of strip-board. Be sure that the wires are not touching each other (use a multimeter), and even put hotglue between them to make them safer.

The power switch provides current to the circuit either from a DC barrel or from the battery.

We can use any DC adaptor between 9V and 12V that can provide at least 2A if you do not want to use a battery.

Step 13: Stick the Battery

With double-sided or Velcro tape. Do not use hot-glue since it could damage the battery. Put it in the same orientation as the image.

Step 14: Connect the DCConverter With the Driver

These wires will pass the step-up voltage (25V usually) from the DCConverter to the Driver.

Step 15: Glue the Power Switch

Step 16: Connect Logic Supply

We will provide 7.4V to the DCConverter IN.

First connect the black ground wire (-) from the central pins of the Switch into the DCConverter IN(-). In the same hole connect the ground for the Arduino.

Then, connect the red (+) wire from the central pin of Switch into the DCConverter IN(+). In the same hole put the VIn of the Arduino, and the logic supply for the converter (pins from where we removed the jumper, very important to connect it into the highlighted pin).

Tining the tips of the wires will facilitate putting several wires in the same hole.

It is also possible to get voltage for the Arduino from the DCConverter. Instead of connecting Converter.IN(+) to Arduino.VIn, we can use DCConverter(5V) to Arduino(V5).

If it is too difficult to put various wires into the sockets of the DCConverter, you can also solder to the pads that are at its sides.

Step 17: Connect Signal Wires

These four wires will transfer the signals from the Arduino into the Driver.

Connect Arduino.(A0,A1,A2,A3) to Driver.(IN1,IN2,IN3,IN4).

Step 18: Button Pad

The button pad is optional, but if you make one you will be able to levitate the particles up and down.

The idea is to have three button pads that when pressed they make contact with ground (the buttons are active low).

Get ground from the Arduino to the common terminal of the buttons. Then, connect each of the buttons to D2(up), D3(down) and D4 (reset position).

Step 19: Set the Voltage to 10V

First Connect the battery (be sure to use the right polarity).

Switch on the device.

Rotate the potentiometer counterclockwise until you see 10V in the display.

In the final device we will use 25V but it is safer for the test equipment to work at 10V. If you use X10 probes then it is alright to use 25V throughout the process.

Step 20: Test the Signals

This step is optional but it is about time to check that everything is working fine.

Get two probes and connect the grounds to a ground of the circuit, temporarily using the button pad ground is one of the easiest options. Remember to put it back when finished.

Before the driver the signals should be 5Vpp and after the driver 10Vpp.

Signals from the same side are in phase while signals from opposite sides should be out of phase.

Step 21: 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 22: Mark Transducers (Obsolete Method)

This method for marking transducers is much easier than the previous one.

Just connect one probe to the transducer.

With a metal wire poke gently and repeatedly the inside of the transducer. Check the signal in the scope, if the first spike goes up, mark the ground leg. If the spike goes down, mark the other leg.

Step 23: Mark the Transducers (Obsolete Method)

The transducers have polarity and they need to be marked. Do not trust manufacturer marks since they can be wrong.

This method is the one contained in the video, but we have an alternative one that is much easier one in the next step.

First take ground and voltage from any of the Driver outputs. Connect them to a transducer and also connect one probe to the same transducer. This probe will capture the emitted signal.

Take another probe and connect it to the transducer that needs to be marked, this will be the received signal.

Put the transducers face to face and check the signals in the scope.

If the signals are in phase, mark the leg connected to ground. If they are out of phase, mark the other leg.

Mark all the transducers.

Step 24: Mount the Transducers

Put the transducers in the sockets with the marked legs pointing upwards (towards the top).

You do not need to populate the bottom row.

Step 25: Wire the Transducers (hard Method)

We need to wire the transducers to deliver power into them.

Measure the needed length for the wire and give three extra hands for connecting it later.

With the cable peeler, partially peel at the correct distance, later these exposed parts will be twisted around the transducers legs.

Once that you have made the cuts with the peeler, redistribute the plastic to keep a uniform length of cooper exposed. Twist the cooper wires to make them more solid. Twist the exposed parts around the transducers legs, apply flux and solder.

Follow the pattern presented in the images. That is, all the grounds are connected together. The red wires of the same half go towards the same side.

Pay attention to the numbers, these numbers correspond to the driver numbers.

Step 26: Wire the Transducers (Simple Method)

It is the similar to the other method but using exposed wire.

Step 27: Test the Transducers

This step is optional but it is convenient to check that all the transducers are connected correctly.

Connect the ground from the bowl into the driver ground (there will be another wire there).

Connect the 4 red wires from the bowl into the outputs of the Driver, respect the numbering.

Connect two extra marked transducers to the scope probes. Be sure to connect the ground into the marked leg (or at least connect the two transducers in the same way). With these transducers we can check the emitted signal of other transducers.

Transducers from the same half of the bowl should emit in phase. Transducers from opposite halves emit out of phase.

Transducers with the wrong polarity should be desoldered, rotated and resoldered.

Step 28: Set Voltage to 25v

Be sure to set the DC-DC converter to 25V using its potentiometer.

Step 29: Attach the Bowl

Now that all the components are in place, it is time to reattach the bowl into the handler.

Step 30: Connect the Wires

Connect the ground from the bowl into the driver ground (there is already another wire there).

Step 31: Switch on and Levitate

Switch on the device, you should be able to feel a little bit the sound, or hear it if you point it into a big chunk of expanded polystyrene or foam.

Using an acoustically transparent sheet or tweezers you can place particles in the centre of the bowl (above 1.8cm approx) and they will be levitated.

Push the buttons to move the particle up or down.

Depending on the size of the particle and how close it is to the bowl, you will be able to levitate it laterally or upside down. It is also possible to levitate particles that are resting on a surface.

Step 32: Building Other Sonic Devices (Optional)

We have presented how to build the most efficient device but there are others that require even less electronics although they are not as efficient in terms of levitation power to watts.

For the following devices you will need smaller transducers, wires and connectors, as well as a different version for the Arduino (that generates always a 40kHZ signal).

Step 33: Coils Device (Optional)

Print the attached STL file. The transducers are fit in the bottom holes and they are all driven with the same signal.

Step 34: Tubes Devices

Print the attached STL file. The transducers are fit in the bottom holes and they are all driven with the same signal.

Step 35: Miscellaneous Files

Raw design files (Inventor)

Sci-Fi Contest 2016

First Prize in the
Sci-Fi Contest 2016

First Time Authors Contest 2016

Second Prize in the
First Time Authors Contest 2016

Arduino Contest 2016

First Prize in the
Arduino Contest 2016

15 People Made This Project!


  • Plastics Contest

    Plastics Contest
  • Audio Contest 2018

    Audio Contest 2018
  • Optics Contest

    Optics Contest

385 Discussions

Asier MarzoAlbertovarela

Answer 5 days ago

Yep if they are the 16mm ones, most of the times they are the same. However for the 10mm diameter transducers they are different.


Question 13 days ago on Step 34

May I ask a question about why at step 34 the tube design have different thickness on each hole? Are they acquire from a specific math calculation?

1 more answer
mustafa yilmaz

Question 19 days ago

hi asier , really nice project. can I ask if is possible to levitate a drop of a liquid instead of a ball of styrofoam with this poject ?

thank you

1 more answer

Question 4 weeks ago

Hi Asier. I built this project yesterday and the ball is being kicked out of the array instead of levitating. I can also hear a faint rhythmic click coming from somewhere (assume a transducer) that is much more pronounced when I play back the video I took with my phone. Do you have any trouble shooting tips please? Quite tricky working with invisible forces!!
(edit: I just read the advice below about testing near water so will also try this) .


4 weeks ago

Hi Asier!I try to connect all wire,but it not work.


Question 2 months ago

Great project - I'm stuck at step 12 though - the 12 AWG wire I ordered is significantly larger than that used in the instructions and video. It is too large for the switch. Can you please verify this is the correct size. Thank you!

1 more answer
Asier Marzowerandall3

Reply 2 months ago

You can use thinner wire if you have it around although I would recommend that it can carry 1Amp. If it does not fit you can cut some of the threads from the wire. Best.

lim jeong

Question 3 months ago on Step 20

Hi Asier,

Please point out the problem of my work.

I made a beam tractor according to your instructions. However, Styrofoam does not levitating. It is only bound to and fro.

I performed the step 20 faithfully. The transmitter was verified with an oscilloscope. I confirmed that the phase by the left connection and the right connection of the transmitter.

I have made an acoustic levitator successfully, so The circuit connection of beam tractor work is connected differently from the manual.

I did not remove the L298N pin in step 16. I connected 5V + and - directly to Aduino on the L298N.
The L298N has a total of three ground connections. The first is transmitter (-), the second is Aduino (-), and the third is DCConvert-out (-).

Is there a problem with this connection?

If there is no problem with this connection, where do I find the cause?

I have not used the product you suggested. Is it a problem with the transmitter?

I guess the transmitter is working normally.
If 25V is supplied to the L298N, should the signal output to the transmitter be 25V?

I look forward to your kind statement. Thank you Asier.
3 more answers
Asier Marzolim jeong

Answer 3 months ago

Have you put the jumper between D10 and D11?

Are all the red lights (arduino and L298N) on?

The signal at A0 arduino should be 5V 40kHz the signal at the OUT1 in the L298N should be 25V 40kHz.


lim jeongAsier Marzo

Reply 3 months ago

I have confirmed everything you mentioned. I could successfully levitate by adjusting the output voltage lower than 25V. When the mass of styrofoam was small, the load was stable when it was smaller than the 25V output. I am still trying to find the proper voltage. I came to think that 25V is not always the right answer.

Thank you Asier.

Asier Marzolim jeong

Reply 3 months ago

IF you have good transducers, 19V could work better.


Question 3 months ago

Yes, sure. I'm trying but the transducers make absolutely no noise. Here are the connections. Thank you

1 more answer
Asier MarzoNadiuskyB

Answer 3 months ago

They look fine, could you check with the scope (ground connected to ground) the signal on A0 of the arduino (it should be square 5vpp 40kHz) and the signal on OUT1 of the L298N (it should be square 25vpp 40kHz). Best.


Question 3 months ago

Hi, thanks for replying. I've tried it with water and nothing happens. Moreover, using DC in the oscilloscope there's no signal from the transducers despite the fact that the multimeter and the oscilloscope show the 25 Vpp in each one of them. All the red lights are on too. I'll try to desolder everything and solder it again with exposed wire. How do I know that the transducers are working? Do they buzz or get hot? What could have happened so that none of them work? Thank you Asier :)

1 more answer
Asier MarzoNadiuskyB

Answer 3 months ago

Before desoldering there are a couple of things to try. You can get a big chunk of Styrofoam (white packaging stuff) and put it in the field, it should make a little bit of noise. Could you take a picture of the connections? Best.


Question 3 months ago

Hi Asier,
I'm having some trouble lately, as, despite having checked all of the conections and having marked the polarity of the transducers with arduino, they do not seem to work at all. I'm using the MSO-A1640H10T, and I feel lost, as I don't know where the mistake might be. I mean, the transducers get 25 Vpp, but they don't levitate anything. Have you got any idea of what might be going wrong?

1 more answer
Asier MarzoNadiuskyB

Answer 3 months ago

Do you have an oscilloscope to connect a transducers and check if things are emitting? Are all the red lights on? Can you point the tractor beam into a water surface and check the deformation in water, it should look like two dimples.