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.
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
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.
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 :)
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. ;)
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)
@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
@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
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
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
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