- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 5 von 5

Thema: Maus-Sensor an NIBObee

  1. #1

    Maus-Sensor an NIBObee

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo RN-Com,

    ich möchte versuchen meine kleine Biene mit einem Maus‐Sensor verbinden.
    Als Grundlage habe ich mir https://www.roboternetz.de/phpBB2/fi...rn-control.pdf angeschaut und gedacht, dass ich das einmal testen möchte.
    Doch das alles schien zu leicht: Maus bestellt und rein geschaut. Es ist ein PAN 3402/3504 verbaut und hat 14 Pins. Nun besteht mein Problem darin, dass ich Pinbelegung nicht kenne, da ich keine Datenblätter gefunden habe.
    Nun zur Frage: Was ist der PAN3402/3504?
    Sind das zwei in einen? (Es steht noch in der Maus: "PAN3401: Y1,C3 OPEN; Reversed for future use" und "PAN 3502: Y1,C3 CLOSED")
    Und wie bekomm ich jetzt heraus, wie ich die Daten auslesen kann?

  2. #2
    Benutzer Stammmitglied Avatar von Vilem
    Registriert seit
    05.12.2010
    Ort
    bei Bad Kreuznach
    Beiträge
    53
    Hallo,
    Hallo,
    ich kann Deine Frage nicht konkret beantworten, aber vielleicht helfen Dir folgende Hinweise ein Stück weiter. Im Internet fand ich bei www.pixart.com.tw unter products einen mousesensor für PS2 PAW3402 und einen mousesensor für USB PAW3504, beide leider nicht mit 14 sondern mit nur 12 Pins. Aber klingt doch sehr verdächtig, oder ?
    Die beiden haben offenbar laut Datenblatt ein integriertes PS2 bzw. USB-Interface also extra ohne Interface Chip (von Cypress) wie das sonst üblich ist.
    Ist bei Dir noch ein zweiter Chip drin ? Wenn nicht, hast Du vielleicht einen Vorgänger-Typ auch mit integrierten interfaces. Das ist meiner Ansicht nach leider schlecht, denn man muß den Maus Sensor bei dem von Dir zitierten Programm direkt über 2 Pins (I/O und clock (vom mikrocontroller)) auslesen können.
    Außerdem sind die Register, aus denen die Mausdaten ausgelesen werden, immer ganz verschieden, müßten also umprogrammiert werden.
    Ich bin auch sehr an einem Maussensor an meinem Asuro interessiert bin aber leider in C noch ein totales Programmier-greenhorn und kriege das Programm noch nicht mal kompiliert.Gelingt Dir das ?
    Evtl. könnten wir uns zusammentun, ich könnte Dir vielleicht zwar nicht den PAN3101 aber eine ähnlichen Sensor besorgen.
    Gruß Vilem
    *** fail faster to succeed sooner ***

  3. #3
    Danke, dass du dich mit meinem Problem befasst hast. Aber nach langem Suchen habe ich es aufgegeben nach diesem Sensor weiter zu suchen. Ich habe jetzt in einer anderen Maus den ADNS2051 gefunden, zu dem es auch umfangreiche Infos gibt. Ich versuche es später genauere Erfolge berichten zu können

  4. #4
    Soo, ich habe jetzt ein wenig mehr gefunden, doch funktioniert es noch nicht so recht
    Code:
    #include "nibobee.h"
    
    #include <stdlib.h>
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    
    #include <util/delay.h>
    
    #define DDR_SCK 	DDRA			/*!< DDR fuer Maus-SCLK */
    #define DDR_SDA 	DDRC			/*!< DDR fuer Maus-SDA  */
    
    #define PORT_SCK	PORTA			/*!< PORT fuer Maus-SCK  */
    #define PORT_SDA	PORTC			/*!< PORT fuer Maus-SDA  */
    #define PIN_SDA		PINC			/*!< PIN fuer Maus-SDA  */
    
    #define SCK_PIN		(1<<PA3)		/*!< PIN nummer fuer Maus-SCK  */
    #define SDA_PIN		(1<<PC3)		/*!< PIN nummer fuer Maus-SDA  */
    
    
    /*!
     * Uebertraegt ein Byte an den Sensor
     * @param data das Byte
     */
    void pan_writeByte(unsigned char data){
    	signed char i;
    	
    	DDR_SDA|= SDA_PIN; 		// SDA auf Output
    	
    	for (i=7; i>=0; i--){
    	
    		PORT_SCK &= ~SCK_PIN;		//SCK auf Low, daten vorbereiten
    		
    		if(data&(1<<i)){			//BIT rausschieben
    			PORT_SDA|=SDA_PIN;
    		}else{
    			PORT_SDA&=~SDA_PIN;		
    		}
    		
    		PORT_SCK |= SCK_PIN;		// SCK =1 Sensor uebernimmt auf steigender Flanke
    		
    		_delay_us(1);				//sensor Zeit lassen um Bit zu holen
    	}
    
    	DDR_SDA &=~ SDA_PIN;			//HI-Z state
    	PORT_SDA &=~ SDA_PIN;
    		
    }
    
    /*!
     * Liest ein Byte vom Sensor
     * @return das Byte
     */
    unsigned char pan_readByte(void){
    signed char i;
    unsigned char data=0;
    	
    	_delay_us(3);					//Sensor Zeit lassen um die Daten aus dem Register zu holen
    
    	for (i=7; i>-1; i--){
    		PORT_SCK &= ~SCK_PIN;		// SCK =0 Sensor bereitet Daten auf fallender Flanke vor !
    			
    		_delay_us(1);				//Sensor kurz zeit lassen
    		
    		
    		PORT_SCK |= SCK_PIN;		// SCK =1 Daten lesen  auf steigender Flanke		
    		
    		if(PIN_SDA&SDA_PIN){ 		//BIT einlesen
    			data |= (1<<i);			
    		}else{
    			data &=~ (1<<i);			
    		}			
    
    	}
    	return data;
    }
    
    /*!
     * Uebertraegt ein write-Kommando an den Sensor
     * @param adr Adresse
     * @param data zu schreibendes byte
     */
    void pan_write(unsigned char adr, unsigned char data){
    	adr|=(1<<7);
    	pan_writeByte(adr);  //rl MSB muss 1 sein Datenblatt S.12 Write Operation
    	pan_writeByte(data);
    	//_delay_ms(4);
    }
    
    
    
    /*!
     * Schickt ein Lesekommando an den Sensor
     * und liest ein Byte zurueck
     * @param adr die Adresse
     * @return der registerwert
     */
    unsigned char pan_read(unsigned char adr){
    
    	pan_writeByte(adr);
    	return pan_readByte();
    }
    
    
    /*! 
     * Initialisiere PAN3101
     
     !! Muss unbedingt ganz am ANFANG von main stehen, sonst gibts FEHLER !!
     
     */ 
    void pan_init(void){
    
    	DDR_SCK  |= SCK_PIN; 	// SCK auf Output
    	DDR_SDA |= SDA_PIN;		//SDA auf output
    
    	PORT_SCK |= SCK_PIN;	// SCK auf high	
    	PORT_SDA|= SDA_PIN;		//SDA auf high
    
    
    //Reset PAN3101
    	pan_write(0x0a,0x80); 
    // kein Sleep modus
    	pan_write(0x0a,0x01);	
    }
    
    
    int main(void){
    unsigned char ino;
    signed char x,y;
    signed short posx=0,posy=0;
    
    pan_init();
    //Platz für andere Initialiesierungen
    while(1){
    
    ino=pan_read(0x02);
    
    if(ino&(1<<7)){				//wenn 7tes bit gesetzt ist wurde die Maus bewegt => bewegungsdaten abfragen
    	x=pan_read(0x03);
    	posx=posx+x;
    
    	y=pan_read(0x04);
    	posy=posy+y;
    	
    	SerPrint("X-Pos: ");
    	PrintInt(x);
    	SerPrint(" | Y-Pos: ");
    	PrintInt(y);
    	SerPrint("\n\r");
    }
    
    _delay_ms(250);
    _delay_ms(250);
    
    }
    
    return 0;
    }
    Ich habe so weit ich es herausfinden konnte alle Register Geändert:
    0x0a Configuration_bits
    0x02 Motion
    0x03 Delta_X
    0x04 Delta_Y

    Auch die beiden Sensoren in der neuen Maus habe ich gerennt, wie es im Wiki steht. Die Spannung hab ich zwar nicht direkt am Sensor dran gelötet, dafür aber an die USB-Buchse.

  5. #5
    Benutzer Stammmitglied Avatar von Vilem
    Registriert seit
    05.12.2010
    Ort
    bei Bad Kreuznach
    Beiträge
    53
    Hallo Rofe,
    vielen Dank für die Quellcode-Einstellung im RN. Ich werde versuchen, das ein bißchen auf meinen Asuro umzustricken und hoffe daß mir das als Programmieranfänger gelingt. Ich habe auch den ADNS2051 und hoffe, daß die geänderten Register denen des beim PAN verlangten entsprechen, was ich bisher noch nicht ganz erkennen konnte. Der zweite Chip in der Maus (ich nehme an, auch bei Dir einer der Marke "Cypress") schaltete bei mir die Betriebsspannung für den 2051 ein, sodaß ich die Betriebsspannung für den 2051 direkt an 5 Volt (z.B. vom USB, bei mir von der Asuroplatine) legen muß.
    Falls Du Dich mit Linux auskennst, habe ich in C für Linux geschrieben, ein interessantes Programm gefunden, das das Pixelbild des 2051 über den Parallelport (sofern man einen solchen noch hat) des PC ausliest (natürlich ohne Roboter). Leider habe ich nur Windows und das Programm umschreiben ist wohl kompliziert. Falls Dich's interessiert hier der link: www.joshuawise.com/parspi.c
    Gruß Vilem
    *** fail faster to succeed sooner ***

Ähnliche Themen

  1. Nibobee mit optischer Maus steuern
    Von techrobo im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 3
    Letzter Beitrag: 05.02.2011, 09:01
  2. Sensor einer Optischen Maus zur Streckenmessung
    Von paunza im Forum Sensoren / Sensorik
    Antworten: 43
    Letzter Beitrag: 04.09.2009, 08:40
  3. Optischen Maus Sensor auslesen
    Von pasha_bln im Forum Sensoren / Sensorik
    Antworten: 9
    Letzter Beitrag: 06.10.2008, 10:02
  4. Optischer Maus-Sensor, Optik-Problem
    Von buthus im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 17.04.2007, 10:53
  5. maus sensor
    Von listner im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 06.08.2005, 13:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests