PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Maussensor auslesen bereitet Probleme



flntobi
06.06.2010, 21:53
Hallo,

ich versuche für meinen Roboter eine alte Dell-Maus auszulesen um so den zurückgelegten Weg zu messen.

Ich verwende dazu einen Atmega8 mit dieser Anleitung:
http://www.rn-wissen.de/index.php/Maussensor

Die x/y-Berechnung funktioniert nicht, die Werte sind eher zufällig und entsprechen nicht der Mausbewegung.

Um der Sache auf den Grund zu gehen habe ich erstmal versucht bei der Maus den sleep Zustand zu deaktivieren und zu überprüfen ob das auch so ausgelesen werden kann.

Das scheint prinzipiell zu funktionieren (siehe korrektes oszibild), allerdings ist die Einstellung nach 1 sec wieder weg (evtl. neustart des Maussensors). Außerdem, klappt es nicht immer, so jedes 10. mal im Schnitt sehe ich das Oszibild Fehler.

Hat jemand eine Idee?

Gruß Tobi

RobbyFan
13.06.2010, 13:01
Hallo,

aslo ich hatte es mal mit einer neuen Optischen Probiert ging ganz gut.
bloss x-Achse hat geklemmt.
versuch mal ne andere maus...

Mfg Marcel

mare_crisium
13.06.2010, 16:44
flntobi,

was Du schilderst, ist mir bei einem A9388 von ATL (koreanischer Hersteller: www.atlab.co.kr) auch passiert: Wenn die Maus 1s lang nicht bewegt wurde, schaltete der Sensor jedesmal automatisch in den "Sleep"-Modus. In dieser Betriebsart wirft er nur alle 10,9ms einen Blick durch die Linse, um nachzusehen, ob sich 'was geändert hat. Wenn ja, geht er wieder in den "Active"-Modus über. Für diese Umschaltung braucht er etwa 0,5ms. Die Wege, die die Maus während dieser 11,4ms zurückgelegt hat, bleiben unberücksichtigt. Das stört nicht sehr, wenn man die Maus als Bildschirmzeiger verwendet. Aber bei Odometrieanwendungen führt es unweigerlich zu unbrauchbaren Daten :-( .

Kannst Du herausfinden, was da für ein Sensor in Deiner Maus steckt? Dann könnte man im Datenblatt nach Hinweise suchen, ob und wie sich der "Sleep"-Modus dauerhaft abschalten lässt. Beim ADNS2610 von AVAGO, z.B., geht das :-).

In den Oszillogrammen sind einige Pulse nicht richtig rechteckig: Teilweise erreichen sie die "High"-Spannung gar nicht, teils fällt die Spannung vorzeitig wieder ab. Das könnte bedeuten, dass diese Leitung einen "Pull-up"-Widerstand braucht. Damit meine ich einem Widerstand (10kOhm ist ein guter erster Versuchswert) von der Signal- zur 5V-Leitung.

Ciao,

mare_crisium

flntobi
14.06.2010, 16:01
Hallo,

erstmal vielen Dank für die Antworten. Ich habe das Problem gefunden. Ich hatte den USB-Controller noch auf der Platine. Und der hat die Stromzufuhr für den ADNS2610 gesteuert. Da ich ja die Kommunikationsverbindung zwischen den Beiden unterbrochen habe, hat der USB-Controller ständig den ADNS2610 per Strom an/aus geresetet. Nachdem ich den ADNS2610 jetzt direkt Strom versorgt habe funktioniert alles nach Datenblatt. O:)

Gruß Tobi

amal
05.05.2011, 10:23
hi,
ich möchte auch diesem Beispiel zum laufen bringen, wie mache ich das? also der Maussensor habe ich von seinem Kontroller getrennt, wo zeigt er mir die x,y Axe, brauche ich dafür eine LCD oder nur der Maussensor und Atmega8?
danke

flntobi
05.05.2011, 10:44
Ich hab das so hingekriegt wie es in dem wiki artikel beschrieben ist: http://www.rn-wissen.de/index.php/Maussensor . Ich hab nur den Atmega8 und den adns2610 von der Maus verwendet.

amal
05.05.2011, 11:25
wenn man den Code liest: da sind 2 Unterprogramme :
lcd_init(LCD_DISP_ON);
lcd_clrscr();
und die sind für LCD oder nicht?

amal
09.05.2011, 14:05
gut, ich habe jetzt Usart benutz, um die Koord zu zeigen, und das hat teilweise funktioniert. ich möchte jetzt die Maus mit einem Laserpointer beleuchten, wie kann man das machen, soll ich die LED von der Maus trennen? oder wie kann man das realisieren.

amal
13.05.2011, 14:24
hallo, kann mir bitte jemand sagen was die Abkürzung in deisem Code Programm bedeuten :
pan:
ino:
also nur der komplete Name, damit man das lesen kann
danke

amal
16.05.2011, 09:52
moin,
wo findet man den Register 0x16
//wenn 7tes bit vom Register 0x16 gesetzt ist wurde die Maus bewegt => Bewegungsdaten abfragen
, im Datenblatt gibt es nicht,

amal
19.05.2011, 12:40
Ich hab das so hingekriegt wie es in dem wiki artikel beschrieben ist: http://www.rn-wissen.de/index.php/Maussensor . Ich hab nur den Atmega8 und den adns2610 von der Maus verwendet.

wie hast du das gemacht, wo hast du die Motion- Status register gefunden, und wo hast du Pins DXOVF und DYOVF gefunden?

Vilem
28.05.2011, 17:49
Hallo flntobi,
ich bin auch sehr an der Auslesung der Mausdaten interessiert und benutze auch das von Dir erwähnte Programm (von Javik) aus RN-Wissen. Ein ähnliches Programm findet sich übrigens auch unter https://www.roboternetz.de/phpBB/files/pan3101_und_rn-control.pdf Ich verwende als Sensor einen SDNS-2083, (der mit Deinem 2610 identisch ist, nur heißen hier die Register 0x4X statt 0x0X), direkt mit SCKL und SDIO an Asuro-Ports und eigener 5 Volt-Versorgung.
Wenn das Auslesen bei Dir funktioniert, bitte ich Dich um Angabe, durch welche Register Du die Register des PAN3101 ersetzt hast, und zwar im Programm von RN-Wissen in folgenden Zeilen:
pan_write(0x00,0x80); // Reset PAN3101
pan_write(0x00,0x01); // kein Sleep modus
weiter unten:
ino=pan_read(0x16); //wenn 7tes bit vom register 0x16 gesetzt ist ...
Ist das 7te bit auch beim 2610 maßgeblich, daß die Maus bewegt wurde oder ein anderes bit ?
Was also hast du für 0x00, 0x80, 0x01, 0x16 beim PAN gesetzt ?
Ich versuche, die ausgelesenen Sensor-Daten mit SerWrite über Hyperterminal auszugeben, scheint kompliziert zu sein und funktioniert noch nicht. Wie gibst Du die Daten aus ? Danke Dir für Antwort.
Gruß Vilem

flntobi
29.05.2011, 13:38
Hi,
Bei mir klappts. Über Genauigkeit kann ich allerdings keine Aussage machen.

zum init schreib ich folgendes:

//Reset PAN3101
pan_write(0x00,0x80);
// kein Sleep modus
//pan_write(0x00,0x01);
_delay_ms(200);zum auslesen verwende ich:

//Deltax Register auslesen
x=pan_read(0x03);

//und zu der Positionvariable addieren
posx=posx+x;

//ab hier nochmal das Gleiche fuer die yRichtung
y=pan_read(0x02);
posy=posy+y;und posx und posy nutz ich dann zur navigation.

Gruß Tobi