Archives

All posts for the month October, 2015

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

Inspired by Hans Haake’s institutional critique, I wanted to do something with school data in the hopes that I would eventually be able to mine the data for something interesting with possible correlations between schools attended, degrees earned, and loan repayment.

 

I found a website with an api that may be useful, but under the advisement of Jason, I have tried to do something simple on this go around just to get the data working for me.

 

So in this sketch the aesthetics are more important than the data itself.  The school size is mapped to the ellipse size and that’s about it.  I had some problems getting data from anywhere other than New York, but that is something that I can spend more time on and digging into the data dictionary from the site.

Sketch

 

For the fabrication final, I thought I would use some of the tool I had yet to use this semester. The bandsaw. To do this I could use up the dowel I had from last week’s not so dumbbell project. I am going to make a robot.

I am beginning with a dowel and a wire hanger both of which I cut to small pieces.

tmp_15924-20151024_142348-652836717

tmp_15924-20151024_1459441883211621

tmp_15924-20151024_150009-407182252

Then I drilled the holes to plug the wires into. I ended up with something like this.

 

tmp_15924-20151024_155208524276042

tmp_15924-20151024_1552151195283241

Then I apply the paint.

tmp_15924-20151025_1944391923851905

Then some JB weld to connect the parts together on a more permanent basis.

tmp_15924-20151025_1944211852887892

Also, I found out that I needed to use JB Weld from the thistothat.com website which lets you know how to attach one material to another.

Finally I add some special components to the robots and this is the final result.

tmp_15924-20151025_2046181316001364

20151026_111517

 

 

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.

So we were paired up with another classmate to do the pcomp midterm, so much for my plans to overlap my cooking with sound midterm with my pcomp midterm.  C’est la vie.  Anyway Serena is pretty cool and she is great at P5.js so that is going to be a huge benefit to me, since I am not.

We decided that we would make an abstract jellyfish to manipulate with a photo sensor for our project.  Here’s a little sketch of what we are trying to create with a little pseudo code to describe the interaction

20151019_130304

As a response to the challenge to consider how the user would interact with the jellyfish we are going to use a photosensor and put it in a clear acrylic enclosure.  The user will be able to wave their hand over the box and interact with the jellyfish, without touching of course (they might get stung).

 

Here is what the illustrator file is going to look like.

Mid term Template

There will be two of these laser cut from acrylic with the arduino and the breadboard sandwiched in between, using standoffs will provide the height necessary to put the boards in between.

While working on the serial side of things I was having problems with the sensor outputting data.  I ended up figuring out it was my wiring on the board.  I was wired to the rx and tx of the arduino, among other things, thanks Aaron.

UPDATE: As you can see in the video, there was a logistical problem that caused me to have to check out an arduino micro from the ER and use a larger breadboard (the only one I have left), my uno and small breadboard are tied up with my Cooking with Sound Midterm and Serena and I have different schedules which is making it difficult to meet in person.  Not to worry though, we have been communicating by email and text to be able to stay in front of the midterm and on track with Serena who has been working diligently on the P5.js code for the jelly fish.   I also needed to make a new illustrator file for the enclosure to accommodate the changes in accessories.

 

Mid term Template2 long

This will have to accommodate just the breadboard and a micro which will reside on the breadboard, so no worries.

Nothing left to do but cut the acrylic and add the breadboard to it.  I will get to that tomorrow.  Serena has gotten the arduino and the P5 sketch talking properly today and we will be done hopefully with about 24 hours to spare.  Yay!

1O7A9843-1024x576

In the end the project was successful, the girl in the video testing it even said “Oh its a jellyfish!”

There were some aesthetic things that could have been straightened out, but over all I was pleased with the response we got from the class.

For this week’s assignment I was going to make a dumbbell since the project requirements were “make anything with two different materials…NO acrylic NO plywood”

So I started out just fine mixed some concrete as you will see in the video I once again had to rig up some tools since I did this project from home for the most part.

 

I ran into problems due to the change in weather here in NY.  It decided that it was going to be a proper fall and the temperatures this week have been pretty chilly therefore the concrete took way longer to cure than the expected couple of hours or so.  So I had to decide what the dumbbell was going to be.  So it became a stylish key holder for my desk.

 

I belt sanded the end of the dowel added some screw hooks and stained the little guy with some cherry stain.  See the finished product below.

 

 

20151019_091353

I was going to do an enclosure for my cooking with sound midterm this week but I didn’t like the materials I had on hand to use for it so I decided to make a simple enclosure out of an egg salad sandwich box.

20151011_223532

20151011_223542 20151011_223523 20151011_223510

 

It was a good exercise for whipping something up quick to hold a few circuits.

Using an LED strip and some wires and a 9 volt battery and a panel mount switch well you can pretty much see what’s going on in the pics.

 

The “hardest” part about this project was deciding if I was going to mount the 9v to the top of the box along with the panel mount switch.

Change the values of the colors in their relative position to each other at the start on the individual sliders in the dom.

Use value:  slider1.value(), slider2.value(),slider3.value()

I want to get the colors to change in proportion to their initial ratio of rgb.  But  I can’t wrap my head around the logic at the moment.

Code:

var text;
var canvas;
var slider1;
var slider2;
var slider3;

var offsetRotate = 50;
var squares = [];
var square;
var square2;
var square3;

square = {
x: 55,
y: 55,
a: 255,
r: 0,
g: 0,
b: 0,

move: function() {
this.x++;
this.y++;
},
fillnew: function() {
fill(this.r += 1, this.g += .1759787, this.b += .5);
},
rotate: function() {
push();
translate(width * 0.2, height * 0.25);
this.fillnew
rotate(frameCount * 30) + offsetRotate;
rect(this.x – 50, this.y – 50, 30, 30);
pop();

}

};
offsetRotate += 35;

squares.push(square)

square2 = {
x: 55,
y: 55,
a: 255,
r: 0,
g: 0,
b: 0,

move: function() {
this.x++;
this.y++;
},
fillnew: function() {
fill(this.r + .001, this.g + 0.1759787, this.b += .555, this.a += 15);
},
rotate: function() {
push();
translate(width * 0.2, height * 0.25);
this.fillnew
rotate(frameCount * 30);
rect(this.x – 25, this.y – 25, 30, 30);
pop();

}
};

offsetRotate += 35;

squares.push(square2)

square3 = {
x: 55,
y: 55,
a: 255,
r: 0,
g: 0,
b: 0,

move: function() {
this.x++;
this.y++;
},
fillnew: function() {
fill(slider1.value());
},
rotate: function() {
push();
translate(width * 0.2, height * 0.25);
this.fillnew
rotate(frameCount * 30);
rect(this.x – 220, this.y – 220, 30, 30);
pop();

}
}
offsetRotate += 150;

squares.push(square3);

function setup() {
slider1 = createSlider(0, 255, 0);
slider2 = createSlider(0, 255, 0);
slider3 = createSlider(0, 255, 0);

slider1.changed(function() {
print(slider1.value(r + .001, g + 0.15, b += .555, a += 15));
});

slider2.changed(function() {
print(slider2.value());
});

slider3.changed(function() {
print(slider3.value());
});

canvas = createCanvas(1080, 600);
canvas.position(50, 100);
background(0);

}

function draw() {

for (var i = 0; i < squares.length; i++) {
squares[i].move();
squares[i].fillnew();
squares[i].rotate();
}

}

 

 

Today I learned a valuable lesson in logistics in the city. Time flies in New York, not because things move fast here, but rather because it takes forever to get anything done.  New York is like a time murdering ninja, it sneaks up on you and kills all of your time. With transit time and the locations of the things I generally need being spread out just enough to eat up my time coupled with the hidden minutes standing on the subway platform waiting for the train or at crosswalks waiting for traffic lights to change, time just really just runs away from you.  In a New York minute as they say.

I started today off pretty well finishing up on some ICM work that I wanted to get done while I was at work. Like a normal Tuesday  I get off with just enough time to walk over to the applications class, which ends about 6:30pm.  I started to walk back to the ITP floor and begin work on my pcomp lab that involves serial connection to motors.  A lab that I need to complete my cooking with sound midterm.

I got all the way to my locker and remembered that I need to go to tinkersphere to buy the motors that I am going to use for that project which I need to do the pomp lab.  I have tried several times this week to get over to tinkersphere to buy these and never seem to get there when they are open this coupled with general forgetfulness is another problem (LISTS in MY FUTURE).  I am not used to doing things this way.   Ben Light said a couple of weeks ago, “It’s like you’re cooking in someone else’s kitchen.”  An analogy that he meant for the floor shop, but I have begun to realize it is the city as a whole for me.  Thirty minutes wasted going up to the floor and I am on my way to tinkersphere.

It takes about 20 minutes to walk to tinkersphere and on the walk I look up the hours for tinker sphere to double check since  I have somehow missed them last two times I have tried to go there (Sunday : Closed, Monday, class until 9pm so again Closed).  I have a little more than an hour to get there and buy the supplies (oh yeah… I haven’t eaten since noon, gotta pick up some food on the way back).

Once there, I received lots of helpful information from the girl who was working about the motors I intended to use, and she recommended for my purposes that I use a particular servo instead since it would likely provide the rpm I am looking for. (Retool the illustrator template to accommodate servos instead of motors … good thing I haven’t cut that acrylic yet)  I picked up two of those and several other items that I needed for other projects, and  9v batteries that I will need to power the servos independently of the arduino that will run the project.  At the checkout counter, I looked at the battery holders and thought to myself, “ the school has these so I will save a little money.”  A decision I would later pay for.

All checked out, I remembered that I needed to go to Micheal’s to see if they had felt balls that I could use for ringers in the project and I looked them up on the old Google Maps and realized that it is about 40 minutes away from where I am.  I walk to the subway and head up to Micheal’s and go in to take a look to see if they have what I need.  Took a look at pom poms, the type that are used for craft projects, and they did not look like they would work. So I picked up some wood beads and some felt and I will make them myself. I grabbed a few other things I needed from there and with that I checked out and headed back to the school 25 minutes away.

Once there, 10pm, I start going through the stuff I bought and began pulling out the pcomp toolbox to begin working on the lab.  Oh yeah… one more thing… I need to get those battery holders off the supply shelf. NOPE.  There aren’t any left and tinkersphere is now closed.  I have a battery connector for my arduino that came in my kit but I don’t want to sacrifice it to do this lab as I will need that part later for the project itself to power the board itself.

So I spend about 30 to 45 more minutes trying to see if there was a way for me to pull something together, but I was so deflated, that nothing was coming to me.  So I decided to write a blog post to remind myself:

In the future:

Make a list of materials early, this list will inform the list of places that you need to go so you can make another list to schedule the time to go there.

Order the materials online, its cheaper in TIME, money, and you never have to wait on the subway platform wishing you could be working on the project so you can go home and sleep.

Again… DO NOT RELY ON THE SUPPLIES AT THE SCHOOL it will burn you every time.

Here’s to spending tomorrow afternoon doing the pcomp lab that should have been done today.

Cheers