- 12V Akku mit 280 Ah bauen         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: ball mouse modified for distance input

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    27.12.2006
    Ort
    Minneapolis
    Beiträge
    30
    Anzeige

    Praxistest und DIY Projekte
    Vielen für Euren sehr fruchtbaren Input. Ich werd mich mal an die Arbeit machen und hier über die Ergebnisse berichten!

  2. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Unglaublich was der Kleine aus mir raussaugt, mein Adapter ist fertig. Und er funktioniert auch fast perfekt:

    Bild hier   Bild hier   Bild hier   Bild hier  

    Stückliste:

    1 asuro
    1 asuro/yeti RS232-Transceiver
    1 serielle Maus (mit 1200,7,2,none)
    2 9-polige Sub-D Stecker (Vater)
    1 9V-Akkublock
    1 Anschlussclip für den 9V-Block
    etwas Schaltdraht
    Lötkolben und etwas zum Kabelabzwicken

    Oki, alles nicht wild, die große Frage war: "Wie versorge ich das ganze mit Spannung". Der Adapter sollte völlig unabhänging vom asuro sein, aber dennoch so leicht, dass man ihn auf den asuro binden kann. Die Lösung:

    Der Tripol-9V-Block

    Bild hier   Bild hier   Bild hier  
    Nachdem ich etwas im Netz gestöbert hatte, fand ich einen (eigentlich nicht ernst gemeinten) Tip: "Mach doch eine Mittelanzapfung dran". Mmmmh, wie sieht den ein 9V-Block von innen aus? Ich habe dann vorsichtig einen aufgehebelt und siehe da, 7 kleine Akkus sind da drin. Prima. Ich habe oben ein kleines Loch gebohrt und den Akku mit einem zusätzlichen Draht zwischen der vierten und fünften Zelle abgezapft. Aufbau:

    +(Plus) | 4 Zellen(4,8V) | Anzapfung | 3 Zellen(3,6V) | -(Minus)

    und das ergibt eine +4,8V/-3,6V Versorgungsspannung. Sieht wenig aus, aber mein Notebook (IBM) liefert auch nur 5.irgendwas Volt an der RS232-Schnittstelle)

    Der Anschluß des Maussteckers:

    Pin2: Leitung zum Pin3 des Tranceiver-Steckers
    Pin3: -3.6V (Minus des Tripol-Blocks)
    Pin4: +4.8V (Plus des Tripol-Block) verbunden mit Pin7 des Maussteckers
    Pin5: 0V (Anzapfung des Tripol-Blocks) verbunden mit Masse
    Pin7: +4.8V (Plus des Tripol-Block) verbunden mit Pin4 des Maussteckers
    Steckergehäuse: 0V (Anzapfung des Tripol-Blocks) verbunden mit Pin5 des Maussteckers

    Der Anschluß des Transceiver-Steckers:

    Pin3: Leitung zu Pin 2 des Maussteckers
    Pin4: +4.8V (Plus des Tripol-Block)
    Pin5: 0V (Anzapfung des Tripol-Blocks)

    Das war's auch schon, Besitzer eines USB-Transceivers (oder eines zweiten RS232-Transceivers) können das ganze jetzt schon mal testen. Wenn alles funktioniert, sollte im Terminal-Programm etwa das erscheinen, :

    Code:
    PtP@PtP@P@ttPtt@PhPtPtttP@P`P@P@tPtppppppppqpqabcdvwvw
    cdcBcbcbcbÀbcbbcbÀbbbcbcbcbÀbÀbÀPQPQQPQPQOPOPOPOP ! ! ! ! ! !vwbcvwcdvwcdvwbdvwc
    dvwcdvwcdvwcdvwcdvwcdvwcdvwcdPQ@APQ@APQ@APQ@APQbcvwbdvwcdxycdvwbcbcwdxy`rvsc`v
    c`vsbvsc`rvssvsvsvsvsvs`s`srvs`vscrsrvsc`sc`vsc`vvsvsvssavsc`c`vscrvvv
    vsdjajajaajaej}ajaea}}aj}jaaje}ja}j}j~jqj@jaj~jaj~h``h`tp`~fcf~fstg```P@P@`@`@`@
    `@`@`@`@`@`@P@P@P@P@@C?@S>|@_@@@@@L?C?C?O>?O77O;;L?O76O6.O7-O<.O>3O?6O=:O?>C?L?@
    @L?L?C?C:C4C3C;C=C:C4C6C>L?C6C4C<L;@@@@C?C)CC2C-C2C/C8O?;L/L+L-L*L.L4L8L;L?C?C=C
    =C=C9C4C3C6O;?O49O04O31O91O;5O?7L5L5L:L:O><O??C?C:C-C6C<C?L?L?L7L3L8L;L;L<L;L6L7
    L;L>C?C?@C?C?@@L=L>L?L?C?O5=C1C2C1C)C9C<C?L?L?O?<L:L6L2L2L6L8L8L?@@C?C:C:C:C6C4O
    8?C7O:>O;<O;:O><@@L?L5L8O;6O>:O>8L9L8L;L?L?C?C9C3C8C:C6C6C:@@@@O?>@L?L?@<L8L:L=L
    =L<L>L?L;L8L6L4L6L4@C?C;C3C+C-C3C3C,C+C6C;O<?O:=O87O:5O>6L7L4L
    (Nicht vergessen, die Maus sendet mit 1200,7,2,none! Das selbe sieht man auch, wenn man die Maus direkt am Terminal einsteckt.)

    Mein Testaufbau:

    Bild hier   Bild hier   Bild hier   Bild hier  

    Und noch ein kleines Filmchen:
    Bild hier  

    Leider wieder unscharf und die Farbe ( Bit 0 des Zeichens) der StatusLED nicht erkennbar. Was man aber sieht ist die IR-Diode des asuros die das empfangene Zeichen+1 zurücksendet.

    Leider hat das ganze noch einen Schönheitsfehler: Die vom asuro empfangenen Zeichen sind irgendwie Schrott. Ich weis noch nicht, ob das an meiner Empfangsroutine liegt, oder am Aufbau des Datenbytes oder sonstwas. Vielleicht weis ja einer von euch warum das noch nicht klappt.

    Der Code meines kleinen Testprogramms:
    Code:
    #include "../inc/asuro.h"
    
    #define FOSC 8000000// Clock Speed
    #define BAUD 1200
    #define MYUBRR FOSC/16/BAUD-1
    
    void USART_Init( unsigned int ubrr)
    {
    /* Set baud rate */
    UBRRH = (unsigned char)(ubrr>>8);
    UBRRL = (unsigned char)ubrr;
    /* Enable receiver and transmitter */
    UCSRB = (1<<RXEN)|(1<<TXEN);
    /* Set frame format: 8data, 2stop bit */
    /*UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);*/
    UCSRC = 0x8A; //10001010 = 7bit, 2stop, kein parity
    }
    
    int main( void )
    {
    char data;
    
    Init();
    USART_Init ( MYUBRR );
    
    while (0) {
    	SerWrite("abcABC",6);
    	Msleep(500);
    }
    // aus SerRead() kopiert
    //data=' ';
    //UCSRB = 0x10; // enable receiver
    while(0) {
    	if (UCSRA & 0x80) data = UDR;
    	if (data == 'P') BackLED(OFF,ON);
    	if (data == '@') BackLED(ON,OFF);
    	data = ' ';
    }
    StatusLED(RED);
    data=' ';
    while(1) {
    SerRead(&data,1,0);
    	if (data == 'P') BackLED(OFF,ON);
    	if (data == '@') BackLED(ON,OFF);
    	if (data & 1) StatusLED(YELLOW); else StatusLED(RED);
    data++;
    SerWrite(&data,1);
    }
    return 0;
    }
    und für den schnellen Test noch das .hex im Anhang.

    that's all

    Gruß

    mic
    Angehängte Dateien Angehängte Dateien
    Geändert von radbruch (11.12.2011 um 18:34 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #13
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Nun weis ich auch, warum meine empfangenen Zeichen nur Schrott waren. Eine serielle Maus sendet ihre Daten in Paketen, einfache Protokolle sehen dafür drei Bytes vor:

    Code:
    Data packet is 3 byte packet. It is send to the computer every time mouse state changes (mouse moves or keys are pressed/released). 
            D7      D6      D5      D4      D3      D2      D1      D0
     
    1.      X       1       LB      RB      Y7      Y6      X7      X6
    2.      X       0       X5      X4      X3      X2      X1      X0      
    3.      X       0       Y5      Y4      Y3      Y2      Y1      Y0
    
    Note: The bit marked with X is 0 if the mouse received with 7 databits and 2 stop bits format. It is also possible to use 8 databits and 1 stop bit format for receiving. In this case X gets value 1. The safest thing to get everything working is to use 7 databits and 1 stopbit when receiving mouse information (and if you are making mouse then send out 7 databits and 2 stop bits). 
    The byte marked with 1. is send first, then the others. The bit D6 in the first byte is used for syncronizing the software to mouse packets if it goes out of sync. 
    
    LB is the state of the left button (1 means pressed down)
    RB is the state of the right button (1 means pressed down)
    X7-X0 movement in X direction since last packet (signed byte)
    Y7-Y0 movement in Y direction since last packet (signed byte)
    
    Graphical description how the data is contained in the packet
                  1st byte        2nd byte         3rd byte
              ================  ===============  ================
               - 1 ? ? Y Y X X  - 0 X X X X X X  - 0 Y Y Y Y Y Y
              ================  ===============  ================
                   | | \ / \ /      \---------/      \---------/
                   | |  |   |            |                |
                   | |  |   \----\       |                |
                   | |  \--------|-------|--------\       |
                   | |          / \ /---------\  / \ /---------\
                   | |         ================ =================
                   | |          0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0
     Left Button --/ |         ================ =================
    Right Button ----/            X increment      Y increment
    
    Mouse identification
    When DTR line is toggled, mouse should send one data byte containing letter 'M' (ascii 77).
    (gefunden bei: http://users.tkk.fi/~then/mytexts/mouse.html)

    Das "M" zur Identifikation der Maus kann man im Terminalprogramm schön erkennen, die Datenbytes dann schon eher nicht (manche sollen ja auch Graycode "lesen" können).

    Mein einfaches Testprogramm sieht nun so aus:
    Code:
    #include "../inc/asuro.h"
    
    #define FOSC 8000000// Clock Speed
    #define BAUD 1200
    #define MYUBRR FOSC/16/BAUD-1
    
    void USART_Init( unsigned int ubrr)
    {
    /* Set baud rate */
    UBRRH = (unsigned char)(ubrr>>8);
    UBRRL = (unsigned char)ubrr;
    /* Enable receiver and transmitter */
    UCSRB = (1<<RXEN)|(1<<TXEN);
    /* Set frame format: 8data, 2stop bit */
    /*UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);*/
    UCSRC = 0x8A; //10001010 = 7bit, 2stop, kein parity
    }
    
    int main( void )
    {
    char data;
    
    Init();
    USART_Init ( MYUBRR );
    StatusLED(RED);
    data=' ';
    
    /*  Aufbau der Datenbits (Startbyte mit gesetztem D6!)
            D7      D6      D5      D4      D3      D2      D1      D0
    
    1.      X       1       LB      RB      Y7      Y6      X7      X6
    2.      X       0       X5      X4      X3      X2      X1      X0
    3.      X       0       Y5      Y4      Y3      Y2      Y1      Y0
    
    Quelle: http://users.tkk.fi/~then/mytexts/mouse.html
    */
    
    while(1) {
    
    SerRead(&data,1,0);
    	if (data & 0x50) BackLED(OFF,ON);
    	if (data & 0x60) BackLED(ON,OFF);
    	if (data & 1) StatusLED(YELLOW); else StatusLED(RED);
    SerWrite(&data,1);
    }
    return 0;
    }
    Die Maustasten steuern nun die BackLEDs, Bit 0 der Daten weiterhin die StatusLED. Der SerWrite-Befehl dient nur zur Kontrolle ob sich was tut. Man könnte auch z.B. den Inhalt der Bytes 2+3 senden.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #14
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    toll.find ich echt klasse. scheint ja irgendwie einfacher als gedacht zu sein. ein hochinteressantes projekt!
    vor allem klasse, dass das mit dem ir-transceiver geht =)

    bring den asuro mal dazu, dass er deiner mausbewegung folgt =)
    maus nach vorn=asuro nahc vorn
    maus nach links=asuro dreht nach links
    usw.
    meinst du das geht?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  5. #15
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    bring den asuro mal dazu, dass er deiner mausbewegung folgt =)
    Bin ich schon dabei.

    So nebenbei fällt dabei auch einiges für andere Projekte/Probleme ab:

    Die Spannungsversorgung der IR-Transceivers kann man auch bei schwachbrüstigen USB-RS232-Wandlern einsetzen. Eventuell sogar mit vollen 9V zwischen Pin4 und Pin5.

    Die Änderung der Baudrate sollte auch in die andere Richtung funktionieren. Dann kann man Programme, die eine Ausgabe zum Terminal schicken, deutlich beschleunigen. Eventuell muss man die Verzögerungsschleifen bei SerWrite ändern/löschen um das voll zu nutzen.

    Ich hab's zwar noch nicht versucht, aber wenn man in meinem Testprogramm eine andere Baudrate (z.b. 9600) angibt und das Terminalprogramm anpasst, sollte das auch funktionieren. Dann versteht der asuro zwar die Maus nicht mehr, aber bei anderen, teilweise schnellen Funktionen wie Odometrie oder Linienfolgen, könnte man so schneller Daten senden.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #16
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    das ist eigentlich richtig... evtl wird es dann fehleranfälliger, aber ist sicher einen versuch wert.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Jetzt habe ich mal wenigstens eine einfache Funktion realisiert:

    asuro fährt an der Leine und wird von der Maus gesteuert. Mit einer Maustaste kann das jeweilige Rad gebremst werden. Im Film fährt er mit MotorSpeed 200 und bremst mit 125. Die BackLEDs zeigen an, welcher Motor gebremst wird.

    Bild hier   Bild hier   Bild hier  
    Bild hier   Bild hier   Bild hier  

    Bild hier  
    http://youtube.com/watch?v=8seKhScQ8S8

    Der Kleine quält sich merklich bei dem Ballast und mit den Riesenrädern. Später, wenn wir den Weg mit der Maus messen, wird das Kabel fehlen und der Adapter schlanker sein.

    Die Ladung des 9V-Blocks wird wohl recht lange reichen. Sowohl der IR-Transceiver als auch die Maus selbst dürften auf geringen Stromverbrauch getrimmt sein, weil sie normalerweise ihre Power aus einem schwachbrüstigen v24-Anschluß beziehen. Trotzdem braucht das Teil unbedingt einen Ausschalter, der Batterieclip hält das häufige Ausstöpseln auf die Dauer nicht aus.

    Mit diesem Aufbau ist sogar ein Akkuwechsel möglich. Allerdings nur, wenn man den orginalen, großen Kabelbinder gegen einen qualitativ besseren ersetzt hat.

    Gruß

    mic
    Angehängte Dateien Angehängte Dateien
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #18
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    klasse! gibts wieder was neues?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  9. #19
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo damaltor,

    warst du krank? Wir haben lange nichts mehr von dir gelesen.

    Nein, es gibt leider nichts neues. Ich habe mir zwar inzwischen ein paar Teile für den schlankeren Adapter besorgt, bin aber nun beim Liniensuchen und Geschwindigkeit erhöhen hängengeblieben.

    Das Erhöhen der Baudrate über 2400 funktioniert wohl doch nicht so einfach wie ich dachte. Im Terminal kommt nur Schrott an. Ich hab's aber nur kurz getestet.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #20
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    nein ich war ne woche weg... bin jetzt grade krank, aber das hält mich doch nicht von euch ab... =)

    lass die baudrate doch niedrig, reicht doch eigentlich völlig aus, oder?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress