IR-Auslöser für Pentax-Kameras

Inhaltsverzeichnis
IR-Auslöser für Pentax-Kameras

Akku-Ladekurve

Wir bauen uns eine Piepliothek!

Ein Automat ohne delay()

Pimp my Code!

Tipps + Tricks



IR-Auslöser für Pentax-Kameras

Ein fertiger Infrarot-Auslöser kostet zwar nicht allzu viel, aber wer gerne bastelt und einen Arduino hat, findet hier eine hoffentlich interessante Anregung.

Wie das IR-Signal bzw. die Impulsfolge zum Auslösen aussehen muss, ist in mehreren Usenet-Postings erwähnt. Die Trägerfrequenz beträgt 38 kHz.

Hardware

Benötigt werden

  • Ein Arduino. Ich habe den Uno R3.
  • Zwei Widerstände mit 50 Ω bzw. 500 Ω. Im Zweifelsfall nimmt man Widerstände mit etwas höheren Werten.
  • Eine IR-Sendediode. Ich verwende die CQY 99.
  • Ein Transistor (z. B. BC 548 C).
  • Ein Taster (1 × „AN“ oder „UM“ genügt).
  • Ein bisschen Draht und etwas, worauf man die Schaltung aufbauen kann. Für meine Zwecke tut es ein sog. „Breadboard“, auf dem ich die Schaltung schnell zusammenstecke.
  • Bei Bedarf: Ein Gehäuse.

Diese Zutaten verbaut man folgendem Schaltplan entsprechend:

Schaltplan

Software

Das Programm für den Arduino besteht aus drei Funktionen: Neben den obligatorischen Funktionen setup() und loop() gibt es die Funktion send_pulse(), die einen IR-Puls sendet, dessen Länge dem übergebenen Wert in Millisekunden entspricht.

// pentax_ir

// IR-Ausloeser f. Pentax-Kameras

const byte irPin=13;     // Pin 13 steuert die IR-Sendediode
const byte buttonPin=12; // Wenn gedrueckt, wird ausgeloest
const byte delayUs=9;    // etwa halbe Periodendauer von 38 kHz
const byte periodes=38;  // Zahl d. 38 kHz-Perioden in einer ms

void setup()
{
  pinMode(irPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // Als Eingang
                                    // mit aktiviertem
                                    // Pull-up-Widerstand
                                    // konfigurieren
}

void loop()
{
  if(digitalRead(buttonPin)==LOW) // Ausloesen
  {
    send_pulse(13); // 13 ms an
    delay(3); // 3 ms aus
    for(int x=0; x<7; x++) // 7 mal: 1 ms an, 1 ms aus
    {
      send_pulse(1); // 1 ms an
      delay(1); // 1 ms aus
    }
    while(digitalRead(buttonPin)==LOW) // Nichts weiter tun,
                                       // solange Taster gedr.
    {
      delay(10);
    }
  }
}

// send_pulse

// Diese Funktion sendet einen IR-Puls
//
// Die Laenge des Pulses in Millisekunden
// wird beim Aufruf uebergeben

void send_pulse(int n)
{
  long int pulses=n*periodes;
  for (long int x=0; x != pulses; x++)
  {
    digitalWrite(irPin, HIGH);
    delayMicroseconds(delayUs);
    digitalWrite(irPin, LOW);
    delayMicroseconds(delayUs);
  }
}

Wird der Taster betätigt, löst die Kamera aus.

Weiter zu: Akku-Ladekurve


Nach oben Inhaltsverzeichnis

Valid HTML 4.01 Transitional