Ich möchte eine optische USB-Maus als Drehzahlsensor einsetzen.
Es stellt sich daher die Frage, wie man zwei Mäuse an einem System
(Linux) betreiben kann, aber nur eine für das GUI benutzt wird. Kann man
die Maus nach ID o.Ä. in die X-Konfiguration einbinden, oder ist die
Zuordnung anderweitig möglich?
Als nächstes wäre zu klären, wie und welche Mausdaten man bekommen kann.
Welche Schnittstelle bietet der USB/Maustreiber? Gibt es evtl. auch die
Information, dass die Maus den Untergrund nicht erkennen kann (Maus in
der Luft)? Damit könnte eine weitere Aufgabe gelöst werden.
Da die Maus lediglich eine Relativbewegung meldet, wäre außerdem noch
ein zusätzlicher Impuls pro Umdrehung wünschenswert. Hat schonmal jemand
versucht die IR-Sensoren des Mausrads als Reflextaster zu verwenden?
Wenn nur einer der Sensoren benutzt wird sollte doch aus dem
Quadratursignal bei einer Flanke abwechselnd ein "rauf" und "runter"
gemeldet werden?
Die Tasten der Maus ließen sich auch wunderbar in meiner Anwendung
verwenden. Gibt es zufällig Mäuse, die auch Ausgänge haben, die
zweckentfremded werden können (z.B. schaltbare LED Beleuchtung)?
ich benutze zwei HDNS2000 Chips von Agilent. Die sind schon etwas älter
und wahrscheinlich nicht mehr in aktuellen Mäusen drin. Als Eingänge
verwende ich eine I/O-Karte im IDE-Bus (Adidata, auch schon älter), bei
der ein Treiber für Linux mitgeliefert wurde, den man sich anpassen
konnte.
Wenn der Sensor den Untergrund nicht erkennt, gibt's kein Signal. Es
lohnt sich, ein wenig mit Linsen vor der Optik des Chips zu
experimentieren, dann kann die Struktur, die du abtastest auch mal ein
paar mm vom Chip entfernt sein und es geht trotzdem noch.
Was du mit 'Relativbewegung', und mit dem 'Zusätzlichen Impuls pro
Umdrehung' meinst, habe ich nicht ganz begriffen. Optische Mäuse haben
kein Rad eingebaut, dementsprechend gibt es auch keine Umdrehung. Die
Encodierung der Bewegung - inclusive der Richtung - erfolgt genau wie
bei Kugelmäusen (die haben ein Rad, auf das die Kugelbewegung übertragen
wird) - im Gray-Code. Wie das funktioniert, steht hier:
http://www.mikrocontroller.net/articles/Drehgeber
... jetzt kapier' ich: Mit 'Drehzahl' meinst du die Achse, deren
Umdrehungsgeschwindigkeit du messen willst ... sorry, bin eben völlig
auf dem Schlauch gestanden. Ich schätze, diesen zusätzlichen Impuls
kannst du dir nicht aus der Maus holen. Die Optik-Mäuse machen einen
Pixelbasierten Bildvergleich in x- und y- Richtung, daher ist denen
wurscht, ob sie auf eine rotierende Achse schauen oder auf eine
Tischplatte ...
Hallo,
ich meinte
> die IR-Sensoren des *Mausrads*
Man kann natürlich über den Umfang und die zurückgegebenen Daten auch
eine Drehzahl berechnen, aber ein zusätzlicher Impuls pro Umdrehung wäre
wünschenswert.
Ansonsten muss ich mich wohl ins HID Protokoll einarbeiten. Aber
wahrscheinlich hast Du recht, die Information, dass keine Erkennung mehr
möglich ist (LED wird dunkler, wenn Maus nicht auf dem Tisch) wid wohl
über USB nicht zur Verfügung stehen.
Klar kann man die Sesoren auch direkt benutzen, aber so ist die IO-Karte
für 5 Euro schon dabei, wenn man einfach eine Maus benutzen könnte..
Ich glaube, das wird prinzipiell nichts.
mach mal folgenden Versuch.
nimm deine Tastatur als anschlagkante, leg deine Maus dran und merk dir
die Cursorposition. bewege deine Maus von der kante weg und wieder ran
(mehrmals)
die Cursorposition kommt nicht mehr in die Ausgangsstellung zurück. es
werden einfach viele Impulse verschluckt. Als Weg oder Drehzahlmesser
vollig ungeeignet.
mfg
Thomas
ein bekannter von mir hat einmal eine diplomarbeit zu dem thema
geschrieben.
es ging um die umdrehungsgeschwindigkeit von rotierenden scheiben
(einfach gesagt)
bei ihm hat es damals funktioniert, deshalb würde ich prinzipiell sagen:
das müsste gehn!
er hat damals die werte in labview ausgewertet.
maussensoren arbeiten übrigens mit dem spi protokoll. µC anbingung wäre
hier denkbar.
gruß
Christoph
thomas schrieb:> nimm deine Tastatur als anschlagkante, leg deine Maus dran und merk dir> die Cursorposition. bewege deine Maus von der kante weg und wieder ran> (mehrmals)> die Cursorposition kommt nicht mehr in die Ausgangsstellung zurück. es> werden einfach viele Impulse verschluckt. Als Weg oder Drehzahlmesser> vollig ungeeignet.
Was einzig und alleine am 08/15 Maus Treiber liegt / Sensor Auslese
Hardware in der Maus Liegt. Wichtigstes Stichworte wäre hier die
"Maus Beschleunigung" Einstellungen des OS.
Der nackte Sensor wie der a2610 machen 400CPI bis max. 12inch in der
Sekunde und das zuverlässig. Du musst nur schnell genug die Daten
auslesen.
thomas schrieb:> Ich glaube, das wird prinzipiell nichts.> mach mal folgenden Versuch.>> nimm deine Tastatur als anschlagkante, leg deine Maus dran und merk dir> die Cursorposition. bewege deine Maus von der kante weg und wieder ran> (mehrmals)> die Cursorposition kommt nicht mehr in die Ausgangsstellung zurück.
Das liegt mitunter aber an dieser unsäglichen "Mausbeschleunigung", bei
der die Empfindlichkeit abhängig von der Geschwindigkeit variiert wird.
Ohne die sieht das schon anders aus.
Marc D. schrieb:> Der nackte Sensor wie der a2610 machen 400CPI bis max. 12inch in der> Sekunde und das zuverlässig.
Damit misst man aber nur den zurückgelegten Weg, die Drehzahl muss man
dann rechnen, und jeder Fehler bei der Wegmessung und beim Durchmesser
geht in das Ergebnis ein. Ausserdem muss eine geignete Struktur
vorliegen, mit einer spiegelblank polierten Achse geht das nicht. Darum
muss man schon mal die Frage nach der Sinnhaftigkeit stellen: eine
einfache Reflexlichtschranke und ein Strich auf der Achse lösen das
Problem weitaus einfacher und zuverlässiger.
BTW es dürfte nicht so einfach sein, bei einem Ausfall nach Jahren die
gleiche Maus als Ersatz zu bekommen.
Gruss Reinhard
Ist das hier noch das Mikrocontroller-Forum? Statt eine Maus zu
vergewaltigen, koennte man einen kleinen Arduino nehmen, einen
Drehgeber, ein paar LED und fertig. Ohne viele Probleme mit
zweckentfremdeter Hard & Software...