DSLR-Forum
AnzeigeTamron

Zurück   DSLR-Forum > Technik und Gestaltung > Fototechnik > Bastelecke

Anzeige

Antwort
 
Themen-Optionen Ansicht
Alt 01.11.2010, 22:07   #11
Karrollus
Benutzer
 
Registriert seit: 18.04.2007
Beiträge: 267
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Hallo Niggoh,
schon jetzt vielen Dank für Deine Mühe .
Schönen Abend noch
Karl
Karrollus ist offline   Mit Zitat antworten
Alt 10.11.2010, 23:19   #12
Saber
Benutzer
 
Registriert seit: 16.11.2008
Ort: Nähe Ansbach
Beiträge: 319
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Hallo,

Erstmal großes Dankeschön! Wirklich super!

Habe seit vorgestern einen Arduino Uno und habe heute mit den Teilen meiner Conrad Lichtschranke und einem noch vorhandenen 2N2222 die Schaltung aufgebaut.

Bin leider nur noch zu einem Trockentest gekommen aber funktioniert wirklich prima. Reagiert auch noch auf kleinste und schnelle Dinge ganz im Gegensatz zu meiner Relaisversion vom großen C.

Hoffe ich kann morgen ein paar Versuche im praktischen Betrieb damit machen

Also nochmal: DANKE!

LG Jörg

ps:

Das einzige was ich jetzt noch interessant finden würde und für Versuchebei meinen Bildern brauchen würde, wäre ein Klatschschalter oder Sound-Trigger per Arduino. Aber leider bin ich mit dem Baustein und der Programmierung eines solchen noch ziemlicher Laie.
__________________
JK-FotoArt.de
Saber ist offline   Mit Zitat antworten
Alt 10.11.2010, 23:29   #13
Niggoh
Benutzer
 
Threadstarter
 
Registriert seit: 02.04.2010
Ort: Nürnberg
Beiträge: 712
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Falls ich da mal Interesse dran bekommen sollte, schreibe ich dazu auch noch ein Tutorial. Ich kann mir aber eigentlich nicht vorstellen, dass das sonderlich kompliziert ist. Falls Du Dich selbst ein bisschen einlesen willst, hab ich auf die Schnelle das hier gefunden: http://www.dtic.upf.edu/~jlozano/int...ow_sensor.html und http://www.dtic.upf.edu/~jlozano/int...icrophone.html

EDIT:
Bin seit heute auch Lötkolben-Besitzer. Sobald ich den zu sinnvollem Einsatz gebracht habe, gibts hier nochmal ein Update.

Geändert von Niggoh (10.11.2010 um 23:50 Uhr)
Niggoh ist offline   Mit Zitat antworten
Alt 10.11.2010, 23:56   #14
Saber
Benutzer
 
Registriert seit: 16.11.2008
Ort: Nähe Ansbach
Beiträge: 319
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Hallo,

Dank dir schonmal für die Hilfe!

Werde mich morgen mal darüber machen ob es nicht möglich ist meinen schon fertig gelöteten hviz Sound-Trigger mit an den Arduino zu packen.

Sollte ja eigentlich gehen in dem man das Signal des Thyristors das normalerweise den Blitz auslöst an den Arduino bekommt.
Nach dem motto wenn auf Pin so und so High dann schalte den Pin für den Transistor wie in deiner Schaltung auf High und der Blitz löst aus. So könnte man auch wieder je nach Wunsch eine Verzögerung mit einbinden.

Das einzige kleine Problem das ich beim Gedanken darüber machen noch habe ist das die Hviz Schaltung ja mit 9V läuft. Und ich nicht gerade der elektro Profi bin. Meine Überlegung wäre so mit Hilfe des Thyristors vom 5V Power pin auf einen Eingang 5V+ als High durchzuschalten, aber so einfach wirds dann wohl auch wieder nicht sein

Aber trotzdem nochmal Danke!

LG Jörg
__________________
JK-FotoArt.de
Saber ist offline   Mit Zitat antworten
Werbung
Acronis True Image 2017 - Die umfassende Backup-Lösung - Testversion erhältlich!
Zu viel Werbung? Hier kostenlos bei DSLR-Forum.de registrieren!
Alt 11.11.2010, 12:45   #15
aupex
Benutzer
 
Registriert seit: 30.01.2007
Beiträge: 126
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Hallo,
Bin auch gerade dabei mit dem Arduino was zu basteln.
Soweit ich es verstanden habe gehst du vor dem Thyristor auf einen Pin zurück und lest dessen Wert aus.
Dann zündet ein anderer Pin den Blitz (zwischen Blitz und Arduino Optokoppler setzen.)
auf www.arduino.cc sind viele beispiele (auch mit Schaltplan)

z.b.

http://www.arduino.cc/cgi-bin/yabb2/...num=1208117338
oder
http://projects.nosomos.org/flash-trigger/

Gruss
__________________
--> [ x ] <-- Hier mit Kugelschreiber fest drücken für neuen TFT Bildschirm
aupex ist offline   Mit Zitat antworten
Alt 11.11.2010, 15:07   #16
Apollo13
Moderator
 
Registriert seit: 02.01.2008
Ort: Pattensen
Beiträge: 1.070
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Wie Geil!!
...sehr schön zu sehen das ich nicht der Einzige bin der einen kl. Kanll hat

Wenn Du aus meiner Gegend kommst, sollte man sich mal treffen

Schönes teil!

Gruß Carsten
__________________
___Moderative Beiträge sind in grün - der Rest ist meine private Meinung - Meine Homepage
Apollo13 ist offline   Mit Zitat antworten
Alt 11.11.2010, 17:33   #17
aupex
Benutzer
 
Registriert seit: 30.01.2007
Beiträge: 126
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Der Trigger in den Links ist NICHT von mir. Ich orientiere mich nur am Schaltplan.
An diesem Ding kann man ewig weiterbauen.
Wenn es erst mal so läuft, wie ich möchte ist der nächste Schritt ein kleines LCD-Display mit Tastern...
__________________
--> [ x ] <-- Hier mit Kugelschreiber fest drücken für neuen TFT Bildschirm

Geändert von aupex (11.11.2010 um 17:42 Uhr) Grund: edit
aupex ist offline   Mit Zitat antworten
Alt 30.01.2011, 21:05   #18
Niggoh
Benutzer
 
Threadstarter
 
Registriert seit: 02.04.2010
Ort: Nürnberg
Beiträge: 712
Standard Update: Magnetventilsteuerung

Inzwischen habe ich mein Projekt ein wenig ausgeweitet und noch ein Magnetventil integriert, um die Tropfen einfacher kontrollieren zu können. Da die Ströme, die beim Schalten des Magnetventils fließen, das Arduino zerstören würden, ist dafür eine kleine Zusatzschaltung notwendig, die allerdings für sich genommen schon komplexer ist, als die Lichtschranke.

Die Selbstentwicklung wäre über meine bescheidenen Elektronikkenntnisse hinausgegangen. Zum Glück gibt es Menschen mit mehr Ahnung, so zum Beispiel Pixelmagier, dessen Schaltung ich 1:1 übernommen habe (im Original hier zu finden). Spätestens an dieser Stelle macht es dann aber leider nicht mehr viel Sinn, mit Lüsterklemmen zu arbeiten.
Ich habe die Schaltung zum Testen auf ein Breadboard gesteckt und dann auf eine kleine Platine gelötet. Dazu habe ich erstmalig in meinem Leben einen Lötkolben in die Hand genommen, hat trotzdem keine halbe Stunde gedauert. Wie das mit dem Löten funktioniert, wird in diesem Video recht gut erklärt, sofern man der englischen Sprache mächtig ist.

Als Ventil habe ich das billigste 12V Gleichstromventil in einem Online-Auktionshaus gekauft, die restlichen Teile kamen von einem großen deutschen Elektronikhändler, der auch einige Ladengeschäfte betreibt. Außerdem benötigt man eine 12V Gleichstromquelle, da bin ich auf ein Netzteil umgestiegen, weil ich keine Lust mehr auf Batterien hatte. Theoretisch wären aber z.B. auch 8 AA-Batterien denkbar, auch dafür gibt es entsprechende Batteriefächer.

Die eigentlich Arbeit war dann, das zugehörige Arduino-Programm zu schreiben. Das wurde deutlich länger, weil die Verzögerung nicht mehr mittels delay() implementiert werden kann, da ansonsten die Lichtschranke nicht schalten kann, während die Tropfenverzögerung am Ventil stattfindet. So ganz komfortabel ist auch dieses Programm nicht, aber es funktioniert.
Ein paar Bemerkungen: die Pins für Ventil und Kamera habe ich gegenüber der ursprünglichen Version verändert, ebenso einige der Variablennamen. Entweder müssen also die Kabel an andere Stellen gesteckt werden oder die Pin-Belegung (im Programm Zeile 3 und 4) muss geändert werden. Die Lichtschranke kalibriert sich jetzt in den ersten zwei Sekunden Programmlaufzeit und legt dann automatisch einen Schwellenwert fest. In der Hauptprogrammschleife wird ganz zu Anfang eine Boolsche Variable auf true gesetzt, diese könnte man bei Bedarf dazu nutzen, die Tropfen nur auf Knopfdruck fallen zu lassen, anstatt alle 10 Sekunden, wie es derzeit implementiert ist. Dazu müsste man dann die Schaltung noch um einen Knopf und einen Widerstand erweitern, was kein großes Problem sein dürfte.

Hier der Quelltext:

Code:
// KONSTANTEN
const int lichtschranken_pin = A0;
const int ventil_pin = 12;
const int kamera_pin = 13;

// VARIABLEN
// Alle Zeiten in Millisekunden angegeben

// Zeitvariablen initalisieren
// Auslöseverzögerung Kamera
long aktuellezeit_ausloeseverzoegerung = 0;
long startzeit_ausloeseverzoegerung = 0;
// Ventil
long aktuellezeit_ventil = 0;
long startzeit_ventil = 0;

// Ventilöffnungszeiten festlegen
int tropfenzeit_1 = 150;
int verschlusszeit_1_2 = 70;
int tropfenzeit_2 = 150;
int verschlusszeit_2_3 = 70;
int tropfenzeit_3 = 150;
int gesamtzeit_tropfserie = tropfenzeit_1 + verschlusszeit_1_2 + tropfenzeit_2 + verschlusszeit_2_3 + tropfenzeit_3 + 500; // für die Inaktivzeit der Lichtschranke, 500 ms Sicherheitsreserve, damit die Lichtschranke nicht durch den dritten Tropfen doch wieder aktiviert werden kann

// Zeit zwischen den Tropfenserien festlegen
int pausenzeit = 10000;

// Auslöseverzögerung festlegen
int ausloeseverzoegerung = 288;

// Aktivierungszeit für Kameraauslöser festlegen
int ausloeser_aktivzeit = 200;

// Lichtschranken-Schwellenwert festlegen
int lichtschranke_messwert;
int lichtschranke_maximum;
int lichtschranke_minimum;
int lichtschranke_schwellenwert;
float lichtschranke_schwellenwertfaktor = 0.85; // Faktor, mit dem der maximale Messwert der Lichtschranke multipliziert wird, um den Schwellenwert zu errechnen, muss unbedingt kleiner als 1 sein!

// Statusvariable Lichtschranke
boolean lichtschranke_unterbrochen = false;

// Statusvariable Kameraauslöser
boolean kamera_ausloeser_aktiv = false;

// Satusvariable Ventil
boolean ventil_offen = false;

// Statusvariable Tropfserie
boolean tropfserie_laeuft = false;

// Statusvariable Tropfen ausgelöst
boolean tropfen_ausgeloest = false;

// Ventilzeiten in Absolutwerte umrechnen
int endzeit_offen_1 = tropfenzeit_1;
int endzeit_geschlossen_1_2 = endzeit_offen_1 + verschlusszeit_1_2;
int endzeit_offen_2 = endzeit_geschlossen_1_2 + tropfenzeit_2;
int endzeit_geschlossen_2_3 = endzeit_offen_2 + verschlusszeit_2_3;
int endzeit_offen_3 = endzeit_geschlossen_2_3 + tropfenzeit_3;
int endzeit_pause = endzeit_offen_3 + pausenzeit;

// Eingabevariable initialisieren
int eingabe;

void setup() {
  // Ausgangspins initialisieren
  pinMode(ventil_pin, OUTPUT); 
  pinMode(kamera_pin, OUTPUT);
  // Serielle Verbindung zum Computer initialisieren für Textausgabe
  Serial.begin(9600);
  Serial.println("Lichtschranke wird kalibiert...");
  // Die ersten zwei Sekunden die Lichtschranke kalibrieren
  while (millis() < 2000) {
    lichtschranke_messwert = analogRead(lichtschranken_pin);
    // Maximalwert speichern
    if (lichtschranke_messwert > lichtschranke_maximum) {
      lichtschranke_maximum = lichtschranke_messwert;
    }
    // Minimalwert speichern, nur fuer den Fall, dass wir den Schwellenwert irgendwann mal anders berechnen wollen
    if (lichtschranke_messwert < lichtschranke_minimum) {
      lichtschranke_minimum = lichtschranke_messwert;
    }
  }
  lichtschranke_schwellenwert = lichtschranke_maximum * lichtschranke_schwellenwertfaktor;
  Serial.print("Leerwert der Lichtschranke: ");
  Serial.println(lichtschranke_maximum);
  Serial.print("Schwellenwert der Lichtschranke: ");
  Serial.println(lichtschranke_schwellenwert);
}

void loop() {
  tropfen_ausgeloest = true;

  // Tropfserie fallen lassen falls ausgelöst
  if (tropfen_ausgeloest == true) {
    aktuellezeit_ventil = millis();
    if (aktuellezeit_ventil - startzeit_ventil < endzeit_offen_1 && ventil_offen == false) {
      digitalWrite(ventil_pin, HIGH);
      ventil_offen = true;
      tropfserie_laeuft = true;
      Serial.println("Tropfen 1 Start, Ventil offen");
    }
    else if (aktuellezeit_ventil - startzeit_ventil > endzeit_offen_1 && aktuellezeit_ventil - startzeit_ventil < endzeit_geschlossen_1_2 && ventil_offen == true) {
      digitalWrite(ventil_pin, LOW);
      ventil_offen = false;
      Serial.println("Tropfen 1 Ende, Ventil geschlossen");    
    }
    else if (aktuellezeit_ventil - startzeit_ventil > endzeit_geschlossen_1_2 && aktuellezeit_ventil - startzeit_ventil < endzeit_offen_2 && ventil_offen == false) {
      digitalWrite(ventil_pin, HIGH);
      ventil_offen = true;
      Serial.println("Tropfen 2 Start, Ventil offen");
    }
    else if (aktuellezeit_ventil - startzeit_ventil > endzeit_offen_2 && aktuellezeit_ventil - startzeit_ventil < endzeit_geschlossen_2_3 && ventil_offen == true) {
      digitalWrite(ventil_pin, LOW);
      ventil_offen = false;
      Serial.println("Tropfen 2 Ende, Ventil geschlossen");        
    }
    else if (aktuellezeit_ventil - startzeit_ventil > endzeit_geschlossen_2_3 && aktuellezeit_ventil - startzeit_ventil < endzeit_offen_3 && ventil_offen == false) {
      digitalWrite(ventil_pin, HIGH);
      ventil_offen = true;
      Serial.println("Tropfen 3 Start, Ventil offen");
    }
    else if (aktuellezeit_ventil - startzeit_ventil > endzeit_offen_3 && aktuellezeit_ventil - startzeit_ventil < endzeit_pause && ventil_offen == true) {
      digitalWrite(ventil_pin, LOW);
      ventil_offen = false;
      Serial.println("Tropfen 3 Ende, Ventil geschlossen");    
    }
    else if (aktuellezeit_ventil - startzeit_ventil > endzeit_pause) {
      startzeit_ventil = aktuellezeit_ventil;
      tropfserie_laeuft = false;
      lichtschranke_unterbrochen = false;
      Serial.println("Ende der Pause, Startzeit aktualisiert, Lichtschranke wieder scharf");
    }
  }
  
  // Lichtschranke abfragen
    lichtschranke_messwert = analogRead(lichtschranken_pin);
    if (lichtschranke_messwert < lichtschranke_schwellenwert && lichtschranke_unterbrochen == false) {
      Serial.println("Lichtschranke unterbrochen");
      lichtschranke_unterbrochen = true;
      startzeit_ausloeseverzoegerung = millis();
    }
    // Verzögerungszeit abwarten, dann Kamera-Auslöser aktivieren
    aktuellezeit_ausloeseverzoegerung = millis();
    if (aktuellezeit_ausloeseverzoegerung - startzeit_ausloeseverzoegerung > ausloeseverzoegerung && aktuellezeit_ausloeseverzoegerung - startzeit_ausloeseverzoegerung < ausloeseverzoegerung + ausloeser_aktivzeit && kamera_ausloeser_aktiv == false && lichtschranke_unterbrochen == true) {
      digitalWrite(kamera_pin, HIGH);
      kamera_ausloeser_aktiv = true; 
      Serial.println("Kamera-Ausloeser aktiviert");
    }
    // Aktivzeit des Auslösers abwarten, dann Kamera-Auslöser deaktivieren
    else if (aktuellezeit_ausloeseverzoegerung - startzeit_ausloeseverzoegerung > ausloeseverzoegerung + ausloeser_aktivzeit && aktuellezeit_ausloeseverzoegerung - startzeit_ausloeseverzoegerung < gesamtzeit_tropfserie && kamera_ausloeser_aktiv == true) {
      digitalWrite(kamera_pin, LOW);
      kamera_ausloeser_aktiv = false;
      Serial.println("Kamera-Ausloeser deaktiviert");
    }
}
Ich werde auch hierzu noch ein Fototutorial erstellen. Die zusätzlichen Kosten belaufen sich auf unter 20 Euro, wovon etwa 15 auf das Ventil entfallen.

Vorab erstmal für die bastelfreudigeren Menschen unter uns eine Fritzing Skizze und ein Foto von meinem Breadboard, die selbige korrigiert. In Fritzing gibts den von Pixelmagier vorgeschlagenen Optokoppler nicht, deswegen musste ich einen anderen einmalen (mit gestrichelter Linie umrandet). Der von Pixelmagier vorgeschlagene Optokoppler muss wie gezeigt eingesetzt werden, man beachte die kleine Aussparung, die ich unauffällig rot umrandet habe. Die 2 AA-Batterien sollen die 12V Gleichspannungsquelle darstellen. Pluspol rotes Kabel, Minuspol schwarzes Kabel. Das Magnetventil ist das lustige Ding unten in der Mitte, die Polung der Anschlüsse ist zumindest bei dem von mir gekauften Ventil egal.

Ich freue mich über alle Nachbauten, übernehme aber nach wie vor keine Verantwortung für Schäden und Fehlfunktionen. Bei mir funktioniert es aber und mein Haus steht auch noch. Nett wäre natürlich auch, wenn diejenigen, die die Idee noch erweitert oder verändert haben, Fotos und Anregungen hier posten würden.

Beispielfotos, die mit dem System geschossen wurden z.B. hier.
Angehängte Grafiken
Dateityp: jpg magnetventilschaltung_Steckplatine.jpg (145,9 KB, 1195x aufgerufen)
Dateityp: jpg optokoppler.jpg (215,8 KB, 784x aufgerufen)
Niggoh ist offline   Mit Zitat antworten
Alt 31.01.2011, 10:12   #19
Ockham
Benutzer
 
Registriert seit: 04.10.2008
Beiträge: 2.074
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Einige Anmerkungen:

Ich bin derzeit dabei, so was Ähnliches aufzubauen: Arduino Uno plus Magnetventil plus Optokoppler um Kamera und Blitz auszulösen.

Eines verstehe ich nicht: wozu brauchst du eine Lichtschranke? Die Tropfen gehorchen der Schwerkraft, es reicht doch nach dem letzten Tropfen den Blitz mit einer gewissen, variablen Verzögerungszeit auszulösen anstatt da noch eine Lichtschranke zu bemühen.

Gehe ich recht in der Annahme dass du nur die Kamera auslöst, also der Blitz an der Kamera hängt? Das wäre aus meiner Sicht eher suboptimal, weil die Auslöseverzögerung der meisten Kameras nicht 100% konstant ist. Blitze lassen sich mit wesentlich kürzeren Verzögerungszeiten und kleinerem Jitter auslösen.

Mein vereinfachter zeitlicher Ablauf sieht übrigens folgendermaßen aus:

Kamera aktivieren (Kamera über Fokuskontakt aufwecken)
Kamera-Verschluss öffnen (bulb)
Ventil öffnen und schließen (evtl mehrfach)
Verzögerungszeit abwarten
Blitz zünden
Kamera-Verschluss schließen
Kamera deaktivieren

Das ganze kann man dann in einer Schleife n-mal laufen lassen und dabei dann diverse Parameter variieren (Tropfengröße, Verzögerung etc).

Die SW ist schon halbwegs fertig, die Sequenz wird auf Tastendruck gestartet. Ich muss nur noch die Verkabelung des Ventils und von Kamera und Blitz fertigstellen.
Ockham ist offline   Mit Zitat antworten
Alt 31.01.2011, 16:33   #20
qwerzt
Benutzer
 
Registriert seit: 18.07.2009
Beiträge: 1.010
Standard AW: Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Könntet ihr mir vielleicht irgentwie mitteilen, was für magnetventile ihr verwendet?
Am besten per PN, da händlerlinks ja nicht erwünscht sind.
Ich habe auch evtl. vor sowas zu bauen nur ich bin noch am zusammenrechnen der Preise, da ich im moment etwas knapp bei kasse bin.
__________________
Viele Grüße
qwerzt

Nikon D600 + Nikon 20mm 2,8 + Tamron 24-70 2,8 VC + Sigma 50mm 1,4 DG + Sigma 85mm 1,4 + Tamron 90mm 2,8 Makro + Tamron 70-300mm 4-5,6 USD VC + Sony RX100 II
qwerzt ist offline   Mit Zitat antworten
Antwort

Stichworte
lichtschranke , trigger


Zurück   DSLR-Forum > Technik und Gestaltung > Fototechnik > Bastelecke
Themen-Optionen
Ansicht

Nutzungsbedingungen
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu




Alle Zeitangaben in WEZ +2. Es ist jetzt 23:05 Uhr.

Anzeige


* * *

Zu viel Werbung?
Kostenlos registrieren!

* * *

Anzeige

Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Copyright ©2003 - 2018, DSLR-Forum.de
Akzeptieren

Diese Website verwendet Cookies. Durch die Nutzung dieser Webseite erklärst Du Dich damit einverstanden, dass Cookies gesetzt werden. Falls du mit unserer Verwendung von Cookies nicht einverstanden bist, so ändere bitte die Cookie-Einstellungen in deinem Browser oder verlasse unsere Website. Mehr erfahren