My "child" of 2 month work and ebay searching
Nikon Labophot 2 microscope stand + Zeiss microscope stand + Proxxon KT70 table + Pentax bellows + 2xSB-R200 flashes + ring led light.
Rainy weather don’t allow to find any dry insect, but wet lichen is a good subject for testing too
3x scale, 50 frames (0.05mm step) Helicon Focus stack, Nikon D70s + rare soviet Mikroplanar 65/4.5 lens.
Next step will be comparison of Mikroplanar 65/4.5 and Leitz Milar 65/4.5 lenses with Nikon D300, diffuser constructing and testing of different stacking software
Resize
Center crop
Edge crop
First light of new setup from Ukraine
Moderators: rjlittlefield, ChrisR, Chris S., Pau
Paganel, dobro pozholovat' to the forum!
Looks like a solid, innovative setup you've built--thanks for sharing! It's great to learn from other people's approaches. Your use of the Labophot stand to hold lights--in addition to performing the stacking movement--is new to me. My sense is that your lighting approach emphasizes efficiency, perhaps at some cost in flexibility. In my view, it's useful to see varied examples on the efficiency/flexibility curve.
Your Soviet Mikroplanar seems a pretty decent lens. Your lens gives the impression of being competitive at 3x--I'd be tempted just to shoot for it for the summer, and leave testing until winter.
Very nice first images. I also shoot quite a few lichens, but seldom use my ringlight, partly because I prefer more contrast than it permits, and also because I don't like the ring-shaped specular highlights. So I'll be watching for the results of your diffusion tests--maybe you will find an approach that makes me get my ringlight back out.
By the way, I have very fond memories of Ukraine, though I haven't been to Kiev--my time in Ukraine has been mainly the Odessa oblast.
Thumbs up! Hope you keep sharing your work.
Best,
--Chris
Looks like a solid, innovative setup you've built--thanks for sharing! It's great to learn from other people's approaches. Your use of the Labophot stand to hold lights--in addition to performing the stacking movement--is new to me. My sense is that your lighting approach emphasizes efficiency, perhaps at some cost in flexibility. In my view, it's useful to see varied examples on the efficiency/flexibility curve.
Your Soviet Mikroplanar seems a pretty decent lens. Your lens gives the impression of being competitive at 3x--I'd be tempted just to shoot for it for the summer, and leave testing until winter.
Very nice first images. I also shoot quite a few lichens, but seldom use my ringlight, partly because I prefer more contrast than it permits, and also because I don't like the ring-shaped specular highlights. So I'll be watching for the results of your diffusion tests--maybe you will find an approach that makes me get my ringlight back out.
By the way, I have very fond memories of Ukraine, though I haven't been to Kiev--my time in Ukraine has been mainly the Odessa oblast.
Thumbs up! Hope you keep sharing your work.
Best,
--Chris
Second light :)
2 monthes I tried to fix vibrations from mirror of my Nikon D70s. Rear flash and short expositions solve my problem only partially. With 5x and more magnification all details of image become very "soap".
I decide to use Arduino controller to control 2 Ikea lamps as flashes and camera shutter. The scheme is simple:
- open shutter
- set delay 0.25 sec to fix mirror vibration
- ON ikea lamps
- delay (1/1000 - 10 sec)
- OFF ikea lamps
- delay 0.25 sec
- close shutter
I use Arduino shield as base and add LCD Shield For Arduino (http://www.dfrobot.com/index.php?route= ... duct_id=51) for display and control.
Each of 2 lamps controlled by simple scheme:
Input pins connected to 11 and 12 PIN of LCD shield
Camera controlled with 4N35 optocoupler as described:
Input pin connected to 3 pin of LCD shield
«Left» and «Right» buttons set the light delay from 1/1000 to 10 sec.
«Up» and «Down» buttons set correction from -3 to +3 to light delay
«Select» button has 2 function – short press start exposition and long press switch on/off led lamps (without exposition)
Today morning first experiments was very promising. Nikon CFI 10x (with achromatic tube lens) and El-nikor 50/2.8 get very sharp images.
Sample image of 1/2 cardamon grain with EL-Nikkor 50/2.8
Full frame (stack)
Crop (stack)
Setup
[/img]
Arduino code:
[/size]
I decide to use Arduino controller to control 2 Ikea lamps as flashes and camera shutter. The scheme is simple:
- open shutter
- set delay 0.25 sec to fix mirror vibration
- ON ikea lamps
- delay (1/1000 - 10 sec)
- OFF ikea lamps
- delay 0.25 sec
- close shutter
I use Arduino shield as base and add LCD Shield For Arduino (http://www.dfrobot.com/index.php?route= ... duct_id=51) for display and control.
Each of 2 lamps controlled by simple scheme:
Input pins connected to 11 and 12 PIN of LCD shield
Camera controlled with 4N35 optocoupler as described:
Input pin connected to 3 pin of LCD shield
«Left» and «Right» buttons set the light delay from 1/1000 to 10 sec.
«Up» and «Down» buttons set correction from -3 to +3 to light delay
«Select» button has 2 function – short press start exposition and long press switch on/off led lamps (without exposition)
Today morning first experiments was very promising. Nikon CFI 10x (with achromatic tube lens) and El-nikor 50/2.8 get very sharp images.
Sample image of 1/2 cardamon grain with EL-Nikkor 50/2.8
Full frame (stack)
Crop (stack)
Setup
[/img]
Arduino code:
Code: Select all
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int adc_key_in = 0;
int read_LCD_buttons()
{
adc_key_in = analogRead(0);
if (adc_key_in > 1000) return 0; //None;
if (adc_key_in < 50) return 1; //RIGHT;
if (adc_key_in < 195) return 2; //UP;
if (adc_key_in < 380) return 3; //DOWN;
if (adc_key_in < 555) return 4; //LEFT;
if (adc_key_in < 790) return 5; //SELECT;
return 0;
}
//
float speeds[29] = {0.001,0.00125,0.0015625,0.002,0.0025,0.003125,0.004,0.00625,0.008,0.01,0.0125,0.016666667,0.033333333,0.05,0.1,0.2,0.25,0.333333333,0.5,1,2,3,4,5,6,7,8,9,10};
char speedsStr[29][8] = {"1/1000","1/800","1/640","1/500","1/400","1/320","1/250","1/160","1/125","1/100","1/80","1/60","1/30","1/20","1/10","1/5","1/4","1/3","1/2","1","2","3","4","5","6","7","8","9","10"};
int ci = 18;
int cic = 0;
int memKey = 0;
int cState = 0;
int lightState = 0;
int shutterPin = 3;
int flashPin1 = 11;
int flashPin2 = 12;
//
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
initMe();
//
pinMode(shutterPin, OUTPUT);
pinMode(flashPin1, OUTPUT);
pinMode(flashPin2, OUTPUT);
}
//
void loop() {
checkKeys();
definePress();
}
//
void initMe() {
printCShutter();
switchLights(lightState);
}
//
int lcd_key = 0;
void checkKeys() {
lcd_key = read_LCD_buttons();
delay(50);
if (cState == 0) {
if (lcd_key!=memKey) {
if (lcd_key == 4) {
addShutter(-1);
} else if (lcd_key == 1) {
addShutter(1);
} else if (lcd_key == 5) {
//startPhoto();
} else if (lcd_key == 2 ) {
correctShutter(1);
} else if (lcd_key == 3) {
correctShutter(-1);
}
memKey = lcd_key;
}
}
}
//
//
int addShutter(int shiftx) {
if (shiftx > 0 && ci < 28) {
ci = ci + 1;
cic = 0;
} else if (shiftx < 0 && ci > 0) {
ci = ci - 1;
cic = 0;
}
printCShutter();
}
//
int correctShutter(int corrx) {
if (corrx > 0) {
if (ci == 28 && cic == 0) return 0;
//
if (cic < 3) {
cic = cic + 1;
printCShutter();
} else {
addShutter(1);
}
} else if (corrx < 0) {
if (ci == 0 && cic == 0) return 0;
//
if (cic > -3) {
cic = cic - 1;
printCShutter();
} else {
addShutter(-1);
}
}
}
//
String pt;
void printCShutter() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Shutter speed:");
lcd.setCursor(0,1);
if (cic > 0) {
pt = String("> +");
} else {
pt = String("> ");
}
lcd.print("<" + String(speedsStr[ci]) + pt + String(cic));
lcd.setCursor(13,1);
lcd.print("L="+String(lightState));
}
//
int sdc,cpos;
void startPhoto() {
cState = 1;
//
lcd.clear();
if (lightState == 1) {
lcd.print("Light off");
switchLights(0);
cpos = 1;
} else {
cpos = 0;
}
lcd.setCursor(0,cpos);
lcd.print("Prepare...");
delay (250);
//
lcd.clear();
lcd.print("Open shutter");
digitalWrite(shutterPin, HIGH);
delay(250);
//
if (cic == 0) {
sdc = 0;
} else {
int tmpa = cic / abs(cic);
sdc = abs(speeds[ci+tmpa] - speeds[ci])/4*cic*1000;
}
int shotDelay = speeds[ci]*1000 + sdc;
lcd.clear();
lcd.print("Start flash:");
switchLights(1);
lcd.setCursor(0,1);
lcd.print(String(shotDelay));
delay(shotDelay);
//
lcd.clear();
lcd.print("Stop flash");
switchLights(0);
delay(250);
//
lcd.clear();
lcd.print("Close shutter");
digitalWrite(shutterPin, LOW);
delay(250);
//
if (lightState == 1) {
lcd.clear();
lcd.print("Light on");
switchLights(1);
delay(250);
}
//
cState = 0;
initMe();
}
//
void switchLights(int lst) {
if (lst == 1) {
digitalWrite(flashPin1, HIGH);
digitalWrite(flashPin2, HIGH);
} else {
digitalWrite(flashPin1, LOW);
digitalWrite(flashPin2, LOW);
}
}
// --------------------------------------------------
int current = 0;
int count;
int previous = 0;
unsigned long firstTime;
void definePress() {
if (cState == 0) {
lcd_key = read_LCD_buttons();
if (lcd_key == 5) {
current = 1;
} else {
current = 0;
}
if (current == 1 && previous == 0 && millis() - firstTime > 50){
firstTime = millis();
}
if (current == 0 && previous == 1 && millis() - firstTime < 250){
startPhoto();
} else if (current == 0 && previous == 1 && millis() - firstTime > 250){
if (lightState == 1) {
lightState = 0;
} else {
lightState = 1;
}
switchLights(lightState);
printCShutter();
}
previous = current;
}
}
That is pretty much in line with what I got with leds - I got down to <1/100 but that was with much more powerful leds. generating a current limited pulse gets interesting so I gave up trying to get build a schizophrenic led light which could flip between high power <1/10000 strobe flashes and constant lower level constant illuminationpaganel wrote:1/30 with diffuser or 1/60 without diffuser
rgds, Andrew
"Is that an accurate dictionary ? Charlie Eppes
"Is that an accurate dictionary ? Charlie Eppes