Go Down

Topic: High Speed Photography (Read 5 times) previous topic - next topic

Jens

Jun 20, 2009, 04:25 pm Last Edit: Jun 20, 2009, 04:43 pm by crowley Reason: 1
My high speed photography project for water drops ect, is comming along very nicely so here what i have done so far.
With the Arduino Duemilanove i'm controlling a: Solenoid valve, Photogate, Flash and my Camera.
Works like this:
1. open shutter on camera
2. a delay control the drops from the solenoid valve
3. a photogate waits for the drop the pass the gate
4. after a delay the flash get fired and the picture is taken.

this is what i have done with it:

   

More here: http://www.flickr.com/photos/34463171@N04/

Here is the schematic for it, this is the first time i have drawn a schmatic so there might be some error in it:

         

And the code:

Code: [Select]
int buttonPin = 2;                 // Connection to the Button
int solenoidPin = 8;              // Connection to the Solenoid valve
int flashPin = 9;                 // Connection to the Flash
int cameraPin = 10;                // Connection to the Camera
int photogatePin =11;              // Connection to the Photogate

int varloop = 0;                   // Check variable for Photogate
int val = 0;                       // Variable for checking if something has passed through the photogate
int bval = 0;                      // Variable for checking is button is pressed
int flashTimer = 212;              // Delay before flash is fired   ----- Millisecond
// int flashTimer_micro = 500;         // Delay before flash is fired   ----- Microsecond (1000 = 1 milisecond)
int solenoidDelay = 250;            // Delay for the Solenoid vale, determinds how many drops are dropped
int cameraDelay = 250;

void setup(){
 pinMode(cameraPin, OUTPUT);
 pinMode(solenoidPin, OUTPUT);
 pinMode(flashPin, OUTPUT);
 pinMode(photogatePin, INPUT);
 pinMode(buttonPin, INPUT);
}

void loop(){
 bval = digitalRead(buttonPin);
 if (bval == HIGH){
   varloop = 0;
   } else {
   openShutter();
   dropWater();  
     while(varloop != 1){
     detectFlash();
     }
    varloop = 0;
   }
}

int openShutter(){
 digitalWrite(cameraPin, HIGH);
 delay(cameraDelay);
 digitalWrite(cameraPin, LOW);
}

int dropWater(){
 digitalWrite(solenoidPin, HIGH);
 delay(solenoidDelay);
 digitalWrite(solenoidPin, LOW);
}

int detectFlash(){
  val = digitalRead(photogatePin);
 if (val == HIGH) {
   delay(flashTimer);
//    delay(flashTimer_micro);
   digitalWrite(flashPin, HIGH);
   delay(50);
   digitalWrite(flashPin, LOW);
   delay(500);
   varloop = 1;
  }
}


Next ting will be to add a LCD display


Jens Erik
http://www.flickr.com/photos/34463171@N04/

Ran Talbott

Wow.

Those are gorgeous pictures.  And really ingenious work to make them.

Thanks.

kellykel

Those are the most amazing pictures ever *bookmarks*. You should enter in a contest!!!!!!!!!!!!!! ;D

jezuz

thats really cool, great photos :)

you should try something similar with balloon popping... just replace the solenoid with a linear actuator attached to a needle... and you wont even need the photogate

Jens

Thanks for the comments

jezuz, haven thought of that, great idea

Jens Erik

Oracle

One thing I was wondering about though.  You have the photogate, so why go to the trouble of the solenoid?  When I did this, I used a laboratory burette to give me a slow stream of nice fat drops.


Jens

To control how fast the drops are moveing, i need about 10 drops a sec to get the drops.I have the solenoid connected to a Mariotte Siphon (http://www.martin-waugh.com/?p=19 )so i get a steady stream of drops af the precise speed i want.

Barry

Hi Jens , I am a little confused (not difficult) over the Mariotte Siphon and the solenoid set up , If the solenoid is normally closed and fixed to the outlet of the Siphon , wouldn't the drops just sit behind the solenoid valve and build up. Then once released just drop in one spurt.
Also I am not really into code is this a one shot operation  or does the button switch start the process

Have you got a shot of the full set up

thanks
Barry

Jens

Hi Barry

Yes the are a fixed pressure behind the solenoid valve, but i only open the solenoid valve for a very short time 75-250 micro sec, to control how many drops the solenoid valve will release, the height of the marion siphon depends how much pressure, thus determining the drop rate.

Yes the button starts the whole process.

I don't have a photo of the setup, i have just taken it down, but i will set it up again in a couple of days , then i will take a photo and post it

Jens Erik

Barry

Thanks Jens , I made the Hi-viz set-up and that works quite well but when trying to get a collision it was like a disco in here the flash going off every 500 milliseconds lol

I hot the picture now (forgive the pun) just waiting for my solenoid to arrive , then get down to business

once again thanks  
Barry :)

MaFu

Hi Jens

Great pictures.
Can you tell me which solenoid valve you use?

thanks
Manfred
_______
Manfred

bohne

fantastic!
Can you take a picture of the setup? The solenoid valve and everything else. Great work!
http://www.dorkbot.de
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1236434254
http://www.luminet.cc

Barry

Me again Jens , looking at the  schematic have you made a mistake with the LTV816 , the anode is going to ground on the diode pins , or am I having a blonde moment :-)

Barry

Barry

Me again Jens , looking at the  schematic have you made a mistake with the LTV816 , the anode is going to ground on the diode pins , or am I having a blonde moment :-)

Barry

metRo_

Very great photos ;)

Can you tell me a site where i can learn more about the tehcnic to take photos like that?

Go Up