Sonolithography: Making Patterns With Ultrasound
by oliverchild in Circuits > Art
6890 Views, 63 Favorites, 0 Comments
Sonolithography: Making Patterns With Ultrasound
Sonolithography is a way to pattern finely sprayed materials onto different surfaces using sound. The way it works is that tiny droplets go through an acoustic field and experience a very slight force towards the field lines. If we spray a mist of dyes and inks into these fields, they will pattern to produce interesting shapes that uncover the invisible acoustic forces.
Sonolithography is something that researchers have been developing and may have applications in cell patterning in biology, patterning of conductive traces and active materials in fabrication, or other fields. It also is just really cool to explore the different aesthetic shapes you can make with it.
In this Instructable I will cover how to build the electronics and transducer array so that you can try making the patterns yourself. The electronics for this project cost less than £100 which is mostly the price of the transducers themselves. It should be possible to re-create the whole system with the tools in a Makerspace or Fablab. Many of the ideas here come from Upna Lab's work making acoustic levitators and other ultrasonic arrays, which have also been documented in their own Instructables and are well worth checking out.
This project supports my TEI paper Tangible Explorations of Sonolithography. Where I use the setup and a tangible controller to iteratively and creatively explore Sonolithography.
Supplies
For the driver electronics to control 16 transducers:
- 2x 830 point solderless breadboard
- 2x 74HC595 DIP16 shift register ICs
- 8x TC4427 DIP8 gate driver ICs
- 8x 0.1uF and 1nF capacitors for decoupling on the gate drivers
- Solid core wire for breadboarding
The transducer array:
- 16x 40kHz 10mm transducers - we use Murata MA40S4S which are fairly expensive, but other transducers such as these Manoroshi ones will also work.
- 2x 400mm lengths of 16-way ribbon cable
- 16x 3-way IDC connector (optional)
- 32x optional male 1x1 Dupont crimps
- A base plate from 300x300mm 3mm acrylic
- 3D printed arms
- m4 x 6mm machine screws
The Atomiser assembly
- An atomiser module
- 3d printed enclosure
- x 5 m2 x 5mm machine screws and nuts.
You will also need a power supply capable of supplying 18V.
A Note on Safety
High Amplitude Ultrasound
Even though the frequencies that the 40 kHz transducers we're using here are well outside the range of human hearing which is usually up to about 20 kHz, it's still worth appreciating that the transducers each output a 130 dB sound. There hasn't been much research done into the long-term effects of exposure to these frequencies, It might still be worth using some hearing protection if you will be playing with this technology for a long time.
Atomised Materials
The materials we put through the atomiser haven't necessarily been designed to be in an aerosol form. Breathing in different substances can be dangerous and have long-term health effects. When dealing with atomised dyes and other materials, I generally wear a respirator and do it in a well-ventilated environment.
Pico Driver Circuit
The electronics for this project can all fit onto a couple of breadboards. A more robust solution would be to design the control electronics as a PCB but we opted to present it as a breadboard project so that others can easily make their own and modify it with little investment.
A Raspberry Pi Pico provides the main control for the board. To control all 16 transducers the waveforms are serialised and sent to a couple of shift registers that control the gate driver ICs. The gate drivers take the digital signal and amplify it to a 0-18V pulsed wave to drive the transducers. The transducers take the digital square wave and produce a sinusoidal pressure wave due to the mechanics of the resonating disk.
Power:
There are two voltages in this project: 3.3V supplied by the Raspberry Pi Pico that is used for all the control electronics, which is derived form the USB power to the Pico; and 18V which needs to come from an external supply that is what actually drives the transducers.
Signals
We make use of the Raspberry Pi Pico's Programmable IO (PIO) to serialise the waveform data for each of the transducers. This works by having a separate piece of code that runs in parallel with the main processing on the pico that's only role is to read the wave form data and set up the appropriate timing to send the signals to the shift registers.
Capacitors
The gate drivers need to be protected from voltage spikes, so we use a pair of decoupling capacitors per driver. (These aren't shown in the first fritzing diagram because they cover the drivers.
Wiring
For connections between parts of the breadboard, we use solid core wire because this fits well into the holes of the breadboard. For the wires going to transducers we used ribbon cable instead to avoid creating a rats nest. This doesn't come as solid core wire so either you can strip and tin the ends with a bit of solder to make it all one piece that fits into the holes of the breadboard or you can crimp the ends with dupont connectors.
Transducer Array
The arrangement of transducers is up to you. In my setup, I use an acrylic baseboard with holes for transducer mounts to be screwed into which allows for some reconfigurability.
I have a number of different boards for different shaped arrangements. In practice, I've found that radial arrangements work best so that all the transducers are an equal distance from a central point, but there's definitely room for exploration.
The baseboards were cut on a laser cutter out of 3mm acrylic, then the holes had to be threaded using a thread-cutting drill bit. DXF files for our different boards can be found attached.
The transducer arms were 3d printed in PLA. and have little clips for holding the wires down.
Each transducer has polarity and it isn't the same between transducers in Upna Lab's guide they explain clearly how to work this out.
Firmware
The firmware for the Raspberry Pi Pico is all written in C using the Pico C SDK. This is because the timing for serialisation of the transducer waveforms needed some very low-level timing requirements which are only accessible through the C SDK.
What the program does is constantly listen to the USB and UART serial inputs for phase and amplitude data. When it gets new information, it populates an internal wave buffer that is constantly being transmitted to the shift registers by the PIO workers.
The firmware is up in this Github repository along with the source.
To upload the firmware to your Pico, hold down the reset button while plugging it into your computer. It should come up as a removable drive, you can then drag the uf2 file onto the removable drive and it will restart and start running the program.
Atomiser Assembly
To produce a mist that will be patterned, you need something that makes small enough droplets that aren't moving too quickly. I use an atomiser or nebuliser that is traditionally used in humidifiers, they work by vibrating a metal disk with microscopic perforations and pushing out small droplets. You can buy just the electronics and disk for not too much money, and the disks are replaceable if they get clogged.
I've designed a little reservoir and mount for the electronics. I use a plastic bottle to funnel the droplets towards the patterning surface. this slows them down and reduces the amount of mess.
The reservoir can be printed in PLA on a traditional FDM printer or with resin on an SLA printer and needs m2 machine screws and nuts for assembly.
Controlling the Transducers
Controlling the phase shift and amplitude of each of the transducers can be done in various ways through the serial interface. I've built a controller I call the Orbogrpah - it's a set of slider and rotational potentiometers that control the relative phase and amplitude of each transducer. It's a lovely device and nice that the whole system is self-contained between the transducer array, driver circuit and controller. The idea is that by having a physical controller you have some level of tangible feedback.
You can find the design files attached for the Orbograph, but in keeping with the theme of making a low-cost and accessible introduction to sonolithography, I've also built a web interface that you can use to control sonolithography arrays
You can host it on your own machine by using the code in the Github repository.
The interface uses WebSerial so by accessing it using a supported browser (Chrome or Edge) you can connect to the device.
Creating Patterns
Now that you have all the parts necessary, you can start using the system to make patterns. Power up the driver circuit with both the USB power for the raspberry pi, and 18V for the transducers. Place a piece of paper or something else underneath the transducer array, and start the nebuliser. You pretty quickly see a pattern immerge.
Changing the parameters and switching round transducer positions will give different patterns. Many configurations will be too chaotic to produce more aesthetically pleasing images, but there is lots of exploration to be done.