Professional Documents
Culture Documents
Acoustic Levitator
by UpnaLab
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:
More details and supplementary information about this levitator
How Acoustic Tractor Beams Work
Acoustic Delay Lines for Compact Tractor beams
Do not forget to watch the attached video. The rst 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:
https://www.youtube.com/user/asiermarzo
Twitter: @AsierMarzo
https://www.youtube.com/watch?v=ABjRnSYw-4k
Kit
Now you can get all the components in this kit:
https://www.makerfabs.com/index.php?route=product/product&product_id=508
https://www.tindie.com/products/Makerfabs/acoustic-levitator-kit/
https://www.robotshop.com/de/de/acoustic-levitator-kit.html
Individual components
We present a list of the necessary components. I have tried to place links for di erent countries. However, the same parts
can be found all around the world, some useful websites are http://www. ndchips.com/ http://www.dx.com/
http://www. ndchips.com/ http://www.lightinthebox.com/ http://www. ndchips.com/
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 le provided in Step 2)
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£ http://amzn.eu/5ey6ty2
3D print the base for the levitator. We used a 0.4mm nozzle and brim but no support. It should be possible to print it in
one piece. A 0.6mm nozzle also provides good results.
Included in this step, you have the rst version (v0 14 x 7.86 x 8.31cm). Or you can use the next version with some
reinforcement in the joints (v1 15.6 x 7.86 x 8.54cm).
You may also want to print the fantastic stand from Je Bearer
Or you can also use a full case to make more robust and look awesome. by Jakub_Nagy
Another cool case by INVESTEGATE
https://www.instructables.com/ORIG/F78/ZW23/JKN8P8JS/F78ZW23JKN8P8JS.stl
View in 3D Download
https://www.instructables.com/ORIG/F9J/3WN6/JKN8P8KG/F9J3WN6JKN8P8KG.stl
View in 3D Download
https://www.instructables.com/ORIG/FDA/5SBH/JKN8P8KE/FDA5SBHJKN8P8KE.stl
You may need to use a le 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.
If you have a multimeter and some copper tape, this method is quite simple to perform.
DO NO TRUST THE POLARITY MARKINGS FROM THE MANUFACTURER!!!
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.
https://www.instructables.com/ORIG/FFW/IH82/J98RXO3E/FFWIH82J98RXO3E.ino
The transducers have polarity and it is important to glue them in the base oriented with the same polarity. Do not trust
Acoustic Levitator: Page 11
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.
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 ngers to
make it lay as at 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).
Wrap the exposed wire in six concentric rings around the legs of the transducers.
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.
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 ux and tweezers to facilitate the
soldering. Tin the other sides of the wires (the side that only has the tip exposed)
Upload the code provided in this step into the Arduino Nano.
https://www.instructables.com/ORIG/FJ1/MSSN/J66Q8UBZ/FJ1MSSNJ66Q8UBZ.ino
Glue the Arduino Nano and the Driver into the base. It is important to use the positions and orientations of the gures.
You will need to solder the DC female connector to the Switch and leave two wires prepared to supply power to the
driver board.
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.
Test that there are no shortcuts between the red and black wires of the levitator.
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.
Connecting the wires as shown in the right should provide optimum performance and minimum power consumption.
Otherwise, swap the red and black wire.
Apply some hot-glue to glue the wires to the levitator for mechanical support.
You can now glue the legs.
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.
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.
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.
72x 16mm 40kHz transducers. Manorshi provides MSO-A1640H10
You can use instead 25kHz transducers, they are weaker but would allow to levitate larger objects. For that use the
simpli ed code attached, and modify it to match your frequency.
https://www.instructables.com/ORIG/F33/JHPQ/J66Q97EF/F33JHPQJ66Q97EF.stl
Download
https://www.instructables.com/ORIG/FW8/AD7J/JEIV6OGA/FW8AD7JJEIV6OGA.ino
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 t most of the printers.
View in 3D Download
https://www.instructables.com/ORIG/F8H/G7VV/J6MGGHMI/F8HG7VVJ6MGGHMI.stl
Thank you
Acoustic Levitator: Page 56
Hi there, I have completed the experiment. I can levitate small pieces of paper.
But It is not levitating the liquid (water) drops. I even tried by increasing the voltage input from 9V
to 12V and then 18V. Could anyone please tell me what can be the reason? or what should I do?
That would be a great help !!
did you mark the polarity of the transducers? What happens with the droplet? It bursts? it just
drops? it does not deatach from the needle?
Thanks for replying!!
I did mark the polarity of all the transducers. The droplet (water) does not detach from the needle
60% of the time. And when it does, it drops.
What could be the problem?
have you tried with a bent needle with the tip removed? One way of measuring if the levitator
performs well is to put one of those silica transparent beads that come in a paper bag to keep
things dry (the smallest you can find), you would need around 9 to 13v to levitate it. Then once
that it is there, you can reduce the voltage until it drops. In a good levitator it will drop at 7v or
lower, if you need too much voltage then either some polarities are wrong, or they are not flat in
their sockets.
Hi there
I love the experiment, but i had a doubt
When you lift and descend the particles, are you variating the voltage provided to transducers, or
what is the explanation behind it? Thanks
Hi,
Try it!
David
Hi my friends,
I am really gratefull to you to share your experience. I have a problem. I hope you can help me.
I used the program for 2 transducers with arduino mega. i connected the A0-A4 to the l298n but i
do not measure 6v. Rather, i measure 0.16 Volt. What could be the problem? I also loaded
tinylev.ino and made the connections but still i measure 0.17 V. Would you help me pls?
The sketch is prepared for Uno or Nano.
Thank you for reply. Do you have any information how to modify to Mega?
Nothing did not work. i do not have an oscilloscope so it is not healty but i do not know what can i
do or should do.
Please see my configuration with the mega above. Some changes I made to the code:
In the loop:
Line104: while(PINB & 0b10000000);
Line105: OUTPUT_WAVE(emittingPointer, 0); buttonsPort = PINB; WAIT_LIT();
Thank you man i think thanks to you i could improved the system. However, when i measure the
legs for bottom device (talking about l298n) there is no voltage difference. for the top there is. i
tried to use just that part. it felt like there is a gravitation effect:). Do you have any suggestions?
You need interference between the wave generated from top and bottom arrays to suspend the
particles. If there is no voltage difference for the bottom legs, first check if there is a short, (use
continuity check on your multimeter) between the red and black rails. Next check if the nana is
Acoustic Levitator: Page 58
outputting a 40 kHz square wave. Lastly, replace the L298 with another one.
Nanos are 3$. Perhaps testing with other ports? https://content.arduino.cc/assets/Pinout-
Mega2560rev3_latest.png
I modified the code to be compatible with the mega 2560. A 9V battery can power both the
TinyLev and Mega, but this quickly drains the battery and acoustic forces become weaker. I didn't
have an oscilloscope, but my NI myDaq device + Labview from college days were sufficient for
detecting polarity/waveforms, though the max sampling frequency is 200 kHz. Waveforms are
output from port F, and the OC1B (outputs sync signal) is located at pin D12. Pins for the buttons
are located from D 50-52. I am also using the 3D printed stand designed by Jeff Bearer. Particle
are stable when stationary, but the up/down movements are a bit unstable and particles fall down
when shifting. I would appreciate some help understanding how the animation sequences were
generated!
Changes to code:
Line12: #define OUTPUT_WAVE(pointer, d) PORTF = pointer[d*N_PORTS + 0]
Line68: DDRF = 0b11111111;
Line69: PORTF = 0b00000000;
Line71: pinMode(12, OUTPUT);
Line72: pinMode(13, INPUT_PULLUP);
Line75: for (int i =50; i < 53; ++i){
In the loop:
Line104: while(PINB & 0b10000000);
Line105: OUTPUT_WAVE(emittingPointer, 0); buttonsPort = PINB; WAIT_LIT();
Hello, building the TinyLev here. I got all the way to the end, everything looked good, and after
running silently for a few moments, a high frequency ticking sound (10's of Hz) begins coming
from the transducers, and the power lights on the motor board and arduino both begin flickering.
Cycling the power sometimes gives 10-30 seconds of operation before the ticking begins. I can
drive either side of the TinyLev from either side of the motor board indefinitely with no problems,
and I'm getting the 40 kHz signals when only one side is connected. Hoping it's a bad motor
board, I've ordered a couple replacements. Any other ideas? Thank you!
Not enough current from the supply? In total it will take around 800mA
Just to close this off, a different power supply fixed the issue in my original post. I used a piece of
plastic mesh to place styrofoam beads instead of tweezers, and got 5 beads floating at once.
This is just fantastic! I'm a teacher, and it will be an incredible way to end the year for my
students. THANK YOU, creators!
A small update- I swapped out the power supply for another 9V one I had, and that seems to
have fixed the ticking issue. The signals look good on both sides, 40 kHz square waves. Not able
to get anything to levitate when placing styrofoam with tweezers, so I'll try a little bit of plastic
mesh as a holder later today.
It's fantastic! I placed the styrofoam bits using a little sheet of plastic mesh as a sort of "spoon,"
after tweezers just didn't work.
I like this build! Are you using only two of the 16 mm transducers or a different type/ frequency?
The transducers seem to be be further than 16 mm apart.
Ha, that it is awesome. Very good work.
First learned about this tech as part of university project last year and wanted one for myself ever
since, finally ordered myself a kit and got it built :)
For people buying the kits with all components to the uk beware, from my experience the power
supply provided is a low quality two-blade NEMA type A model, rated at 9 volts/ 1 amp. Upon
building the kit I made the mistake of using a uk 3 prong adaptor to provide power to the device
using the provided power supply and within 5 minutes had blown the fuse on the supply.
Thankfully, there was no damage to the circuit and the device is running smoothly now that I have
upgraded to a more suitable uk power supply with variable voltage 3 V - 12 V and rated for up to
2.5 amps at 12 V.
Pictured is the stable levitation of 12 EPS beads at 5 V, a seed and some aluminium foil at 9 V
and water at 12 V. This is my first electronics project (I am a chem eng student and studied the
tech with a focus on the fluid dynamics behind it) but as my skills develop I would like to continue
to upgrade the device's phase control capabilities - with my next objective to implement the
acoustic lock system, Acoustic Lock: Position and orientation trapping of non-spherical sub-
wavelength particles in mid-air using a single-axis acoustic levitator — University of Bristol in
order to stably trap non-spherical objects. I would like to know what modifications to the current
design (specifically the code) are required to implement such a system? Is it still possible to
retain the vertical movement functionality while implementing the acoustic lock, or are more
complex electronics required to facilitate this?
Excellent work.
I've made the miniLev, but with no results. I've desoldered the transducers from the HC-SR0
(they are marked with T and I've checked polarity), but it can't levitate a tiny telgopor piece.
Fun project and a cool little nerdy conversation piece. Added UV LEDs for effect.
https://www.alibaba.com/product-detail/waterproof-ultrasonic-sensors-16mm-40khz-
long_60379452587.html?spm=a2700.galleryofferlist.0.0.1eba51b5pT7jms
can you tell me which program i have to download for this step please?
actually u should download the ardunio application then the code thats on this website that
@UpnaLab dropped will be opened through the Ardunio applocation
Nano_TinyLev.ino
I made my own retro/steampunk version: I designed the case in Fusion 360. 3D printed it in wood
PLA and then stained it. I swapped the Arduino for a more more powerful Teensy 3.2. It uses
DMA and Flextimers to generate a perfect 40khz signals and the frequency and phases can be
changed on the fly much more smoothly than on the Nano (no click sound). It also uses compact
Pololu motor drivers to drive the transducers. There is a feedback from Teensy DAC pin to the
step up/step down voltage converter so that the micro-controller can adjust the voltage. Since it is
using DMA, there is plenty of compute time left on the chip so it can drive an Adafruit mini TFT
Looks amazing! what would be the difference in the circuit schematic between using the arduino
nano and the teensy 3.2 also would the teensy 3.2 be capable of an upgrade to say the 3.6 or
4.0 or something like that?
Hi. The teensy 3.2 is powerful enough for that project. There are still lots of RAM and compute
power time left available so I do no think using a 3.5/3.6/4.0 would help.
Yes, the DMA on the Teensy MCU is general purpose and is very flexible. It can use a GPIO port
as source or destination. Thus, it is possible to read/write a byte i.e. 8 pins simultaneously. In this
case, I used to it to toggle 4 pins: I just clocked the DMA transfer with an FTM timer, set at 80Khz
and with 2 triggers per period. The first trigger toggles pin 1 and 2 (the first array) and the second
one pin 3 and 4 (the second array). The phase is adjusted by moving the respective positions of
the triggers during a period of the timer.
I do not know much about the ESP32. As far as I can tell from the documentation, it seems that
the DMA controller is less flexible and I think you cannot use GPIO as a destination... However,
on the ESP32, there is a motor control module (MCPWM) that seems quite flexible and it might
be possible to use it in the same manner to drive a couple of arrays.
When you change the phase to move the levitated objects, do you find that there are unwanted
vibrations in the objects or are the objects levitated quite smoothly? Do you have a video of it
working?