mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nikon AI Objektiv zum AF umbauen


Autor: Rainer Flachmann (ferdiflachmann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich lese in diesem Forom schon länger mit, wenn ich 
programmiertechnische Fragen habe. Nun habe ich ein Problem bei dem ich 
Hilfe brauche.

Ich arbeite selbst in der Elektronikentwicklung einer kleineren Firma. 
Die Programmierung von Microchip und Atmel ist mir nicht fremd.


Und nun zu meinem Problem:

Ich besitze eine D70, die erste Einsteiger Digital SLR von Nikon.

Wie alle Consumerkameras ist diese in ihren Funktionen eingeschrängt. Es 
ist keine Arbeitsblenden Belichtungsmessung möglich, da keine Objektive 
ohne Elektronik (älter als AF) verwendet werden können.

Da ich aber ein gutes 50mm F1,4 AI Objektiv habe, dachte ich mir dafür 
einen Controller fertig zu machen. Als Vorlage und Teilespender 
(kontakte) habe ich ein schrottiges Sigma UC 28-70mm F 3,8-4,8 besorgt.

Die Übertragung zwischen Kamera und Objektiv habe ich mit Hilfe eines 
Adapteringes und Flachbandkabels analysiert.

Es gibt mindestens fünf Kontakte:

VCC: 5V

RC1: Damit leitet die Kamera die Übertragung ein, wird dann vom Objektiv 
übernommen.

SCK: Clock, taktet nur 8mal pro Byte. Bei steigender Flanke wird bit 
übernommen. Macht immer die Kamera.

SIO: Daten 8 Bit. Ich denke LSB zuerst. Ist Bidirektional.

Frei: Zur Codierung.

Frei:

GND: Masse

Die drei Steuerleitungen sin alle Opencolektor.


Die Kamera fragt nach einem Objektiv durch ziehen von RC1. Das antwortet 
ebenfalls durch low auf SIO. Nach 1 ms muß das Ojektiv die RC1 Leitung 
übernehmen und SIO wieder frei machen. Die Kamera taktet nun ein Byte 
zum Objektiv.
Das antwortet indem erst RC1 einmal nach High und zurück wechselt und 
die Kamera mit SCK das Byte liest.

Wenn das Objektiv mit dem Byte der Kamera nichts anfangen kann antwortet 
es mit 0xFF. Da passiert mit 0x28, 0x27 und 0x25 mit denen die Kamera 
immer beginnt. Bei 0x22 antwortet es mit 26 Bytes.

Diese 26 Bytes sind bis auf 7 Bytes statisch. Fünf davon übertragen die 
Brennweite und zwei die kleinste Blendenzahl. In den unveränderlichen 
Bytes scheint noch mehr wie z.B. die größte Blendenzahl codiert zu sein. 
Nur die eingestellte Entfernung wird nicht übertragen, das ist bei 
diesem Objektiv noch nicht vorgesehen.


Die Nachbildung der Objektiv-CPU hebe ich nun fertig. Aber aus den zu 
übertragenden Daten werde ich nicht schlau. Ich sehe keinen Zusammenhang 
zwischen den Werten und den realen Blenden- und Brennweitenzahlen.


Gibt es hier jemanden mit Erfahrungen zu diesem Protokoll der mir helfen 
könnte?

Gruß

Rainer

Autor: ferdiflachmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Jetzt habe ich mal meinen Sourcecode und eine Liste mit Objektivdaten 
angehängt.

Vieleicht hat jemand eine Idee?

Gruß
Rainer

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Tabelle koennte ein paar mehr Informationen vertragen. Warum gibt 
es mehrere Datengruppen bei gleicher Brennweite und Blende? Was hast du 
veraendert?

Autor: Rainer Flachmann (ferdiflachmann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich habe diese Tabellen nur von den Objektiven abgenommen. Sie sind noch 
orginal.

Zwischen den markierten Brennweiten und Blenden ändert sich an der 
Kamera nichts obwohl sich der Datenstrom in feineren Schritten ändert.

Bei den beiden Objektiven ändern sich ja auch nicht die gleichen 
Spalten.

Ich bin mir zur Zeit nur sicher, daß die Spalten F-K für die Brennweite 
sind. Wenn ich diese alleine verändere, zeigt mir mein SB600 Blitz das 
an. Er kann aber nur Werte von 28-70mm anzeigen.

Bei den Spalten X-AC muß es sich um kleinste Blendenzahl und irgendwie 
um die Blendenstufen handeln. Ich konnte hier schon eine Blende von F1,4 
angeben. Aber leider waren dann nur 23 Stufen stellbar. Es ging dann nur 
noch bis F16 statt 22 abzublenden. Ändern konnte ich das aber nicht. 
Jeder weitere Versuch wurde mit Blende F1,0 ohne weitere Blendenstufen 
belohnt.

Mehr habe ich bisher noch nicht heraus gefunden.

Gruß

Rainer

Autor: Rainer Flachmann (ferdiflachmann)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

 Ich habe jetzt endlich Zeit zum weiteren testen gefunden. Ich habe eine 
neues Exelsheet beigefügt.

Bei den blauen und orangenen Spalten in ich mir bei der Funktion sicher.

Die kleinste Blendenzahl (orange) habe ich von F 1.0 bis F 6.7 
ausgetestet.

Die Brennweite (blau) konnte ich nicht genau beschreiben, weil ich nur 
mit dem Blitzgerät von 24 mm - 85 mm testen kann.

Alle gelben Spalten ändern sich ohne das ich erkennen könnte wofür das 
gut ist.

In den restlichen Werten ist noch die mögliche Anzahl der Blendenstufen 
enthalten. Wenn ich beim Sigma die Blende von F 3.8 auf F 1.4 ändere, 
verringert sich auch die größte Blendenzahl von F 22 auf F 16 (17 
Stufen) mit. Und das wäre auch richtig. Also muß diese Zahl noch 
irgendwie codiert sein.

Kennt jemand bei einer Nikon Kamera eine Möglichkeit, wie man erkenen 
kann ob das Objektiv die Entfernung für die Matrixmessung ändert?

Gruß

Rainer

Autor: Rainer Flachmann (ferdiflachmann)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe jetzt die drei wichtigsten Werte entschlüsselt.

1. Die Brennweite: Mit meinem Blitz konnte ich Brennweiten von 24-85 mm 
nachbilden. Da damit meine 50 mm dabei ist, reicht es mir. Mehr Infos 
wäre mit Fotos und dessen EXIF Daten möglich. Eine Brennweiteänderung 
beeinflußt normalerweise die Blende auch.

2. Offenblende: Die Blendenwerte sind sehr fein gestuft und werden von 
der Kamera angezeigt. Bei meinem Tamron lügt der Hersteller mit der 
Blende. Egal ob 28 oder 75 mm. Die Blende bleibt bei F 2.8, was nicht 
möglich ist. Der Durchmesser der Frontlinse wird beim zoomen ja nicht 
größer. Mein Tokina Macro (100 mm ohne D) dagegen, ändert die 
Offenblende beim Scharfstellen im Nahbereich, weil es sehr lang wird. 
Müßte der hersteller nicht unbedingt zugeben.

3. Entfernung: Sie war schwer zu erkennen, weil nicht alle Objektive sie 
Übermitteln und sie ungenau sind. Gerade Unendlich ist nicht bei allen 
Herstellern gleich.


Schön wäre es jetzt noch zu wissen:

1. Wo stehen die konstanten Blendenstufen. Meine Lösung beinhaltet eine 
passende Blendenstufung die von F 1.4 bis F 16 reicht. Sie ist identisch 
mit F 3.8 bis F 22. Wo sie aber wie codiert ist verstehe ich nicht.

2. Die Entfernung hat noch eine zweite Information ohne ersichtliche 
Funktion.

3. Es gibt noch weitere veränderliche Werte (gelb). Es geht aber auch 
ohne sie.

4. Die Konstante Werte. Auch hier sehe ich keine Abhängigkeiten, wenn 
ich sie verändere.

5. Und wozu werden die Daten bei Komando 0x25,0x27,0x28 länger. 0x28 
könnte AF-S und 0x25 D-Objektive bedeuten.


Ich werde nun ein Folienpoti zur Entfernungs Feststellung nehmen und die 
restlichen Werte konstant lassen.
Der Sourcecode ist im groben fertig. Jetzt kann er auch die Kamera 
nachbilden und die Daten an der UART ausgeben.

Rainer

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.