Go Down

Topic: 441 water drops (Read 8 times) previous topic - next topic

pe lang


Machine that adds drops of water onto a special textured surface. Each drop forms into an almost perfect sphere through the surface tension of the water and the omniphopic Material. The electronically controlled pipette wanders through a square grid of 21 x 21 drops to form a micro-matrix and returns to the beginning. After approximately 300 minutes, and when thewater drops have evaporated, the same process starts again.

http://pelang.ch/video/falling_objects_positioning_systems.mov


mowcius

umm, wow - trying to think of some practical use but failing - cool though :D

biocow

Use food coloring in water and draw dot-matrix style pictures. Or sphere-matrix in this case.

Very cool non the less.
10 PRINT CHR$(7)
20 GOTO 10

Onions

Very impressive! Adding to what biocow said, if you put a light underneath it you could project an interesting picture onto the ceiling, although that would mean using something clear underneath the droplets, rather than the omniphopic material, so it might not work...

Onions.
My website: http://www.harryrabbit.co.uk/electronics/home.html Up and running now! (Feel free to look round!) :D

frikosal

Really nice !
Can you give us some details about the positioning system ?

mowcius

Yeah I'd be interested in that too :)

pe lang

thanks,

well there is not much to say. Arduino control's the stepperdriver, step's and direction. Linearaxis are THK (secandhand). Little relay to trigger the dispenser.

the code is kind of mess... was last minut project..

Code: [Select]
/*

Falling objects - positioning systems
is an machine that adds drops of water onto a special textured surface.
Each drop forms into an almost perfect sphere through the surface tension
of the water and the omniphopic Material.
The electronically controlled pipette wanders through a square grid of 21 x 21 drops
to form a micro-matrix and returns to the beginning.
After approximately 300 minutes, and when the water drops have evaporated, the same process starts again.

http://pelang.ch/

*/



int dirpin1 = 11; //Stepper 1, Direction
int steppin1 = 12; //Stepper 1, Steps
int dirpin2 = 9; //Stepper 2, Direction
int steppin2 = 10; //Stepper 2, Steps
int enableX = 5; // Enable driver X
int enableY = 4; // Enable driver Y
int relay = 8; //Relay
int Xdrops = 20; //numbers of x drops
int Pause = 100; // Pause wenn Drops
int PauseDrop = 50; //whait befor drop
int limitX = 7; // limitswitch X achse
int limitY = 6; // limitswitch X achse
int switchstateX = 0;
int switchstateY = 0;
int Xsize = 300;  //distance from each drop
int Ysize = 3000; //distance from each drop


void setup() {
 
  pinMode(steppin1, OUTPUT);   
  pinMode(dirpin1, OUTPUT);
  pinMode(steppin2, OUTPUT);   
  pinMode(dirpin2, OUTPUT);
  pinMode(enableX, OUTPUT);
  pinMode(enableY, OUTPUT);
  pinMode(relay, OUTPUT);
  pinMode(limitX, INPUT);
  pinMode(limitY, INPUT);

digitalWrite(enableX, HIGH); //Schaltet X Diver ON
digitalWrite(enableY, HIGH); //Schaltet X Diver ON

/* this is for limitng the xy at the very beginning */

// limiting X

  int b;
 
  digitalWrite(dirpin1, LOW); // Set X the direction.
  for (b = 0; b<10000; b++)                                                       
      {
        switchstateX = digitalRead(limitX);
        if (switchstateX == HIGH)
        {
        digitalWrite(steppin1, HIGH); 
        digitalWrite(steppin1, LOW);   
        delayMicroseconds(800);       
        }
        else
        {
        }
       } 
   digitalWrite(dirpin1, HIGH); // Set X the direction.   
   for (b = 0; b<7800; b++)                                                       
        {
        digitalWrite(steppin1, HIGH); 
        digitalWrite(steppin1, LOW);   
        delayMicroseconds(800);       
        } 
       
       
// limiting Y

  long g;
 
  digitalWrite(dirpin2, HIGH); // Set X the direction.
  for (g = 0; g<100000; g++)                                                       
      {
        switchstateY = digitalRead(limitY);
        if (switchstateY == HIGH)
        {
        digitalWrite(steppin2, HIGH); 
        digitalWrite(steppin2, LOW);   
        delayMicroseconds(300);       
        }
        else
        {
        }
       } 
   digitalWrite(dirpin2, LOW); // Set X the direction.   
   for (g = 0; g<68000; g++)                                                       
        {
        digitalWrite(steppin2, HIGH); 
        digitalWrite(steppin2, LOW);   
        delayMicroseconds(300);       
        }         
       
}




void loop()
{
int i;
int k;
int b;
int m;
long r;

digitalWrite(enableX, HIGH); //Schaltet X Diver ON
digitalWrite(enableY, HIGH); //Schaltet X Diver ON


for (m = 0; m<10; m++) // Make 5 Lines of 5 Drops
  {
   digitalWrite(dirpin1, LOW); // Set X the direction.
   digitalWrite(dirpin2, HIGH); // Set Y the direction.

    {
// move Y 1 line
     for (b = 0; b<Ysize; b++)                                                       
       {
        digitalWrite(steppin2, HIGH); 
        digitalWrite(steppin2, LOW);   
        delayMicroseconds(1200);             
       }     
// make drops
      delay(PauseDrop); //whait befor drop
      digitalWrite(relay, HIGH);   // turn Relay on
      delay(Pause);              // wait for a second
      digitalWrite(relay, LOW);    // turn Relay off
      delay(Pause);              // wait for a second
     
     
// move X 10 times forward       
     for (i = 0; i<Xdrops; i++) // Make N Drops forward X

     { 
       for (k = 0; k<Xsize; k++)  // Make 80 Steps = 1mm
                                                        //  Moving X Axis 10 Steps CW
         {
          digitalWrite(steppin1, HIGH);                 
          digitalWrite(steppin1, LOW);   
          delayMicroseconds(1200);           
         }

// make drops
         delay(PauseDrop); //whait befor drop
         digitalWrite(relay, HIGH);   // turn Relay on
         delay(Pause);              // wait for a second
         digitalWrite(relay, LOW);    // turn Relay off
         delay(Pause);              // wait for a second
       }
      }
     
// move Y 1 line   
     for (b = 0; b<Ysize; b++)                                                       
       {
        digitalWrite(steppin2, HIGH); 
        digitalWrite(steppin2, LOW); 
        delayMicroseconds(1200);           
        }

// make drop
       delay(PauseDrop); //whait befor drop
       digitalWrite(relay, HIGH);   // turn Relay on
       delay(Pause);              // wait for a second
       digitalWrite(relay, LOW);    // turn Relay off
       delay(Pause);              // wait for a second
   
       
// change direction of X   
      digitalWrite(dirpin1, HIGH); // Set the direction.


// move X 10 times backwards     
     {
       for (i = 0; i<Xdrops; i++)

        {
         for (k = 0; k<Xsize; k++) // Make 80 Steps = 1mm
 
           {
            digitalWrite(steppin1, HIGH); 
            digitalWrite(steppin1, LOW);   
            delayMicroseconds(1200);           
           }
// make drops
          delay(PauseDrop); //whait befor drop
          digitalWrite(relay, HIGH);   // turn Relay on
          delay(Pause);              // wait for a second
          digitalWrite(relay, LOW);    // turn Relay off
          delay(Pause);              // wait for a second
         }
      }     
   
  }
 
}




// last line last line last line last line last line

// move Y 1 line   
     for (b = 0; b<Ysize; b++)                                                       
       {
        digitalWrite(steppin2, HIGH); 
        digitalWrite(steppin2, LOW); 
        delayMicroseconds(1200);           
        }

// make drop
       delay(PauseDrop); //whait befor drop
       digitalWrite(relay, HIGH);   // turn Relay on
       delay(Pause);              // wait for a second
       digitalWrite(relay, LOW);    // turn Relay off
       delay(Pause);              // wait for a second
   
       
// change direction of X   
      digitalWrite(dirpin1, LOW); // Set the direction.


// move X 10 times backwards     
     {
       for (i = 0; i<Xdrops; i++)

        {
         for (k = 0; k<Xsize; k++) // Make 80 Steps = 1mm
 
           {
            digitalWrite(steppin1, HIGH); 
            digitalWrite(steppin1, LOW);   
            delayMicroseconds(1200);           
           }
// make drops
          delay(PauseDrop); //whait befor drop
          digitalWrite(relay, HIGH);   // turn Relay on
          delay(Pause);              // wait for a second
          digitalWrite(relay, LOW);    // turn Relay off
          delay(Pause);              // wait for a second
         }
      } 



     
     
// Home xy
  digitalWrite(dirpin1, HIGH); // Set X the direction.
  digitalWrite(dirpin2, LOW); // Set Y the direction. 


  {
   for (r = 0; r<(Xsize * Xdrops); r++) // X go back to beginng
 
   {
    digitalWrite(steppin1, HIGH);   // For test with LED on
    digitalWrite(steppin1, LOW);    // For test with LED off
    delayMicroseconds(1200);              // wait for a second
    }
   
    for (r = 0; r<66000; r++) // Y go back to beginng
 
   {
    digitalWrite(steppin2, HIGH);   // For test with LED on
    digitalWrite(steppin2, LOW);    // For test with LED off
    delayMicroseconds(400);              // wait for a second
    }

  }

digitalWrite(enableX, LOW); //Schaltet X Diver OFF
digitalWrite(enableY, LOW); //Schaltet X Diver OFF

delay(5000); // verdunsten
 
}






robtillaart

Quote
Very cool non the less.


What happens if you freeze it ?
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

mowcius


Quote
Very cool non the less.


What happens if you freeze it ?

The water?

I just had a load of ideas run through my head about creating micro-ice spheres ;)

wildbill

Very cool - I love those little spheres. What instigated the project?

pe lang

#10
Apr 29, 2011, 04:34 am Last Edit: Apr 29, 2011, 04:36 am by pe lang Reason: 1

Very cool - I love those little spheres. What instigated the project?


it was for a group exhibition here in berlin with the titel: decay.

i actualy built a cnc router, during that i found it more fun to test the program routines with water drops

thanks all, also for the help (for my projects) i got here !



biocow

Looks like you're hitting he blogs.

http://gizmodo.com/5808901/441-perfectly-sphere-water-droplets-aligned-to-a-grid
10 PRINT CHR$(7)
20 GOTO 10

mowcius

Haha some of those comments :D

focalist

I refuse to look up the definition because it will remove the much more entertaining mental image:

What exactly is an "Omniphobic Material"?   

'Today we saw a demonstration of Freakoutium, the metal that our patented Panic-O-Meter operates on.  The United States Department of Homeland Security has expressed interest.'
When the testing is complete there will be... cake.

mowcius

Omniphobic materials - presumably don't like anything - repel most things

Hydrophobic materials repel water so I presume it's hydrophobic as well as other things.
This means the water beads on the surface rather than spreading out (like a heavily waxed car roof)

Go Up