Thursday, May 16, 2013

Final project... Final post

My ideas for the final project went through a number of changes.  Originally i wanted to assemble a number of simple relay controlled TV's with static magnet placement on various parts of the tube.  This seemed almost too simple for the class, and not a good representation of things I learned.  My idea then changed to a single monitor, with moving magnets hidden within the monitor casing.  The goal was to use a single servo and gears to move the various magnets (I had planned on three magnets, following three paths of circular motion.

step one was to remove the tube and circuitry from the TV's plastic casing.  I had to make sure the circuitry and wires were pulled far enough away from the tube to allow space for the gears.





step two was to cut the gears and figure out their placement.  I started with what I felt the most difficult gear/placement was---a gear placed around the positioning yoke.  Because of the size of the circuit board attached to the base of the electron gun (as well as the placement of high-voltage wiring I did not want to risk cutting/damaging: very high gauge wire I was unable to find to mend the cut), there was no way to simply slide the gear onto the yoke.  My solution was to cut the gear in half, and wood glue it into position---which was difficult because of the necessity to keep the gear teeth in precise line/proportion with each other. It was successful though.
Here are photos/video of the yoke gear, as well as its supporting base gears:


 
 It was at this point in the construction that I realized that the magnets that would be attached to the yoke gear were too strong (the magnet strength was necessary for the intended manipulation) and the magnetic force between the magnet and the yoke (which is just one giant electromagnet) was more powerful than the force of the servo.  I would have had to "gear-up" many times to have the servo exude enough force---which I did not have room for behind the tube because of the length of wires attached to the electron gun.  I had to abandon the yoke gear/magnet.

At this point I gave up the idea of a single servo moving all the magnets, so I simply constructed two wooden plates attached to servos, with the magnets embedded into the wooden plates.  here is video of the plates turning outside and away from the tube, as well as planned placement of the motors within the TV case and their resulting effect with a simple "blue-screen" image as the TV's input.

 

I was unable to remove the gear around the yoke because I did such a good job securing it in place---the wood was too thick to simply dremel through, and the wood glue bond would not simply snap.

The servos were continuous rotation, so the code was very simple.  I wanted the speed of the two motors to be different, so the magnet placement would go in/out of phase, giving more variance in the image manipulation.  Here is the code, which includes a whole lot of earlier versions of the code (all disabled using "///////////") when I was toying around with the idea of having variable speed control for the motors.  I decided against this.  I found the speeds that I felt gave the best effect to the manipulation, allowing someone to adjust that would only take away from the piece.   

#include <Servo.h>

Servo myservo;  
Servo myservo3;

//int potpin = 1; 
int val;    

//int potpin3 = 3;
int val3;
////////////////////////

//const int relay = 5;

//int potpin2 = 2;
//int val2;
/////////////////////
void setup()
{
  Serial.begin(9600);
  myservo.attach(3);
  myservo3.attach(4);
  //pinMode(relay, OUTPUT); 
}

void loop()
{
  //val = analogRead(potpin);            
  //val = map(val, 0, 1023, 91, 97);     
  val = 96;
  myservo.write(val);                  
  delay(15);                          
 
 // val2 = analogRead(potpin2);
 // val2 = map(val2, 0, 1023, 100, 500);
 // delay(15);
 
  //digitalWrite(relay, HIGH);   //
  //delay(val2);               //
  //digitalWrite(relay, LOW);    //
  //delay(val2);
 
  //val3 = analogRead(potpin3);            
  //val3 = map(val3, 0, 1023, 91, 97);     
  val3 = 95;
  myservo3.write(val3);                  
  delay(15);
 
Serial.print("val = ");
Serial.print(val);
//Serial.print("       ");
//Serial.print("val2 = ");
//Serial.print(val2);
Serial.print("        ");
Serial.print("val3 = ");
Serial.print(val3);
Serial.println("       ");
}



The disabled code also includes the initial relay control coding (the relay was designed to switch back and forth between  disabling and enabling the Vertical Axis positioning of the yoke----when disabled, the image on the screen would change from full image to a single thin line.  An interesting side note = when this is done, all the image information is still present within this thin line, it is just compacted together).  I ran into issues here because of the loop function in the arduino programming---the relay code would cause the motors to stop turning momentarily.  I felt this looked really bad, and unnatural for the piece.  


Thank goodnes for the ATTiny!  I was able to write some very simple code and load it onto the ATTiny IC, to act as a mini-arduino!  The momentary pause in servo motion was avoided.  It was difficult to figure out how to program the ATTiny, the instructions online were a little vague, and it turns out they were missing a very simple but important step.  i also had to use an older version of the Arduino programming interface to make it work properly.  Here is the code for the ATTiny (very simple, almost not worth posting).  The result is simply turning the relay on for 17 seconds, then off for 17 seconds:

 
////////////////////////

const int relay = 0;


int val2;
/////////////////////
void setup()
{

  pinMode(relay, OUTPUT); 
}

void loop()
{

  val2 = 17000
  delay(15);
 
  digitalWrite(relay, HIGH);  
  delay(val2);             
  digitalWrite(relay, LOW);   
  delay(val2);
}


At this point, all I had to do was attach the wooden servo cases into the larger TV case (***I had to use BRASS SCREWS, which are non-magnetic to prevent disruptive force from the powerfull rare-earth magnets) and then make the whole thing a little more pleasing to the eye.  I used re-purposed and scrap wood paneling, which I felt mirrored, as well as added to the aged aesthetic of the piece.  The TV itself was manufactured in the early 1970's, the resulting outer design I feel places this piece as "an object" around that time (if not earlier).  It ended up having an almost Western feel to it, something that was quite popular in the 50's and 70's in home decor.  Here is some video footage of the final piece in action in the kenilworth building (i appologize for the wide angle lense---the only digital video I can shoot right now is on my go-pro):


So there are two things I plan to do with this piece still before I consider it complete:
1) I am going to attach one more servo inside that will turn the Yoke gear.  Attached to that gear will be a very low powered magnet---this will create an additional swirl of color, but not bend the image in any way.

this will add alot to the viewing window on the side.  As it is right now, it's a pretty disappointing sight to see the big gear, but static and unmoving. 

2) I am going to build a signal generator, something that will switch between solid red, blue, and green screens, and yet to be determined video noise signals.  Each solid color screen will cause the magnetic manipulation to react in different ways---different ripples of alternating color.  The video noise signals will cause the magnets to produce more than simple RGB color waves, creating purples and oranges and yellows (secondary colors).
This signal generator may/may not have interactive controls.  If it does, surely it will be accompanied with suggested instructions.


The End.

I really enjoyed this class, and I really value the (minimal) programming knowledge I now have.   It is enough to add a great deal of newness to my work, and I'm excited to see where it leads me in my practice. 








No comments:

Post a Comment