Ultrasonic Array

15,206

66

77

About: Build your own cutting-edge devices coming directly from UpnaLab. UpnaLab is the future interactive devices lab working with Ultrasonics, electromagnetism, lasers and more.

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.

Share

Recommendations

  • First Time Author

    First Time Author
  • Big and Small Contest

    Big and Small Contest
  • Make it Glow Contest 2018

    Make it Glow Contest 2018

77 Discussions

0
None
neuromancer43

Question 25 days ago

Hello Asier, thanks for sharing your excellent work. We are trying to reproduce the array ultrasonic array but encounter some problems.

We built a hemisphere-shape array with 45 transducers. We have tried all the three fields but no particles can levitate in the field.

- The phase and amplitude are properly assigned using the phase detector.
- Tested all the pins on the driver board. 40KHz square wave signals are correctly amplified.

We used the same transducers your recommended, but after test we find their amplitudes responses under 5Vpp square signals are quite unreliable. The average response is 3.64V and the standard deviation is 0.52V.

Is amplitude the reason for the failure of levitation? Or there is any other possible cause?

If amplitude is the cause. How could we fix it? We have noticed that amplitude correction is not implemented. Do we need to replace trouble transducers to reduce the error?

Thank you very much!

4 answers

Most transducers will have a deviation in amplitude and even phase. That is ok. It may be failing perhaps because the polarity of the transducers was not checked?

Thanks for your reply!

WOW!! We have made it !!!! I can't tell you how excited we are the first time we see the particle levitating in air. It's really COOOOOOL!

The deviation is OK as you said. The real problem is that the numerical controlled DC power we used at first time is not stable at high frequency. It produce a sine noise in driven signal which lead to the failure.

However, the levitation is not stable, still. We have managed to levitate a small particle several times, but it was really hard to find the trapping point and the particle will just fell down after we sent a moving command.

How can we fix it?
- Does the deviation of phase matter?
- Does the polarity of the central transducer matter?(We set all the transducer polarity pointing to the bottom of the hemisphere except the central one. Don't know which direction it should point to.)

Thanks for your excellent work, again!

I have also had noise from the power supply before. In my case, it was either a super cheap power supply or a GND loop, try to remove the GND lead from the power supply, if things are still working there is a GND loop through the VGA of the monitor for instance.

Be sure that in the move panel, the twin trap option is selected and that none of the checkboxes for use Alg of move all are selected. Add a slice to see if the field looks ok. Select all the transducers and switch them off and on to see if the board is actually sending the commands.

Best.

We have made it and posted the project, it's so amazing!!

It turn out that some of the TC4427 IC were burned. The apparatus finally works after we replaced those bad chips.

Again, thanks for your kind reply, we can never it without your help!

Hope more wonderful project from your lab :D

Best

0
None
ayon1748

6 months ago

Hi Asier!

Does this simulation software have the function of adding a reflective surface?

Thank you very much!

1 reply
0
None
Direct From The Labayon1748

Reply 2 months ago

A previous version had. Adding a flat reflective surface is just like mirroring the transducers on top.

0
None
EuleT

Question 4 months ago

Dear Asier,
Hi,
Firstly,thank you for sharing this great project.
I encountered a problem in the last step,when I pressed F2 to send simulation to driver board,nothing happened .But there existed a sound in a very short time.The previous steps had been done as the instructions, by the way.
Could you please tell me where is probably wrong?
Thanks a lot^ ^

6 answers
0
None
Direct From The LabEuleT

Reply 4 months ago

What happens if you select all the transducers and switch them off (press s) and on (press w) you should hear a noise when they are switched on. Also if you can check the current consumption you should see it changing. Best.

0
None
EuleTDirect From The Lab

Reply 4 months ago

thanks for your kind reply^ ^
I find what goes wrong, when I change the input voltage, the signal(only several mV) is not changing with it. I have checked the DC barrel, and it’s not broken .Is the PCB board’s wire broken? But I can do the transducer assignment.
Could you please tell me where is possible lay wrong?
Thanks again.

0
None
Direct From The LabEuleT

Reply 4 months ago

Does this happen for all the channels? Sometimes when the mosfets are not soldered correctly they are not taking DC from the barrel and their output is just from the arduino (5V).

0
None
EuleTDirect From The Lab

Reply 4 months ago

Just several channels have about 5V ,and the rest ones only have about several mV , super wired...I guess I have used the wrong tc4427 (AEOA),and I am preparing to resemble a new one.

0
None
Direct From The LabEuleT

Reply 4 months ago

TC4427a or MIC4127, be sure that you have orientated them correctly (paying attention to the dot). Otherwise check the legs with the multimeter if the vcc of the mosfet is connected to the vcc of the barrel. GND to GND, that you receive a 5V input signal and that the output is the same but with the voltage of the barrel.

0
None
EuleTDirect From The Lab

Reply 4 months ago

Thanks a lot for the tips, I am going to resemble a new one right away ^ ^

0
None
ChaiM4

Question 4 months ago

Hi Asier,

May i know how do you upload an OBJ file? When i pressed import, i am unable to choose the file i want as there is no file selection.

Thanks!

1 answer
0
None
Direct From The LabChaiM4

Reply 4 months ago

Copy and paste the content in the textbox. The obj has to have only the faces of the transducers as single polygons.

0
None
sscolli1

Question 5 months ago

Hi Asier! Thank you for sharing your work! I have some questions concerning the 3D Acoustic SIM part. What does each element produced by the MatlabField option under Utils correspond to? Additionally, how would I use that? (I am interested in creating a plot of the sound field using data provided by the software.)

1 answer
0
None
Direct From The Labsscolli1

Answer 5 months ago

I usually change that part quite a lot. You can check gui/AddTransducerForm.java the function void exportTransducersMatlab() to see what is going on.If you uncomment the part in the beginning it will generate a nice function with one line per Transducer. Then you need the PistonModel.m which is commented at the end of that function.

0
None
Taschenbuch

Question 5 months ago on Introduction

Hey Asier

Thank a lot for publishing your great work, its a really cool project!
We are a small group of students in Switzerland and built both variants of standing-wave Levitaters.

Now we are struggeling a bit with a software issue.
When we try to do the semi-automatic pin assigment, it will fill out all of the parameters correctly except the pin one. How can we fix this? ...In the meantime we did the assigment manualy, so all the other parameters are missing, does this weaken the strength of the field?

We also don't know how to upload the animation to our Arduino. We have adjused all settings, but we dont know were the upload button is.

Some parts of your programm isn't that easy to understand, do you have a manual or something else which could generally help us?

Thanks a lot!!

1 answer
0
None
Direct From The LabTaschenbuch

Answer 5 months ago

Hi,

Can you check that when everything is one (just by connecting the driver board) pin one is emitting?

Doing it manually is fine, in fact phase correction is not implemented yet. Just check that the polarities and the assignment are right (as in the video).

If you click play, the animation will be played because the frames are sent one by one, this is usually enough for most applications. You can also double-click the animation and all the frames will be uploaded (up to 32), then in the Devs tab you can send the exact amount of periods that you want to play each frame.

For the moment I just released the attached video. If one day I get some time, I will improve it a little bit.

Best,

Asier.