mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADNS3080 Steuerung


Autor: Karl F. (fkcm95)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe gestern einen ADNS3080 optical Flow Sensor gekauft und wollte 
die dx/dy Werte rauslesen. (siehe Anhang)
Um die Werte auszulesen benutze ich den Mikrocontroller Arduino Uno.

Folgende Pin-Belegung:
 
Arduino  ADNS3080
Pin 13: SCK
Pin 12: MOSI
Pin 11: MISO
Pin 10: SS
Pin 9: Reset
Pin 3,3V: 3V
Pin GND: GND

Wenn der Sensor mit einer Spannung versorgt wird, sollte eine kleine 
Leuchte auf der Platine leuchten. Normalerweise sollte der Sensor 
mittels 5V Betriebsspannung betrieben werden. Doch wenn ich den 5V Pin 
mit meinem Mikrocontroller verbinde, leuchtet die Leuchte nicht. 
Seltsamerweise leuchtet Sie mit 3,3V.

Den Code habe ich aus dem Internet übernommen, um zu gucken ob überhaupt 
der Sensor funktioniert.

https://github.com/Neumi/OpticalFlowA3080ArduinoPr...

Doch irgendwie bekomme ich immer, dass mein Sensor nicht initialisiert 
ist. Das heißt ich habe keine Kommunikation zu dem Sensor. Woran könnte 
das liegen?
Habe den Code jetzt mit einen Mega und Uno versucht. Bei beidem die 
selben Fehler...

Autor: vertauscht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das stimmt was du schreibst haste Miso und Mosi vertauscht. Das 
sollte doch aber das erste sein das man prüft?

Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mich vertippt, sorry:
Arduino  ADNS3080
Pin 13: SCK
Pin 11: MOSI
Pin 12: MISO
Pin 10: SS
Pin 9: Reset
Pin 3,3V: 3V
Pin GND: GND

: Bearbeitet durch User
Autor: vertauscht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wäre ja auch zu einfach gewesen...

Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe die Pin-belegung und installierung der Pins mehrfach kontrolliert, 
jedoch ist der Fehler irgendwo anders. Wie könnte ich bei sowas Schrift 
für schritt vorgehen?

Autor: Daniel V. (voda) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Karl F. schrieb:
> Habe die Pin-belegung und installierung der Pins mehrfach kontrolliert,
> jedoch ist der Fehler irgendwo anders. Wie könnte ich bei sowas Schrift
> für schritt vorgehen?

Indem Du das Datenblatt nimmst und Dir die Sensorregister anguckst. Hast 
Du die Schaltplan von Deinem Modul? NPD muss ebenfalls aktiviert werden.


Gruß
Daniel

Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel und vielen Dank für deinen Beitrag.

Den Pin für NPD habe ich im Programm nicht einbezogen. Habe aber auch 
keinen Schaltplan von dem Modul gefunden, vielleicht ist der PIN NPD 
intern verbunden. Kann das sein?

Autor: Daniel V. (voda) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, schau mal auf der Platine und vergleiche das mit dem Pinning im 
Datenblatt. So wie ich das sehe, wird jeder Pin auf der Steckerleiste 
herausgeführt.

Ich denke, Du brauchst die SPI-Leitungen, Reset und NSS. So war das 
zumindest mit dem Nachfolger ADNS3090 wobei der Unterschied nur bei der 
höheren ips des ADNS3090 liegt.

Schau mal hier:
https://github.com/Lauszus/ADNS3080

oder auch sehr interessant:
http://das-lab.vs.eecs.uni-kassel.de/publications/...

Vllt kannst Du beide Links als Basis nehmen.

Gruß
Daniel

: Bearbeitet durch User
Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Links.

ich bekomme auch mit dem Code von Github nur die Meldung, dass kein 
SenOr initialisiert wäre.

Kann das sein, dass der Sensor kaputt ist? Ich habe es noch nicht 1x 
betrieben.

Autor: Daniel V. (voda) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl F. schrieb:
> ich bekomme auch mit dem Code von Github nur die Meldung, dass kein
> SenOr initialisiert wäre.

Wie ist die genaue Fehlermeldung? Wenn ich in dem Lazarus-Code schaue, 
existieren zwei.

Auszug aus dem Code:
#define ADNS3080_PRODUCT_ID 0x00

uint8_t id = spiRead(ADNS3080_PRODUCT_ID);
  if (id == ADNS3080_PRODUCT_ID_VALUE)
    Serial.println(F("ADNS-3080 found"));
  else {
    Serial.print(F("Could not find ADNS-3080: "));
    Serial.println(id, HEX);
    while (1);
}

Hier musst Du im Datenblatt gucken. Die ADNS3080 gibt es von zwei 
Hersteller, PixArt und Avago. Diese sind technisch gleich nur in der 
Product-Id sind diese verschieden.

Die andere Fehlermeldung ist, wenn das Firstpixel nicht gefunden wird.

Wie sieht Deine Verschaltung aus? Ist das nur der reine IC oder hat 
deine gekaufte Lösung noch etwas mehr? Wie sieht die Rückseite aus? Wenn 
Du nur den IC mit herausgeführten Kontakten hast, musst Du die 
Referenzschaltung im Datenblatt gucken, was Du noch so brauchst.

Dein Sensor muss doch auch ein Datenblatt haben. Kleiner Hinweis. Der 
ADNS3080 arbeitet mit 3,3 V.

Gruß
Daniel

: Bearbeitet durch User
Autor: Karl F. (fkcm95)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir kommt die Meldung im Seriellrn Monitor: "Could Not find ADNS - 
3080"
Habe im Anhang die Rückseite der Platine geschickt. auf der Rückseite 
sind neben dem ADNS noch weitere zwei kleine Bauteile, die führen aber 
auf den PIN 5V und 3V. Also sind die eher für die Spannungsreglung da.
Was meinst du mit Referenzschaltung? Habe dem Hersteller mal nach dem 
Datenblatt gefragt, glaube aber nicht, das da was kommt. 😔

Habe eben aber bemerkt, dass es zwei Verschiedenen Farben von den 
Platinen auf dem Markt gibt. Vielleicht ist dies der Grund.. aber Es 
sollte doch bestimmt eine Möglichkeit geben, den Sensor anzusteuern.

Mein Sensor hat den Wert 0 für ProduktID, wenn ich es mit der Funktuon 
Read Auslese.

: Bearbeitet durch User
Autor: Daniel V. (voda) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl F. schrieb:
> Also sind die eher für die Spannungsreglung da.
> Was meinst du mit Referenzschaltung? Habe dem Hersteller mal nach dem
> Datenblatt gefragt, glaube aber nicht, das da was kommt. 😔

Das Datenblatt des Sensors welches ich hochgeladen habe, reicht. Lese 
Dir bitte dieses genau durch und mach Dich mit der Funktion des Sensors 
vertraut. Dort sind alle Informationen enthalten.


Gruß
Daniel

: Bearbeitet durch User
Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin in diesem Bereich ziemlich neu, daher würde ich mich auf jeden 
Anhaltspunkt freuen. Wo könnte ich mich einlesen bzw was sollte ich mir 
genau angucken?

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du mit den 5V I/Os direkt an den ADNS rangehst (ohne level 
shifter), ist die Wahrscheinlichkeit gross, dass du den Chip bereits 
geröstet hast.
Mein Rat: Fang doch nach all den Postings mit was einfacherem an.
Das wird so nix.

Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hier musst Du im Datenblatt gucken. Die ADNS3080 gibt es von zwei
> Hersteller, PixArt und Avago. Diese sind technisch gleich nur in der
> Product-Id sind diese verschieden.

Was meinst du mit Product-Id unterschiedlich? Habe auf beiden 
Datenblätter gegzckt, die Adresse ist die selbe.

Autor: Daniel V. (voda) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl F. schrieb:
> Was meinst du mit Product-Id unterschiedlich? Habe auf beiden
> Datenblätter gegzckt, die Adresse ist die selbe.

Mein Fehler. Bei dem ADNS3090 war der Defaultwert verschieden.

Zur Fehlersuche: Schlaue dir die Referenzschaltung im Datenblatt an und 
anschließend lese das Kapitel Synchronous Serial Port durch. Dort steht 
unter anderem:

The serial port cannot be activated while the chip is in power down mode 
(NPD low) or reset (RESET high). SCLK, MOSI, and NCS may be driven 
directly by a 3.3V output from a micro-controller, or they may be placed 
in an open drain configuration by enabling on-chip pull-up current 
sources. The open drain drive allows the use of a 5V micro-controller 
without any level shifting components.

Bitte mach Dich mit dem Prinzip des optischen Flusses sowie der 
optischen Sensortechnik vertraut, d.h. wie funktioniert der  Sensor, wie 
entsteht letztendlich das Bild (genauer: Helligkeitsunterschiede), wie 
sehen die Rohdaten aus dann, das ist für Dich sehr wichtig, was ist der 
optische Fluss? Dann wirst Du viel leichter verstehen wie gewünschte 
Werte dx/dy zu stande kommen und vor allem, wie der Sensor arbeitet, 
denn genau diese Grundlagen fehlen Dir völlig.

Ein guter Anfang ist Wikipedia:
https://de.wikipedia.org/wiki/Optischer_Fluss
https://de.wikipedia.org/wiki/Active_Pixel_Sensor

Strubi schrieb:
> Mein Rat: Fang doch nach all den Postings mit was einfacherem an.
> Das wird so nix.

Leider bin ich auch dieser Meinung :-(. Ich wüsste jetzt auch gar nicht, 
wo ich anfangen soll außer auf das Datenblatt zu verweisen.

Gruß
Daniel

: Bearbeitet durch User
Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, danke für die hilfreichen Tipps.
Werde mich heute da dransetzen.

Autor: Karl F. (fkcm95)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Egal was ich mache, kann ich keine Kommunikation zum Sensor aufbauen. 
Entweder 255 oder 0 Weerte bekomme ich für meine ID.

Habe auch den PIN NPD einbezogen und in den Setups auf High gesetzt. 
Aber das bringt leider auch nichts.

Kann wirklich der Sensor kaputt sein?

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.