Ultrasonic Array




Posted in TechnologyScience

Introduction: Ultrasonic Array

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

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.



    • Casting Contest

      Casting Contest
    • Woodworking Contest

      Woodworking Contest
    • Make it Move Contest

      Make it Move Contest

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


    5 Questions

    hi asier,

    could u tell me if i could replace the driver board with an already existing one for arduino, for example with "h bridge" L298N ? particularly i want to demonstrate standing wave levitation with planar surface and i was wondering if i could achieve it with h bridge and arduino. also can i levitate other materials asides from polystyrene?

    If you check the my other instructables, there are simplified versions that use only an arduino and an L298N as a driver. The tractor beam is considered to be single-sided. If you want a pure flat surface then you need individual phase control, you can also check the tractor beam for the 3D printed tubes device.

    Hello ... Thank you for this amazing project.

    It is very useful..

    I have built a circuit that did generate a 40 kHz frequency by a very simple code for a 7x7 array.. The code only sends 40 kHz square wave to each transducer but with no phase shift of delay. I used the code you provided and followed all instructions but there still seems to be an error you can see it in the picture below.

    Also is it possible if i can get the schematic diagram for the PCB drivers circuit to compare it to the one I have?

    Thank you very much.


    Yes I did.

    I erased that line of code. Seems to be working normally.

    I would also like to ask if I want to operate two opposing arrays of 7x7 transducers, should I use two MEGA arduinos and how should I change the code accordingly?

    Thank you

    1 more answer

    Hi Asier,

    I want to generate standing waves for which the droplet position does not vary so much. Here your ultrasonic transducers are pretty much parallel to each other 'along a line', but in the TinyLev example, the transducers are in a bowl configuration.

    From your videos it appears that there is some wobble in having the transducers NOT in a bowl configuration (https://youtu.be/h0Mh0bIv9Fk?t=8m27s); similarly the bowl configuration for the TinyLev seems to lend itself to more stable drop positions (https://youtu.be/9We1LNf3tes). Is this a real effect, or is the wobble more dependent on droplet diameter than in the transducer configuration?

    Could you explain, briefly, the benefits of each geometry from your findings? I'm thinking that for my research, replicating this instructable yet having them in the TinyLev configuration would be preferable, and wanted to know if there would be any issues with this.

    All the best,

    An interesting project. I'm in the process of making this for possible use in ultrafast spectroscopy of droplets; how do I go about replicating the array base considering there are no dimensions to the image, unless I'm being a bit slow? Is it possible to 3D print the array instead?

    All the best,

    Aha, the dimensions are available in Illustrator by highlighting with the cursor. Fantastic.

    first i have too say, awesome Projekt.

    We would like to build the levitator, but the documentation on the wiring of the driver boards with the transducer array is a little bit inaccurate, or I have overlooked it.
    Can you put a schematic of the driver board online in which I can see which pin has to be connected to which transducer. That would be very helpful, because
    I want to make a PCB insteat of the cables. Thank you.

    Hi Tommy,

    The pin number is like this: https://drive.google.com/file/d/0B3wpLYs5lc3xc3BqZmFReEFZejQ/view?usp=sharing
    Bear in mind that some numbers are missing since some ports from the Arduino are not fully used. Basically, the idea is to use the tinyDevice to do the channel assignment semi-automatically.

    I agree that is quite messy when you just want a flat array. I had schematics and code for a 16x16 integrated flat array: https://www.dropbox.com/sh/mru3ekz2vsq9q2q/AABGDmF6O7i5g2pUHDM1kP4Oa?dl=0
    I am happy to share them if you email amarzo at hotmail.com but they are still quite tricky to make, I am refining the design. I promise I will publish an instructables when they are ready.



    Hi Azier,

    the 3-way PCB connector cannot be found at RS-components (the one in the part list for the array). I can't really recognize which type of connector is needed exactly. Can you please update this information? I think the RS-part-no. is wrong in the document.

    Thank you. Best.

    1 reply

    There was a mistake in the part number:

    I have corrected it to 506-7014


    I'm attempting to build the surface device to produce the tactile sensation. I'm designing and building my own PCB board using the schematic in the article you provided. I have a couple of questions. Is the Vcc going into the circuit a 12 volt DC signal?

    Also, I'm a little lost on using the IDE on Netbeans. You video only provides a couple of seconds worth of information. What steps do I need to take to get the two focal points selected and implemented?


    1 reply

    Yes, the mosfets are powered directly by up to 12V (or up to 15V) you can replace the TC4427a by the MIC4127 for being able to put more voltage.

    If you want to experiment with the tactile sensations I would recommend starting with bowl from the https://www.instructables.com/id/Acoustic-Tractor-... and the driver from https://www.instructables.com/id/Acoustic-Levitato... just by modulating the 40kHz on/off at 200Hz you will feel the focal point. The point is fixed at a spot but it will give you an idea of how it feels, which in my opinion is a little bit disappointing.

    In any case, I am working on releasing a 16x16 integrated array that may be more suited for those tasks.

    HI Asier,

    I asked a question above, and couldnt reply to your reply.

    I did use and select the MEGA, the error is still there. I deleted that line and the code seems to work, is this ok?

    Also if I want to operate two opposite flat 7x7 arrays, how should I change the code accordingly, and should I use two arduinos? If so, how should i connect them so that they are connected in the simulation too?

    5 replies

    If i may ask, what does the "Pin" number refer to? Is it the number of the arduino pin the transducer is connected to?

    if yes, the one assigned during the assignment process does not match the arduino pin number of the transducer. Should i change it on my own?

    I have just added the pin number at the end of Step 3. But luckily the assignment with the nano removes the need to check that.

    Hi Asier,

    Yes, I have. There is nothing else to do?

    How should I connect the 2 arduinos in the simulation software?

    Nothing special to do in the simulation: just be sure to put Max Trans: 128 in the Transducer assignment.

    In the hardware you need to connect the boards like in Figure 6.c https://www.instructables.com/member/Asier Marzo/comments/#C973V33JFMT9SA1

    Be sure to put the jumpers accordingly: the logic supplies are set to 18 V; the sync signal is internal for the first board and external for the rest.

    Hi Asier.

    This is a really interesting Project. Thank you for sharing
    with us.

    I think you made an error with the PCB Dimensions. It
    should be something around 61.2mm by 113.8mm and not 50.8mm by 67.31mm like you
    have written. It would be great if you could change that.

    Thank You

    1 reply

    hi asier,I want to detect the phase situation, without any input.When I run 3D Acoustic the following error, I change how to solve?



    Hi Asier, thanks for sharing this Amazing project !!! I made Acoustic Levitator and it is working perfectly!!

    Now I want to make 'Single-sided Levitation'. I have already ordered 100 pieces of 16mm 40kHz transmitters from Manorshi(MSO-A1640H12T). can I use this transducer for Single-sided Levitation?

    3 replies

    It is hard to make a flat single-sided levitator with 16mm diameter transducers. It is much easier to use them in a bowl configuration https://www.instructables.com/id/Acoustic-Tractor-Beam/

    ohh.. but I wanted to make Single-sided Levitator.So I will have to order 10mm transducers..

    The bowl is single-sided and simple to assemble. The Ultrasonic Array is a little bit hard, I recommend some experience with electronics before starting it. In any case, good luck.

    Another awesome demonstration in sound, wonderful job!

    Hard to say. The driver is around 30£, the arudino MEGA clone is 14£. The acrylic and glue for the standing wave is nothing (3£ aprox) but 60 transducers are going to cost anything from 30£ to 60£.

    If you want a simpler standing-wave levitator you can check the other instructables https://www.instructables.com/id/Acoustic-Levitator/ , a guy put a kit with all the components for 70$.