PDA

Zobacz pełną wersję : intervalometer IR Arduino



crobe
08-02-2015, 21:21
Witam zamieszczam pierwszą cześć większego projektu sterownika do timelapse.

Jest to intervalometer zbudowany z Arduino UNO (klona za 20 PLN ) i diody IR z rezystorem.



http://sebastian.setz.name/arduino/my-libraries/multi-camera-ir-control/




#include <multiCameraIrControl.h>

Nikon X(13); // firma aparatu / pin diody IR
int sekundy = 1; // co ile sekund nastepuje zdjecie
void setup(){
}

void loop(){
X.shutterNow();
delay(sekundy*1000);
}

kazzi
08-02-2015, 23:16
Witaj. Świetnie, że założyłeś taki wątek bo jest tu z pewnością wielu których zainteresuje temat.Sam jestem na początku budowy slidera do kamerki Gopro więc na razie wyzwalanie
aparatu na podczerwień mnie nie zainteresuje.W tej chwili bardziej jestem zainteresowany napędem wózka.Skompletowałem silnik krokowy i sterownik dający możliwość
zmiany obrotów silnika.Kamerka gopro ma wbudowany interwałometr do jednej minuty więc wyzwalanie migawki nie stanowi problemu.W przyszłości chciałbym jednak zbudować
większe urządzenie na którym mógłbym również ostawić lustrzankę.Podstawowy cykl pracy miałby wyglądać następująco:
- wyzwolenie migawki
- obrót silnika o określona ilość kroków co dało by jakiś zamierzony posuw wózka z aparatem
- kolejne wyzwolenie i kolejny posuw
Wyzwolenie migawki musi być po kablu bo sporo lustrzanek zwłaszcza tych z górnej półki jest wyzwalana kabelkiem.
Dobrze by było mieć możliwość ustawień cykli z poziomu urządzenia na cyfrowym panelu

Właśnie znalazłem na yootube https://www.youtube.com/watch?v=r5hoqqOVbyM

Takie urządzenie sterujące było by dla mnie idealne.Jak sądzisz jest możliwe złożenie czegoś takiego i wgranie kodu dla kogoś o raczej podstawowej wiedzy elektronicznej?

crobe
08-02-2015, 23:49
Wiesz nie wiem jaki masz sterownik silnika krokowego.
Najłatwiej używać sterowników do Rep Rap , lub do większego silnika używane w maszynach CNC.
Maja one 2 wejścia kierunek i krok, są łatwe w sterowaniu i maja mikro kroki a to ważne.

Co do filmiku coś podobnego można zrobić.
Tylko jakie ustawienia ma mieć: ?

- czas co jaki następuje zdjęcie
- kat o jaki się obraca
- kierunek obrotu
- ilość kroków na obrót

coś jeszcze ?

Jak zrobię jakaś obudowę to dodam wyświetlacz i przyciski.

kazzi
09-02-2015, 00:34
Ten sterownik co posiadam oparty jest na procesorze Atmel 0315 i z silniczkiem który chcę zastosować dosyć dobrze to działa.Mam 6 stopni szybkości,start stop i zmianę kierunku.
Silniczek bipolarny ze starej drukarki chyba,raczej niewielkiej mocy,ale dodam jeszcze jedno przełożenie mechaniczne i taka małą kamerkę bezproblemowo pociągnie.
Zamierzam jednak docelowo zrobić coś większego i bardziej zaawansowanego stąd moje zainteresowanie Arduino.

crobe
09-02-2015, 08:13
Jak nic się nie stanie to myślę że za pól roku powstanie mój sterownik.
Potem zamieszczę kod i schemat jak wykonać, na pewno będzie Arduino UNO / klon, wyświetlacz 2 x 16 znaków i klawiatura 4 przyciskowa. Akcesoria będą dołączane jako peryferia, w celu ograniczenia kosztów.


Jak będzie całość gotowa i starczy miejsca w układzie to będą takie funkcje.


- intervalometer IR / kabelek
- wyzwalanie aparatu światłem / dźwiękiem (fotografowanie błyskawic)
- bariera w podczerwieni lub czujnik ruchu ( foto pułapka)
- wyzwalanie laserem ( fotografia kropel wody widziałem na YouTube ale nie do końca wiem jak to działa)

opcje korzystające z silnika krokowego :

- sterownik slidera + intervalometer
- sterownik głowicy obrotowej 360
- sterownik stołu do zdjęć 360


takie funkcje zdołałem wymyślić :P coś jeszcze ?

crobe
10-02-2015, 10:12
Witam małe UP projektu .

Zrobiłem obudowę i dodałem wyświetlacz przyciski oraz potencjometr.

Pozostaje tylko pisanie programu...

Oto kilka fotek:


https://forum.nikoniarze.pl/imgimported/2015/02/IMG_0009JPG-2.jpg
źródło (http://img.webme.com/pic/c/crobe/IMG_0009.JPG)

https://forum.nikoniarze.pl/imgimported/2015/02/IMG_0010JPG-2.jpg
źródło (http://img.webme.com/pic/c/crobe/IMG_0010.JPG)

https://forum.nikoniarze.pl/imgimported/2015/02/IMG_0011JPG-2.jpg
źródło (http://img.webme.com/pic/c/crobe/IMG_0011.JPG)

https://forum.nikoniarze.pl/imgimported/2015/02/IMG_0012JPG-2.jpg
źródło (http://img.webme.com/pic/c/crobe/IMG_0012.JPG)

https://forum.nikoniarze.pl/imgimported/2015/02/IMG_0013JPG-2.jpg
źródło (http://img.webme.com/pic/c/crobe/IMG_0013.JPG)

https://forum.nikoniarze.pl/imgimported/2015/02/IMG_0014JPG-2.jpg
źródło (http://img.webme.com/pic/c/crobe/IMG_0014.JPG)

https://forum.nikoniarze.pl/imgimported/2015/02/IMG_0015JPG-2.jpg
źródło (http://img.webme.com/pic/c/crobe/IMG_0015.JPG)


CDN ...

crobe
11-02-2015, 16:24
Witam po przerwie :)

Wiec udało mi się zrobić podstawowy intervalometer ustawiany przy pomocy klawiatury i potencjometru.
aparat wyzwalany IR lub kabelka.

Ustawienia:
1 - 60 sekund
1 - 60 minut
1 - 24 godzin

Posiada także licznik wykonanych zdjęć od 1 do 999 oraz animowany pasek upływu czasu pomiędzy zdjęciami.

Filmik:
http://youtu.be/qHPiaTXzdyg


czekam na opinie :P

kazzi
11-02-2015, 20:23
Fajnie to zaczyna wygadać, trzymam kciuki aby starczyło Ci zapału i energii do doprowadzenia projektu do końca.Przy fotografowaniu kropelek istotna jest możliwość regulacji
opóźnienia otwarcia migawki lub błysku.Umożliwia to uchwycenie jakiejś stałej fazy po uderzeniu kropelki w lustro cieczy.Aby osiągnąć efekt jaki tu nam czasami prezentuje
forumowy kolega potrzeba jeszcze dodatkowych urządzeń sterujących wyrzucaniem kropelek.
Widzę,że zastosowałeś dosyć zaawansowany panel sterowniczy.Co do sterowania silnikiem krokowym to wydaje mi się, że lepiej było by gdyby można było programować ilość kroków.
Posuw wózka czy obrót stołu w dużej części będzie zależał od konstrukcji mechanicznej slidera czy stolika.
Jeżeli nic nie stoi na przeszkodzie to mógłbyś na bieżąco podawać wykorzystane elementy Ardino.

freefly
11-02-2015, 22:54
Witam po przerwie :)

Wiec udało mi się zrobić podstawowy intervalometer ustawiany przy pomocy klawiatury i potencjometru.
aparat wyzwalany IR lub kabelka.

Ustawienia:
1 - 60 sekund
1 - 60 minut
1 - 24 godzin

Posiada także licznik wykonanych zdjęć od 1 do 999 oraz animowany pasek upływu czasu pomiędzy zdjęciami.

Filmik:
http://youtu.be/qHPiaTXzdyg

czekam na opinie :P



Masz, http://www.pbase.com/fotoopa, może coś podpatrzysz u tego starszego pana.:wink:

crobe
12-02-2015, 13:41
Hmmm.... co zostało użyte:

- obudowa Z3A wymiary wysokość-szerokość-długość : 69mm x 90mm x 110mm.
- klon Arduino UNO
- wyświetlacz do Arduino 2 x 16 znaków sa na All***o w różnych kolorach.
- 1 rezystor 100 Ohm do obniżenia jasności wyświetlacza
- 4 rezystory 4,7 k Ohm do budowy klawiatury
- 1 potencjometr obrotowy 10 k Ohm
- 4 wejścia mini jack 3,5 mm do wpinania czujników i kabelka wyzwalania

schemat podłączeń i oznaczenia przycisków:


https://forum.nikoniarze.pl/imgimported/2015/02/schemat-1.jpg
źródło (http://img.webme.com/pic/c/crobe/schemat.jpg)

kod narzazie wersja testowa do wglądu:


#include <LiquidCrystal.h>
#include <MemoryFree.h>
#include <multiCameraIrControl.h>


Nikon X(13); // firma aparatu / pin diody IR
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // ustawia piny wyswietlacza

//################################################## ################################################## ################################################## ###################################
// ZMIENNE KLAWIATURY I POTENCJOMETRU
int klaw;
int kwart;
int pot;
//################################################## ################################################## ################################################## ###################################
// ZMIENNE MENU
int menu = 1 ;
int val = 1;
//################################################## ################################################## ################################################## ###################################
// ZMIENNE PRZECHOWUJACE ROZNE WARTOSCI W ZALEZNOSCI OD WYBRANEJ FUNKCJI
int val2;
int val3;
int val4;
int val5;
long val6;
long val7;
long val8;
long val9;
String string1;
String string2;
unsigned long val10;
//################################################## ################################################## ################################################## ###################################

void setup() {

lcd.begin(16, 2); // definiuje typ wyswietlacza

}

void loop() {
//################################################## ################################################## ################################################## ###################################
// ODCZYT KLAWIATURY I POTENCJOMETRU Z PINÓW ANALOGOWYCH A0 I A1
kwart = analogRead(A1);
pot = analogRead(A0);
//################################################## ################################################## ################################################## ###################################
// ZMIANA ODCZYTU Z A1 NA KONKRETNY KLAWISZ
if (kwart > 1000 ) {klaw = 1;delay(200);}else
if (kwart > 500 & kwart < 520 ){klaw = 2;delay(200);}else
if (kwart > 330 & kwart < 350 ){klaw = 3;delay(200);}else
if (kwart > 240 & kwart < 270 ){klaw = 4;delay(200);}
else klaw = 0;

//################################################## ################################################## ################################################## ###################################
// STEROWANIE MENU

if (menu > 9 & menu < 99 & klaw == 1 ){menu = menu/10;};
if (menu > 9 & menu < 99 & klaw == 2 ){val = val-1;};
if (menu > 9 & menu < 99 & klaw == 3 ){val = val+1;};
if (menu > 9 & menu < 99 & klaw == 4 ){menu = menu+1;};

if (menu <= 9 & klaw == 2 ){menu = menu-1;};
if (menu <= 9 & klaw == 3 ){menu = menu+1;};
if (menu <= 9 & klaw == 4 ){menu = menu*10;};

if (menu > 99 & klaw == 1 ){menu = menu/10;};

//################################################## ################################################## ################################################## ###################################
// CZYSCI WYSWIETLACZ

lcd.clear();

//################################################## ################################################## ################################################## ###################################
// SEKCJA MENU



switch (menu) {
case 0:
menu = 1;
break;
//################################################## ################################################## ################################################## ###################################
// POCZATEK INTERVALOMETER
//################################################## ################################################## ################################################## ###################################
// INTERVALOMETER GŁÓWNE MENU [WARTOSC ZMIENNEJ menu = 1]
//################################################## ################################################## ################################################## ###################################

case 1:
lcd.setCursor(0, 0); lcd.print(F("1."));
lcd.setCursor(1, 1); lcd.print(F("Intervalometer"));
break;
//################################################## ################################################## ################################################## ###################################
// INTERVALOMETER PODMENU [WARTOSC ZMIENNEJ menu = 10]

case 10: //pod menu intervalometer
lcd.setCursor(0, 0); lcd.print(val6); // wiswietla wartosc potencjometra
lcd.setCursor(3, 0); lcd.print(string1);
lcd.setCursor(11, 0); lcd.print(F("| 000"));
lcd.setCursor(0, 1); lcd.print(F("----------------"));
switch (val) {
case 0: // blokuje watrosc na >= 1
val = 1 ;
break;

case 1: // przelancza pomiedzy sek, min , hr zmieniajac watrosc nal
pot = map(pot, 0, 1018, 1, 60);
string1 = "sec";

val6 = pot; // val 6 przechowuje wartosc potencjimetra
val7 = 1000; // val 7 mnoznik milisekund
break;
case 2:
pot = map(pot, 0, 1018, 1, 60);
string1 = "min";
val6 = pot;
val7 = 60000;
break;
case 3:
pot = map(pot, 0, 1018, 1, 24);
string1 = "hr";
val6 = pot;
val7 = 3600000;
break;

case 4: // blokuje wartosc <=3
val = 3;
break;
}
break;

//################################################## ################################################## ################################################## ###################################
// INTERVALOMETER OBLICZENIA [WARTOSC ZMIENNEJ menu = 11]

case 11:
delay (2000);
val10 = millis(); // resetuje licznik milisekund
val8 = (val6*val7); // oblicza liczbe milisekund interwalu
menu = 100;
val2 = 1;
//################################################## ################################################## ################################################## ###################################
// INTERVALOMETER EKRAN WYKONAWCZY [WARTOSC ZMIENNEJ menu = 100]
case 100:

lcd.setCursor(0, 0); lcd.print(val6); // wiswietla wartosc potencjometra
lcd.setCursor(3, 0); lcd.print(string1);
lcd.setCursor(11, 0); lcd.print(F("|"));
lcd.setCursor(13 , 0); lcd.print(val2);

if (millis()-val10 > val8) {val10 = millis();val2 = val2+1;}; //sprawdza czy liczba milisekund osiagnela wartosc zadana, jezeli tak resetuje licznik i wyzwala aparat
if (val2 == 999){val2 = 0;};

// animacja paska zmienia uzycie val6 i val7
val7= val8/17;
val7 = (millis()-val10)/val7;
val5 = val7;
lcd.setCursor(val5, 1); lcd.print(F("----------------"));

break;

//################################################## ################################################## ################################################## ###################################
// KONIEC INTERVALOMETER
//################################################## ################################################## ################################################## ###################################

case 2:
lcd.setCursor(0, 0); lcd.print(F("2. Wyzwalanie"));
lcd.setCursor(3, 1); lcd.print(F("czujnikiem"));
break;
case 3:
menu = 2;
break;
}
//################################################## ################################################## ################################################## ###################################
// WYZWALANIE MIGAWKI I FOKUS
//################################################## ################################################## ################################################## ###################################
// X.shutterNow();


//################################################## ################################################## ################################################## ###################################

delay(10);

}

crobe
12-02-2015, 23:08
A i odnośnie aparatu do owadów to lasery IR są poza moim zasięgiem bo za drogie do eksperymentów, co nie zmienia faktu ze fajna zabawka... tylko czy ktoś by tego używał ?

Wyzwalanie aparatu laserami jak tamten pan zrobił nie jest trudne, tylko części drogie :/

crobe
14-02-2015, 21:06
ok wiec slider...
pytanie do kolegi kazzi i innych zainteresowanych sterownikiem do slidera.

jakie funkcje :?


- w skrypcie trzeba zdefiniować ile kroków potrzeba na cały przejazd później dorobię w ustawieniach sterownika ekran który pozwoli to odczytać i każdy zainteresowany sam sobie to wklepie do skryptu.

na razie zrobiłem menu do niego są w nim zawarte takie ekrany:

1.
ustawianie co ile kroków ma być zdjęcie
sterownik sam oblicza ile zdjęć wyjdzie na przejazd

2.
ustawienie czasu na jaki wózek się zatrzymuje dla wykonania zdjęcia
zakres 0-10 sek domyślnie 1 sek.

3. ustawienie prędkości przejazdu
sterownik sam oblicza i podaje ile przy danym ustawieniu zajmie przejazd (np. 2h40m34s)

---------------------------------------------------------------------
do napisania

4.
kierunek posuwu + ruchy ręczne


5. ekran wykonawczy


czekam na uwagi propozycje.

sterownik pisany pod drivery silników z wejściami STEP i DIR czlki takie jak w maszynach CNC i REPRAP

kazzi
15-02-2015, 12:04
Widzę,że bardzo ambitnie podchodzisz do tematu. Tak w zasadzie to nie mam uwag, jedynie co można by było zmienić to, wydłużyć czas postoju między klatkami. Wdziałem sporo
filmików robionych w nocy i w takich warunkach czasy ekspozycji bywają dłuższe więc przydało by się minimum 30 s, a nie zaszkodziło by i dłużej.Z moich teoretycznych obliczeń wynika,
że dla silnika 200 kr/obr, który będzie przesuwał wózek za pomocą paska i koła zębatego o średnicy 12mm osadzonego na osi silnika, potrzeba ok 5 kroków dla przesunięcia
wózka o 1 mm. Wydaje mi się,że taka rozdzielczość będzie wystarczająca. Wszystko jednak zależy od konstrukcji mechanicznej bo widziałem też slidery z napędem za pomocą śruby.
Te 12 mm średnicy koła zębatego to średnica najmniejszego koła jaki udało mi się kupić z paskiem zębatym dla niego. Na razie walczę z konstrukcją mechaniczną, bo szynę
z wózkiem chcę zrobić z tego co posiadam w domu i nie wydawać wielkich pieniędzy np na szynę IGUS-a. Pomału chyba też zacznę zamawiać elementy elektroniczne bo widzę,
że Arduino daje o wiele większe możliwości niż prosty sterownik.

crobe
15-02-2015, 19:27
To może zmienić ustawianie zamiast w krokach dać na mm. tylko trzeba by było tez z góry podać ile kroków wychodzi na 1mm, ale w użytkowaniu było by bardziej praktyczne, bo chyba lepiej sobie wyobrazić zdjęcie co 10 mm
niż co 50 kroków ;p

Ale to się zmieni później na razie chce odpalić i sprawdzić czy działa...

Odnośnie zakresu zwiększę go do 60 to tylko zmiana 2 liczb w skrypcie.

vid3
11-04-2015, 13:25
Hej,
też kombinuję coś takiego.

Chcę zrobić obrotnicę z małego urządzenia PTZ ( od kamer do monitoringu).
Jest tam silnik krokowy i mocowanie do aparatu. Trzeba tylko wymienić sterownik.
Myślę, że do wakacji będzie działać.

Poszedłem też w nieco innym kierunku.
Aparaty które mają odpowiednie parametry są zwykle drogie.
Postanowiłem wyszukać coś taniego co nie będzie dużą stratą w przypadku zalania, zniszczenia, zagubienia.
I co można w warunkach domowych przerobić.
Mój wybór padł na Nikona L-29 - zabaweczka którą można bez problemu otworzyć.
Wstawiłem tam timer (interwalometr) ze stałym krokiem 10 sekund.
Wystarczył mały procesorek ATTiny 13 bez żadnych dodatkowych elementów.
Obsługa proścutka.

Aparacik oczywiście sporo wad. Ale bije na głowę ceną. Ok 200 PLN.
Można bez obawy eksperymentować.
Tu link do filmiku z przeróbki : https://youtu.be/Cc0-C5GwOx0

i kilka próbek : www.port.az.pl (www.port.az.pl)

crobe
28-06-2015, 13:35
Witam sterownik wózka do "time lapse" gotowy.
Ustawienie pod śrubę 1 mm = 1 obrót
Wyzwalanie aparatu (Nikon D60) za pomocą IR.

FILM
https://youtu.be/txHGQe5YAFU

RobertMiernik
28-06-2015, 20:53
wygląda ciekawie, pokaż efekty :>