Forum: Projekte & Code Optical Maus Sensor ADNS2610 mit AVR


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von holger (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal wieder was nettes sinnfreies für den Feierabend ;)

Auslesen der Bilddaten eines ADNS-2610 aus einer
Logitech Optical USB Maus mit AVR. Einmal speichern
als PPM Bilddatei und einmal Ausgabe auf KS108 GLCD.

Siehe readme.txt im Anhang.

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Und hier ein kleines Bild aus dem Sensor.

von holger (Gast)


Lesenswert?

Das 'e' ist nur knapp 1mm hoch !

von Lothar L. (lole)


Lesenswert?

Und wie sieht das mechanisch aus, Optik ...
Grüsse Lothar

von holger (Gast)


Lesenswert?

>Und wie sieht das mechanisch aus, Optik ...

Sitzt alles noch in der Maus ;)

von bastler (Gast)


Lesenswert?

machste 100 stück nebeneinander und schon haste 100mm....

von bastler (Gast)


Lesenswert?

oder baust den sensor aus und machst eine grosse darmspiegelung.

von doofi (Gast)


Lesenswert?


von thomas (Gast)


Lesenswert?

hallo zusammen,
ich arbeite auch an ein Projekt mit dem Maussensor.
ich würde gerne die foxusierung verändern, ich möchte dass der sensor 
auf ein Abstand von 10cm reagiert.
ich würde gerne wissen obs ein Programm gibt mit den man die bilderdaten 
auslesen und grafisch darstellen kann

von wt (Gast)


Lesenswert?

Mit welchen Sensor arbeitest Du denn? 10cm erscheinen mir zu weit, um 
irgendwas zu sehen.

von Sandra (Gast)


Lesenswert?

Hallo zusammen,

Weiß denn irgendwer in welcher Maus der ADNS-2610 Sensor verbaut ist?
Ich würde auch mit dem Sensor arbeiten weiß aber nicht in welcher Maus 
ich den finde.

von gast (Gast)


Lesenswert?

z.B. Logitech Mäuse haben den ADNS-2610 oder aber auch den grösseren 16 
Pin chip ADNS-2051 eingebaut.

die Frage war zwar schon etwas her aber nur der Vollständigkeit halber 
schreib ich das hier :)

von Sigint 112 (sigint)


Angehängte Dateien:

Lesenswert?

wt schrieb:
> Mit welchen Sensor arbeitest Du denn? 10cm erscheinen mir zu weit, um
> irgendwas zu sehen.

Naja,
  den Fokus kann man in weiten Bereichen einstellen. Für viele Sachen 
dürfte die Auflösung aber nichtmehr brauchbar sein. Als Webcam ist das 
aber noch ausreichend. ;)

von Harald M. (mare_crisium)


Lesenswert?

Um an einen ADNS-2610 zu kommen, braucht man keine Maus zu schlachten; 
den gibt's bei Segor direkt zu kaufen.

mare_crisium

von maus (Gast)


Lesenswert?

der ADNS-2610 kostet 3,20€ + Porto, eine nagelneue Logitech - oder 
Noname Maus kostet ca. 4€, auf dem Flohmarkt oder sonstwo gebraucht ca. 
1€.
Bei einer Maus hat man gleich auch noch ein 5 adriges Kabel, schöne 
IR-LEDs mit IR-Sensoren, Microschalter usw. dabei.
Also wer den 2610 einzelnd neu kauft der hat wohl zuviel Geld....

Logitech Mäuse sind von unten durchsichtig, da kann man sehen ob der 
2610 da drin ist (8 Pins)

von Olaf (Gast)


Lesenswert?

@ Sigint

Kannst du die Hardware & Software zu deinem Bild kurz skizzieren? Es 
interessiert mich brennend wie du das Bild aufgenommen hast.

von Sigint 112 (sigint)


Angehängte Dateien:

Lesenswert?

@Olaf:
  Das ist nur ein einfacher Hack. Ich hab einen ADNS-2051 aus einer 
alten Maus an ein AVR-Devboard gehangen und per Bitbanging die Bilddaten 
ausgelesen. Danach hab ich die Daten einfach per RS232 an den PC 
übertragen und mit einem einfachen VB-Programm die Daten in ein Bild 
umgewandelt. Ist relativ langsam, funktioniert aber halbwegs.
Anbei die Projektdateien. Wie gesagt: Ist alles nur ein Hack...

Gruß,
  SIGINT

von Harald M. (mare_crisium)


Angehängte Dateien:

Lesenswert?

@Olaf, @SIGINT

man kann den ADNS2610 auch direkt über die SPI-Schnittstelle ansteuern 
(siehe Anhang). Das Assemblerprogramm verwendet die Bezeichnungen von 
Elm Chang für die Register; die Definitionen sind in der include-Datei 
enthalten. Die Dokumentation der Irrungen und Wirrungen auf dem Weg zum 
funktionierenden Code habe ich zur Abschreckung nicht gelöscht ;-).

Das Problem beim ADNS2610 besteht in der bidirektionalen SDIO-Leitung; 
normal wäre je eine separate Leitung für MISO und MOSI. Die Lösung 
besteht darin, beim Auslesen der ADNS-Register den MOSI-Ausgang 
hochohmig, d.h. als Eingang zu schalten.

Vom Einsatz des Chips als Webkamera darf man nicht zuviel erwarten: Die 
Framerate ist ca. 1600 fps, pro Aufnahme also 625us. Für das Auslesen 
eines einzelnen Pixels braucht man ca. 100 us. Für ein komplettes Bild 
braucht man also mindestens 32,4 ms. In dieser Zeit macht der Chip 51 
Aufnahmen. Bewegungen führen deshalb zu unbrauchbaren Bildern.

mare_crisium

von Tueftler (Gast)


Lesenswert?

Hallo Harald,
du scheinst dich ja ganz gut mit dem Teil beschäftigt zu haben.
Vielleicht kannst du (oder jemand anders natürlich auch) mir 
weiterhelfen.
Ich möchte diesen Sensor auch gerne benutzen.
Nun habe ich aber eine Frage:
1.
In deinem letzte Post schreibst du, dass der Sensor anscheinend immer 
das aktuelle Bild, was er gerade sieht, ausgibt, und daher Bilder bei 
Bewegung nicht zu Gebrauchen sind. Allerdings steht im Datenblatt auf 
Seite 23, letzter Absatz, dass er sich anscheinend immer das aktuelle 
Bild speichert. Oder habe ich das falsch verstanden und er speichert 
immer nur den letzten Pixel?
2.
Wenn ich den Sensor pixelmäßig auslese, arbeitet doch die Wegerfassung 
im Sensor weiter oder? Ich frage deshalb, da ich gerne sowohl den Sensor 
auslesen möchte als auch in regelmäßigen Abständen die Delta_x und 
Delta_y Werte lesen möchte. Wenn die durch das Auslesen des sensors 
verfälscht würden, wäre das schade. Dass natürlich die Delta_x und 
Delta_y keinen Überlauf haben sollten in der Zwischenzeit ist mir klar.

Freue mich über jede Antwort, auch von anderen natürlich.
Danke,
Tueftler

von Harald M. (mare_crisium)


Lesenswert?

Tueftler,

@1. Der ADNS2610 speichert immer das ganze aktuelle Bild, weil er das 
für die Auswertung (Vergleich mit dem vorhergehenden Bild) ja braucht. 
Nur gibt's alle 0,6ms (bei 1600 fps) ein neues ;-)! Und, wie Du aus dem 
Datenblatt schon weisst, muss man bei der Abfrage jedes einzelnen Pixels 
0,1ms warten. D.h. nach den ersten, maximal 6, Pixels, liefert der Chip 
die Pixels des nächsten Bildes. Wenn das Bild sich bewegt, dann bilden 
diese Pixels zusammen mit den vorangegangenen kein zusammenhängendes 
Bild mehr. In meinen Versuchen bekam ich dann horizontale bzw. vertikale 
Streifen.

@2. Ob das geht, habe ich nie probiert; dem Datenblatt nach müsste es 
hinhauen. Vergiss' aber nicht, dass Du für's Auslesen der 18x18 Pixels 
mindestens 32ms brauchst (18*18*0,1ms) ;-)! In Wirklichkeit sind's 
natürlich mehr als 32ms, weil ja noch die Zeit für die Übermittlung über 
den SPI-Bus und die interne Verarbeitung dazukommt.

Ciao,

mare_crisium

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.