Cooking With Sound

All things cooking with sound

I am proposing an interactive desktop learning tool that will teach the user how standing waves and harmonics work.  Through the utilization of two motors, a string, and two potentiometers (one for each motor) the user will be able to cycle from fast to slow to show the various stages of harmony and dissonance in a string of a given length by speeding up and slowing down those rpms.  I was initially inspired by this large scale work by Daniel Palacios

Since the depicted installation experience is on “rails” so to speak due to the program that cycles the standing waves, you can see the kids in the video want to interact with the sculpture, yet there is no way for them to do so aside from merely running around it. I thought it would be nice to make a desktop version that would remedy this and allow for the user to manipulate the waves by fluctuating the speed of each individual motor via large bakelite knobs. I would also like to provide LED feedback under the string to both highlight the waveform, and to provide feedback to the user.  I propose that there would be two settings for the LEDs, one setting would be a strobe effect, which would allow the user to see more clearly the waves in their static state; and the other would give feedback as to the speed of the motors.

 

The parts utilized would be:

  • 2 High rpm dc motors ~ $14.95 each

Motor

 

RS-550s 18v (6v – 24v) DC Motor – High Power & Torque for DIY Projects, Drills, Robots, RC Vehicles

 

  • 1 Length of String ~ Cheap: I may have to play around with what type of string to use.
  • UPDATE: Upon the advice of Ben Light, I am using 16th inch surgical tubing that I got from Canal Rubber for about a dollar a ft.

 

 

  • Acrylic ~ I have this

Motor Attachment

1 sheet of 1/8th or ¼ inch acrylic to be cut into discs to fasten the string to the motors.  I may have to experiment with this application.

UPDATE: I have used 16th inch acrylic

  • Wood ~ $154 for 20 board ft of lumber (Maple) $171 for 20 board ft (Birch)

To build the supports for the motors and the potentiometers into one desktop stand. Maybe Maple or Birch

 

Bakelite Knobs ~ $16.95 set of four

To provide the user with a nice tactile feel to attenuate the motor’s rpm

Set of 4 black round radio knobs with spun aluminum tops – vintage control knobs

$8.95

knobs stainless radio knob w rubber

Giant Bakelite knob with brass insert~$15.00

3.5"knob

 

 

Set of 5 large Bakelite radio knobs with spun aluminum inserts – 2″ diameter console knobs

final knobs

UPDATE: I purchased this knob from the Leeds Electronic Store on Etsy for $7 for 5 knobs

LED’s x 6?

Control: Arduino Uno or Mini, Toggle Switch (on/off), Toggle Switch for LED’s

 

What it will look like:

First SketchAngle Sketch

UPDATE: Project Timeline

Screen Shot 2015-11-27 at 7.05.00 PM

UPDATE: Thorough Bill of Materials

bill-of-materials for pcomp final

UPDATE: Playtesting

This is the first test with the motors on two bench power supplies with the rubber tubing as the oscillation material

UPDATE:Circuit schematic idea for the final product

20151118_143259

UPDATE: System Schematic

System diagram

Testing the pot with the lab for motor control

20151120_154659

Here is the code:

20151120_161118

Left out of the screen (int motorpin = 5)

UPDATE: CODE

Screen Shot 2015-11-30 at 1.59.10 AM

I haven’t added the code for the LED’s yet because I haven’t been able to keep the circuit from overheating yet. :/

This is a test with the same code adding the Larger 12v motor in place of the small motor, with the power separated.

The power from the arduino goes to the pot. The motor is sharing a ground with the bench power.  The bench power positive is going to the 12v motor.

 

I am concerned about the level of amperage that is needed to get the motor spinning, and what the resulting amperage will need to be to get both motors spinning. As you can see the motor is pulling up to a little over 2amps to turn the motor when it is slow, when this doubles due to the second motor being in the system it may be pulling 5 amps which is quite alot for the components I am using.

 

Here is a close up of the circuit that is being used in the video.  I am using a tip 12o transistor in the circuit along with two diodes to prevent backflow of electric into the arduino.

Wiring Code:

  • The red wires in all situations are hot (either 5v from the arduino, or up to 12v from the bench power to the motor)
  • The yellow wire is digital read (A0)
  • The orange wire is pulse width modulation to control the voltage to the motor. (5~)
  • The black wires are the ground (The motor, the bench power, and the arduino share a ground)

 

20151120_184426

This is the complete picture of both circuits for both motors on two arduinos. This is not ideal, but I wanted to have a fail-safe in case there were problems with the two circuits existing on one breadboard and one arduino.

20151123_155451

 

Regrettably, I don’t have any documentation of what happened next but I do have this:

20151127_193750

I migrated the circuits over to one arduino with two breadboards, but there was something wrong with one of the breadboards that was causing a short circuit and led to a couple of changes. I changed from a tip120 transistor to a MOSFET transistor in an effort to make a more robust circuit because the current load was making the tip120 too hot. (or at least that is what I thought until the breadboard for one of the circuits started to burn up where the transistor was plugged in, which has led me to believe that the breadboard may have had a short)

You can see in the video that the amp load is 3+ amps and that is when the motors are already running.  It approaches 5 amps when the motors are getting started.

I have begun to start cleaning up the wiring so it is easier for me to see where things are going since I have migrated both circuits over to one breadboard with heat-sinks on the MOSFET transistors.  I haven’t tried to test this configuration out yet but I am hopeful that this will carry the current loads that I need for the motors to work at top speed.  This weekend I will test this new configuration and try to add an on/off toggle switch to the circuit to give myself an easier way to turn it off on the board.  I also need to start thinking about how to add the LEDs into this picture.

Wiring Code:

  • The red wires in all situations are hot (either 5v from the arduino, or up to 12v from the bench power to the motor)
  • The yellow wire is digital read (A0 and A1 top to bottom)
  • The blue wire is pulse width modulation to control the voltage to the motor. (3~ and 5~)
  • The black wires are the ground (The motor, the bench power, and the arduino share a ground)

20151123_230213

I am concerned given the experimentation with the motor that the only thing that will be visible with the speeding up and slowing down of the motors is the amplitude of the oscillation.  This is not what I was trying to achieve.  The only time the system will display any turbulence, which was the desired result, is when you shorten the length of the rubber hose by placing your hand in it’s rotation.  This is not ideal.  You can however witness the standing wave beginning to pull apart when the motor’s speed is slowed, but it is not as extreme as I had hoped so you can really see the difference between harmonics and dissonance.  C’est la vie for now.

UPDATE:

I tried the new configuration and everything is working somewhat nominally.  I found out that I have been running Mega potentiometers instead of 10k or 5k or 1k potentiometers, which may be the source of my amperage woes.  Also, everything I said about the system not displaying any turbulence has changed as you can see in this new video.  I am not exactly sure why, maybe the rubber is stretching out and making it easier for the turbulence to take place.  Since I changed the potentiometers to 5k potentiometers I am getting more voltage to the circuit as well (not reflected in the video).  It seems like the circuit is happier.  I stumbled across this while watching the bench power when I turned the pots down to the lower setting (closer to 0 in the pwm). The voltage was going up along with the amperage, also the MOSFET transistors were getting hotter due to the heavier amount of work the motors were doing at the slower speeds.  So I have swapped out the pots to 5k pots and the amp load on the circuit is lighter and allows for more voltage to the motors, not sure why, but I have my guesses.

Tomorrow, I will add the on/off switch and add a barrel jack for power to the motors so I can get off of the bench power.  I also need to do the amperage math on adding LEDs and an additional switch to the system to see what type power supply I will need for the final product.

I began the work of the on and off switch and ran into continued problems with the MOSFET transistors I was using.  They are also getting too hot.

I have updated the system with solid state relays

52246-IMG_5533

Here is how I am going to wire it up (sort of), the load is obviously the motors.  I am running the voltage positive from the power supply to the positive on the motors.  I am running the negative back to the load on the switch and then to ground on the circuit board.  The control equipment is the arduino, from the pwm pins back to ground on the circuit board.  Effectively this is wired the same way that the transistors are wired.  The relays are acting as a MOSFET transistor switch,  sending pulses to the relay allowing voltage to pass to the motor which allow the motors speed to be controlled.

ac-ssr

This solution is working with no added heat. This is great news.

Now that the circuit is working the way it should, I am adding the leds and their on off switch.


20151206_221359

This is the code that I am going to use.

int switchPin = 2;              // switch is connected to pin 2
int led1Pin = 12;
int led2Pin = 11;
int led3Pin = 10;
int led4Pin = 9;
int led5Pin = 8;
int led6Pin = 7;

int val;                        // variable for reading the pin status
int val2;                       // variable for reading the delayed status
int buttonState;                // variable to hold the button state

int lightMode = 0;              // What mode is the light in?

int motorpin1 = 3;
int motorpin2 = 5;

void setup() {
Serial.begin(9600);           // Set up serial communication at 9600bps
buttonState = digitalRead(switchPin);   // read the initial state

pinMode(switchPin, INPUT);    // Set the switch pin as input

pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
pinMode(led5Pin, OUTPUT);
pinMode(led6Pin, OUTPUT);

pinMode(motorpin1, OUTPUT);   //Motor 1
pinMode(motorpin2, OUTPUT);   //Motor 2

}

void loop() {

int pot1 = analogRead(A0);
int pot2 = analogRead(A1);
int potvalue1 = map(pot1, 0, 1023, 0, 255);
int potvalue2 = map(pot2, 0, 1023, 0, 255);
analogWrite(motorpin1, potvalue1);
analogWrite(motorpin2, potvalue2);

Serial.println( potvalue2);
delay(10);

val = digitalRead(switchPin);      // read input value and store it in val
// If then statement that defines toggle
// switch state for strobe leds
if (val == 1) {

digitalWrite(led1Pin, HIGH);
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, HIGH);
digitalWrite(led4Pin, HIGH);
digitalWrite(led5Pin, HIGH);
digitalWrite(led6Pin, HIGH);
delay(15);
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
digitalWrite(led6Pin, LOW);
delay(35);
}
else if (val == 0) {
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
digitalWrite(led6Pin, LOW);
}
Serial.println(val);
}

Nothing left to do but fabricate the platform for everything to go on.

I will post more on that process tomorrow.

 

Here is the thing working.  Albeit with a pot acting up.  I removed it and I am getting ok results. I am also leaving out the led’s for now, until I can figure out how to add them to the system in a clean way (fabrication wise).

This is the control box.  I picked it up from the container store.  I have ideas for something better but that will have to come later.  Also I am having a problem with one of the pots (likely due to soldering) so I am leaving it off for now.20151214_112852

The semi finished product.

20151214_112838

Plans for Cooking WIth Sound Project 20151005_182822 20151009_215912 20151009_215919

Above are some of the process photos for this project.  As the project went along I realized that some if not all of what I wanted to achieve was not going to work.

So this project didn’t work out to be as pretty as I would have liked but in the end it does do what I wanted it to do which was show two different frequency waveforms generating a phaseshifting effect.

One of the things that I need to make this project better is a second piezo mic to pic up both of the outputs so that I can “remove” the motor noise and isolate the bell sounds, run them through a spectrometer or oscilloscope and show the phase cancellation.

For my cooking with sound midterm I wanted to do something with additive synthesis and phase shifting oscillators.  Due to the criteria of the project I need to make a sound by analog means.  I have the idea of using singing bowls and motors in a enclosure to try to kill several birds with one stone so to speak.

 

So here is the plan…

Plans for Cooking WIth Sound Project

I will make a mount for the bowls and the motors to exist in, along with a design element of the ohm symbol.

Fab lab laser cutting project… check.

Then, I will make an enclosure with a false wall to house the wiring and breadboard for the motors and LEDs.

Fab Lab enclosures … check.

P-Comp Analog Serial communication … check. (I will update with pictures of the lab that I will be using to do the serial communication with the motors later this week)

Then hopefully the motors will spin felt balls on strings in the singing bowls and make a phase-shifting dual oscillator.

Fingers crossed, Cooking with Sound MidTerm … check.

 

Here is my laser cutting template …

Template for Cooking with sound Project long.psd

I have already made a test run of this in cardboard,

20151005_182822

and had to make adjustments due to not having the specs of the motor mount measurements and the size of the bowls I will have access to.

This template is the template adjusted for the correct motor spindle and motor mount tolerances.  I will likely update this version again when I can get my hands on both of the singing bowls later this week.

20151009_215912 20151009_215919

Progress on the stand for the bowls.

 

It looks like I am going to need rubber feet since the bowl makes contact with whatever surface the stand is resting on.

Also there was a fair amount of cardboard prototyping to get the servo motor opening right, but a little tinkering in both directions and it is finally right.

More pics to come tomorrow.

UPDATE:

 

It took me a while to get back to this since I have been so busy with prepping for midterms but I have some videos to show the “finished” product of this project.

I will post some proper photos of this later this week.