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:
1
2
ArduinoADNS3080
3
Pin13:SCK
4
Pin12:MOSI
5
Pin11:MISO
6
Pin10:SS
7
Pin9:Reset
8
Pin3,3V:3V
9
PinGND: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/OpticalFlowA3080ArduinoProcessing/blob/master/ArduinoA3080/ArduinoA3080.ino
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...
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?
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
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?
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/Heumueller2014-Project-OpticalFlow.pdf
Vllt kannst Du beide Links als Basis nehmen.
Gruß
Daniel
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.
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:
1
#define ADNS3080_PRODUCT_ID 0x00
2
3
uint8_tid=spiRead(ADNS3080_PRODUCT_ID);
4
if(id==ADNS3080_PRODUCT_ID_VALUE)
5
Serial.println(F("ADNS-3080 found"));
6
else{
7
Serial.print(F("Could not find ADNS-3080: "));
8
Serial.println(id,HEX);
9
while(1);
10
}
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
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.
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
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?
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.
> 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.
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_Flusshttps://de.wikipedia.org/wiki/Active_Pixel_SensorStrubi 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
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?
Hat eigentlich jemand eine Lösung für dieses Problem gefunden? Ich habe
auch das gleiche Problem, das ich immer nur 0 oder 255 als ID auslesen
kann. Woran kann es liegen?