Visual Beats

From ESE205 Wiki
Jump to navigation Jump to search

Overview


All objects have a set of natural frequencies at which they vibrate. These frequencies have unique standing wave patterns that can be seen by mediums such as sand. The sand vibrates until it arrives at the nodal positions where it comes to rest and collectively result in symmetric patterns. We initially plan on experimenting with an online frequency generator and a metal plate in order to see the different kinds of standing waves we can form.

Butterfly at 528Hz.
One of the patterns produced by our project.

Once we have found specific frequencies that resonate well with the plate, we will choose one frequency and convert it into a tone playable through a button by the works of an Arduino. If this is successful, we will add more buttons with varying tones so that people can play around, creating their own beats in order to “see” what physical form their music takes on.

The Team

  • Sudeep Raj
  • Han Wang
  • Li Gao
  • Will Luer (TA)

Objectives


  • Finding several frequencies that produce symmetric shapes [1]
  • Having at the least one symmetric pattern that is playable on the Arduino button.
    • (Only if the former is successful) Add several more buttons that create shapes at other patterns
  • Balancing the plate
  • Reducing the noise on the plate

Challenges


Most of the hardware we will use can be purchased, but there are still many foreseen challenges we will encounter:

  • We don’t know what the resonant frequencies of our specific plate are, so we will have to find them using a range of frequencies from 20Hz to 2kHz (range is considered in order to stay safe and based on an article that ran a similar experiment)
  • Preventing damage to exciter/amp (clipping, overheating, etc)
  • We may exceed our budget if our trials keep failing, so we need to form detailed plans on how we will run our experiments in order to prevent going over our budget
  • Assembling all our equipment in a neat and organized way for demo (for example: where we will be placing the amplifier and Arduino/circuit board as they are separate compartments to our main apparatus)
  • Perfectly leveling the aluminum plate onto the exciter
  • If we get to the point of adding more than one button: Transitioning between one frequency to another should be smooth and not abrupt

Budget


Owned

Est. Total

  • ~$145

Design & Solutions


Mechanical

  • First design:
The first mechanical design.
The first mechanical design that wasn't meant to be. (Speaker is hidden, but meant to be between PVC and plate)
    • We originally wanted to use a large diameter PVC where the exciter could stick snuggly in on top and surround it by a foam insulator. However, we couldn't conceptualize how we would keep the PVC intact to a platform. We also didn't really understand the process of noise canceling until thorough research showed us that wrapping the PVC in foam would not be as effective. Thus, we had to figure out a new design.
Exciter seen screwed using nuts and glued to the aluminum plate.
  • Second design:
    • Our next plan was to take advantage of the screw hole in the exciter and tighten it between some object using a nut to hold the exciter in place. We had a black pipe with a hole capable of tightening a machine screw and nut between, so we glued the pipe horizontally onto a wooden platform and screwed on the exciter.
View of the aluminum plate/wooden platform within the container.
    • We super glued the exciter's plate onto the center of the aluminum plate.
    • We then placed the platform, equipped with the speaker and plate, into a tub we bought from Walmart to control sand mess.
    • Here, we noticed we were in a bit of an issue as the aluminum plate wasn't as balanced as we expected it would have turned out. The aluminum plate also created a bit of uneasy noise due to not being efficiently sturdy. What would happen is rather than just hearing the sound created by the speaker, we would hear noisiness of the aluminum plate from it's flexibility in vibration.
  • Improvements:
    • In order to tackle balancing and reduction in unwanted noise, we used 2 elastomeric pads placed diagonally from each other at corners of the aluminum plate. We weren't worried about it affecting the patterns as small dampening from the pads should only reduce the infinite peaks at resonance to large and finite, but not change the shapes created. We only bought 2 pads since we wanted to stay under budget and although 4 would have been even better, they turned out to be effective enough in taming the noise and assisting with balance.

Arduino

  • First design:
    • We connected a 12 bit DAC to the Arduino board to convert our digital frequency to an analog in order for the amplifier to the read the signal.
    • Code: We modified a sample code which originally plays a melody from Arduino digital pins. We then added Tone() function to generate a square wave of the specified frequency (and 50% duty cycle) on a digital pin on Arduino board.
    • We started having trouble when we figured that connecting the DAC to the amplifier wouldn't be that simple. Eventually, we figured we could get an 8mm headphone jack breakout board that could connect to our auxiliary cable. Once we received and worked with this breakout board, we had a lot of trouble getting any sound to output from connecting it to the DAC.
  • Second design:
    • There happened to be another DAC within the headphone jack breakout-board and therefore the breakout-board was searching for a digital signal to convert while we kept trying to supply it an analog signal. We decided to remove the original DAC and only hook up a 8mm headphone jack breakout board and a potentiometer. An audio cable then connects the headphone jack to an amplifier.
The circuit connecting Arduino to potentiometer.
The Arduino connected to only the potentiometer
    • Headphone Jack Breakout Board: This headphone jack can send the digital signal to whatever headphone/amp/speak it connects. Although it is a TRRS headphone jack, we only need to connect sleeve and tip pin for this project. For the hookup, we first break off a strip of 4-pins of 0.1" male header and stick the LONG pins down into a breadboard. We then place the breakout board on top so the short ends of the header stick up through the pads. Next we solder each pin using a soldering iron and solder, to make solid connection on each pin. After all pins are soldered, we connect the sleeve pin on the headphone jack to the digital pin on Arduino (which generates the frequency). Then we connect the tip pin to Arduino's ground pin.
    • Potentionmeter: The potentiometer can be used as a variable resistance. Here it will be used to control an electrical potential (i.e., voltage), which the Arduino will be able to read via the analogRead(). Consequently, the potentiometer should be connected to an analog input pin. In our final code we generated four specified frequencies: 110Hz, 494Hz, 496Hz and 528Hz to pin 3 of the Arduino. Here is the tutorial for the hookup.

Theory/Resources/Misc


Reasoning for specific items:

  • The amplifier and subwoofer were chosen based on an article found on in the American Journal of Physics (AAPT)[2]. The article conducted an identical experiment and recommended using an amplifier that outputs at least 15 Watts and thus a sub that can handle such power.
  • We concluded with a thickness of 0.063 for the Aluminum Sheet as as it satisfies the 6 assumptions presented in Kirchoff’s Plate Theory [3]

Reproducibility of different shapes do not rely on the assembly of the setup:

  • The only two factors needed to reproduce a shape found is by using the same frequency and the arbitrary boundary conditions created
    • We will not be experimenting with different boundary conditions and will only be using the center of the plate as the point of excitation (unfortunately, this will reduce the chances of us finding complex symmetrical patterns, but will not restrict us too far);Also, placing our exciter at the center of the plate will buildup the standing waves on the plate, so that the desired sand patterns will be more obvious.

Gantt Chart


Ganttchart(11.4).png

Results


  • We successfully stored and used tones from the Arduino, which are manually accessible by a potentiometer. Out of several patterns we found (from 110Hz – 528Hz), we ended with choosing to show the Circle (110Hz), Vertical Waves(494Hz), Horizontal Waves(496Hz), and the Butterfly(528Hz).
  • The plate wasn't perfectly balanced for the demo due to a last minute fallback. The machine screw that held down the exciter to the platform was the only support that held the speaker upright, and thus eventually ended up unscrewing. This happened right before the demo and caused us too long of a delay to reset the pads causing our plate to be slightly off balance and noisy during the demo.
Circle at 110Hz.
The Circle: 110Hz
Horizontal Waves at 496Hz.
Horizontal Waves: 496Hz
Vertical Waves at 494Hz.
Vertical Waves: 494Hz
Butterfly at 528Hz.
The Butterfly: 528Hz
Comparing Results to Objectives
  • We were able to use the elastomer pads to balance out the plate and reduce the noise emitted by the plate, but weren't able to reset the placement of these in time after our screw came loose right before demo.
  • We were successful in finding quite a few patterns, especially with a complex pattern turning out on 528Hz.
  • Not only did we have one frequency available to play, but were able to demonstrate others during demo.
    • We initially planned on adding more buttons to present the extra frequencies, but since we were limited in pins to use on the Arduino, we resorted to using a potentiometer instead.
Critical Decisions
  • Having only a machine screw hold down the speaker was a very poor choice. It managed to be efficient until minutes before the demo when the screw came loose from the nut and dropped the speaker/plate. We had to dismantle everything off the platform and screw the speaker/plate back on.
  • Initially, we had stored one tone (528Hz) and one melody, that would form a pattern when the frequency was 294Hz, to use on the potentiometer. During the demo, people wanted to see the other patterns so we erased the melody and added 3 extra patterns: .
  • We decided to glue the aluminum plate straight to the exciter’s plate. We could have had even less flexibility and a stronger design if we had screwed them together.
    • One of our reasonings for not changing this was because we were stuck on the idea that the exciter was causing flexibility because it wasn't designed to take on so much weight. Thus, screwing the plate to the exciter might have not made a difference. Although, we should have tried since we were basing it off of a conjecture and especially since Humberto recommended us to do it.
The melody that we didn't get a chance to perform during demo. (Displays a pattern when the melody hits the 294Hz tone)
For the Future
  • Harmonics
    • Starting with one pure tone and gradually adding overtones (harmonics) might be able to manipulate the patterns we see and also give us more tones to play with.
  • Supporting the plate not at the center
    • Currently using center as a support, we could find more interesting patterns at arbitrary areas of our plate depending on where were place the exciter under our plate.
  • More power
    • To find even more complex patterns, we’ll need to play with more speaker/amp power.

References


  1. Rossing, Thomas D. "Chladni’s law for vibrating plates." AAPT. Scitation, June 1998. Web. 7 Sept. 2016.
  2. Jensen, Harald C. "Production of Chladni Figures on Vibrating Plates Using Continuous Excitation." AAPT. Scitation, July 2005. Web. 05 Sept. 2016.
  3. Tuan, P. H., J. C. Tung, P. Y. Chiang, H. C. Liang, K. F. Huang, and Y. F. Chen. "Resolving the formation of modern Chladni figures." IOP Science. N.p., 5 Oct. 2015. Web. 7 Sept. 2016.