Acoustic Tractor Beam





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

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!


  • Microcontroller Contest

    Microcontroller Contest
  • Casting Contest

    Casting Contest
  • Woodworking Contest

    Woodworking Contest

We have a be nice policy.
Please be positive and constructive.

2 Tips

My driver came with the jumpers in a bag. Realize that you need to place jumpers on either side of IN1 and IN4

Yeah, those to enable pair of channels. Most of the times they come already placed but in some cases you need to place them. Good catch.

9 Questions

What would be the most effective way of populating the bottom row. Putting 3 in sync with the 7 on the edge (see crude diagram) on each side? I was thinking about adding a toggle switch to enable them when I needed more power.

Extra Transducers.jpg

I would put them in sync with the 5. Best.


Hello, Asier Marzo.I attempt to import obj file still failed. Click the "import from obj" button and nothing happens.Do you know where the problem is? Thanks.


Paste the obj text in the box and click import from OBJ. There should be only one polygon per transducer.

You say that we do not need to populate the bottom row with transducers. Would it be a better "tractor beam" if we did? Assuming we did the additional wiring, of course.

You can populate them for more power but you will lose a little bit the ability to move the particles up/down.

This is probably a stupid question, but why are you applying input power to one of the jumper pins that enables the regulator? I understand that the jumper needs to be removed so as to not burn out the regulator. Other sites that discuss using the L298N to drive motors warn to remove the jumper if using voltage > 12, but I didn't find any that instructed one to apply power to one of the regulator pins.

I am powering the logic part of the L298N which works at 5V. It is not the most optimum way of doing it but it was the safest for the regulator. In any case, I have put more than 19V in the regulator of the L298N without any problem, if you check the wiring for the single-axis levitator it is much simpler:


excuse me, Asier Marzo,I want to import my own design 3D file into the software, which developed in Java 1.8.I use Solidworks to design the model,and already tried to Convert files to obj format,but not you know how to solve this problem? Can you tell me what 3D software do you use ?

You need to export only the faces of the transducers as an obj, copy this obj and then use the import from obj feature.


Hello Asier,Can you give me a software can apply the formulas which can calculate the phase for each transducers? I think it will use a software can simulate all parameters (pressure, distance and density of particles).thanks

Hello to all, I would like to ask, how it is possible to mix ultrasound waves with audio waves in this acoustic tractor beam, if it is possible ? I would like to add neigh in front of horse sculpture for few seconds. Are the waves enough strong to go through 2-4 mm of wood material ? Thank you for any tip.

Normal sound is ok with it but if it is very loud it will make the bead wobble. Ultrasound will not go through wood, it only goes through metallic grids and most fabrics.

Ive recently lost the charger for the batteries is there any other way to charge them?

Mmm not safely I think, you can get some cheap usb chargers. In the components sections there are some links to it.


Any advice on scaling the dish aray for 10mm transducers?


Hi Asier )))

Have nice project.

Open please information in internet about Grebennikov levitating device. Many year ago he says "his device he used a multi - celled - multicellular - multi-porous object with rhythmically arranged on it some elements"

You can see that from 18 minutes until 23 on that video from YouTube

( )

Open translation first to understand him )))

I think he used acoustic too )))

Dear Asier, this is VERY good tutorial. I can't wait for your about parametric speaker.

1 reply

Glad that you like it. I will try to publish it soon, I just want to be sure that it sounds as good as possible.

Hi Asier, in this levitator you are still using standing waves? Is it a vortex trap? I can't find almost any info sabout single array acoustic tractor beams. Thank you! :)

1 reply


this levitator uses a twin-trap ( Figure 3). vortices can only trap stably very small objects because it makes them spin like crazy. Single-sided levitator are cool but not very powerful. If you need to levitate dense objects I recommend the standing wave lev . I also added the instructions for smal 8x8 phased-array that can generate any beam but it is a little bit tricky to make Best

Very nice instructable! I used some of it in my project to control the vertical position of a particle using computer vision techniques in a raspberry pi and an android app to choose the desired position.


Hi, I have made one and it can levitate a small object. The voltage is 25V. But when I tried to flip upside down, the object dropped. is there anything I can test? Note: I have checked the polarity before soldering.

The voltage of the transducer is 30V rms shown in the datasheet.

May I know the max. voltage you have set? 30 Vrms in our application means 50V max ok? (max voltage for LM298 is 50V)

And Great DIY project BTW. Cheers.

3 replies

And if I use 25kHz transducer, is there anything I have to change? Thx

Yes, I can flip it upside down now. Thx for your help. 3 transducers have reversed response, I have re soldered them and it works fine now. I am sure the polarity was right using the arduino code before soldering, dunno why they have reversed polarity.

I usually use 18V, which is more than enough to flip it upside down. Perhaps those transducers are not as powerful as manorshi's?

If you want to use 25kHz (To levitate larger objects), I would recommend building BigLev (step 23) since 25kHz transducers are weaker than 40kHz and you will need a standing wave. In step 23 I have added a simplified code that cannot move the particles but it is easy to adapt for different frequencies.

I have some questions.

In the code of Arduino if I want to use the 40KHZ signal out of pahse than I should comment out byte pattern = 0b00000000; //all the ports (D0 to D7) will output the same signal

and decoment //byte pattern = 0b10101010; //consecutive ports will have an opposite signal


Another question is can I generate a signal using delay() function?

5 replies


I would recommend delayMicroseconds.


Also could you recommend other methods to check the polarity of a sensor? the above given methods are not as effective for me.

well they do work but it creates a confusion in my mind because it has nothing to do will sellers marks!! The marks there are highly mismatched by my marks.

That is why marking them it is very important, otherwise it will not work very well. Up to date, I have not found a company that marks them correctly.

Hello Asier Marzo,

thank you for sharing the project. I teach programming and
microcontrollers in a local college and we're trying to make a copy of
your levitator. Me and my student made a levitator using your

Our version of the acoustic levitator is almost done, but we're faced
with the following problem: it seems that the levitator does not
generate standing wave needed for stable object levitation. Although
it levitates objects with a reflected wave (it is capable of
levitating objects few millimeters upon a table, with the levitator
faced down), but it cannot hold objects in air when faced up.

Our schematics seems to be okay. We tested the transducers with an
oscilloscope and it shows that working frequency is right (40kHz as
you specified.)

It's worth mention that we're trying to cut down costs of the project
and bought cheaper transducers from China:

The specs for those transducers are quite similar to the specs for
levitators used in your project (e.g. frequency=40kHz, 16mm in size.)

Here's a video of the first test of our levitator:

Could you please point out to additional checks that we may perform to
investigate the problem?


- Artyom

1 reply

Those transducers seem ok. Could you point the bowl into a water surface, that way you will be able to "see" the field. If it looks like a single dimple in the water then some of the OUT1,OUT2,OUT3,OUT4 wires should be swaped. If it looks like two dimples then it is correct () . Figure 3.d If your oscilloscope have two channels you can also try to connect two transducers to the probes and check that the halves of the bowl are emitting out of phase.

I am glad to see this, I want to make it at home. I have one question sir, transducer pair is available at store, one is transmitter and other one is receiver, which one is used in this project? Please help me.

1 reply

Always transmitters. But most of the times receivers and transmitters are very similar so it is fine.
Do not forget our other projects on levitation