Forum: Mikrocontroller und Digitale Elektronik Infrarotauslöser für NIKON DSLR


von Nikon (Gast)


Lesenswert?

Hallo,

ich bastel gerade an einem Infrarotauslöser für meine Nikon D40. Nun bin 
aber soweit, dass die Kamera das Signal nicht erkennt.
Vielleicht passt etwas nicht an meiner Methode zum Signal erzeugen.

Das Signal braucht ja eine Frequenz von 38,4khz. Nun habe ich den Timer0 
so eingestellt, dass er 76800 mal die Sekunde aufgerufen wird und dort 
dann den Pin der IR LED toggelt.

Im Programm gehe ich dann wie folgt vor:
1
// Interrupts an
2
sei();
3
// 400 µs warten
4
_delay_us(400);
5
// Interrupts aus
6
cli();
7
// zur Sicherheit nochmals LED aus
8
PORTB &= ~(1 << PB4);
9
// 3580 µs warten
10
_delay_us(3580);
11
// usw.

Doch leider funktioniert das nicht so, wie ich das will. Vielleicht hat 
jmd eine Idee woran es liegen könnte. Danke schonmal.

von Bananen Joe (Gast)


Lesenswert?

Ich gehe davon aus, das du fuer einen AVR programmierst und die AVR-libc 
nutzt.
Im Handbuc 
hhttp://www.nongnu.org/avr-libc/user-manual/group__util__delay.html#gab20bfffeacc678cb960944f5519c0c4f 
steht dort, das fuer delay_us Werte bis maximal 768 zulæssig sind. fuer 
3.58 ms also dann delay_ms nutzen, es werden eh float-Wert als Parameter 
uebernommen, d.h. es gehen auch Nachkommastellen.

von egal (Gast)


Lesenswert?

Lass die Programmierung der Burst-Pakete erst einmal weg und schau mit 
dem Oszi, ob dein Pin, das an die LED gehen soll, auch wirklich mit rund 
38kHz zwischen H und L wackelt. Es ist wie an der Wursttheke, es darf 
auch etwas mehr sein (bis 40kHz sollte gehen).
Wenn das hinhaut, ist es recht simpel die einzelnen Burstpakete noch zu 
implementieren. Siehe hierzu auch das Embedded Projects Journal 11. Und 
bedenke, dass der Burstcode zweimal gesendet werden muss.

Eigentlich keine große Sache, der Fernauslöser.

von Nikon (Gast)


Lesenswert?

Also die Frequenz stimmt. Jetzt muss ich nochmal nach dem Programm 
schauen.

von Jens P. (Gast)


Lesenswert?

Ich weiss das ist jetzt dumm genölle, aber ich hab mir damals einen 
fertigen Noname für 5€ gekauft, der ebenfalls gut tut.

Weisst was mal interessant wär?

Die D40 lässt sich doch über USB Steuern (auch mit dieser Nikon eigenen 
Steuersoftware und irgendein freeware-Ding gibts dazu auch).

Die kann aber keine Belichtungsreihen.

Ein USB-Gerät, welches "Belichtungsreihenbefehle" abschickt wär doch mal 
was!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Wenn Du es nicht hinbekommst, könntest Du auch IRMP nutzen. Das 
unterstützt sowohl das Empfangen von Signalen einer Nikon-Fernbedienung 
als auch das Senden an eine Nikon-Kamera per IRSND.

Ist zwar etwas wie Kanonen auf Spatzen, aber funktioniert. :-)

von Nikon (Gast)


Lesenswert?

Ich bau den deswegen selber, weil es mir Spaß macht und weil ich noch 
einen 3,5 mm Klinkenstecker integriert habe um dann an meinen 
Kameratimer zu gehen, der dann die Kamera im bestimmten Intervall 
auslöst.

Denn die D40 hat ja leider kein direkten Anschluss für einen 
Kabelauslöser.

von Bananen Joe (Gast)


Lesenswert?

Nochmal: guck dir die grøsse deiner Werte fuer die delays an und welche 
groesse diese vertragen! delay_us geht bis max 768!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Nikon schrieb:

> ich bastel gerade an einem Infrarotauslöser für meine Nikon D40.

Ich habe gerade mal in den IRMP-Source reingeguckt, wie das 
Nikon-Protokoll aussieht.

Es hat gerade mal ein Startbit und 2 Datenbits. das erste bit ist 0, das 
zweite ist 1.

Damit ergibt sich folgender Frame:

Start-Bit: 2200 µsec Puls, 27100 µsec Pause
1. Bit=0:   500 µsec Puls,  1500 µsec Pause
2. Bit=1:   500 µsec Puls,  3500 µsec Pause

Die Modulationsfrequenz generierst Du am besten per PWM.

> sei();
> // 400 µs warten
> _delay_us(400);
> // Interrupts aus
> cli();

Du kannst einen Timer nicht mit cli() und sei() stoppen - ausser Du hast 
eine ISR, wo Du den Output-Pin togglest. Das wäre aber unnötig. PWM ist 
da schon einfacher. Du musst dann den Timer einfach ein- und ausschalten 
;-)

Gruß,

Frank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.