- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Servoansteuerung von PC nach SD21 über Java

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.03.2004
    Beiträge
    10

    Servoansteuerung von PC nach SD21 über Java

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen!!

    Ich benötige EURE Hilfe bei der Realisierung meines Projekts, der Ansteuerung von Modellservos mit Hilfe eines PC, da ich nicht mehr weiter weiss, was ich falsch mache.
    Ich habe mit von Jörg Pohl ( Roboterteile) den SD21 gekauft und möchte diesen nicht über einen PIC , sondern mit Hilfe des PC ansteuern.
    Um dies zu realisieren habe ich in den entsprechenden Foren gesucht und mich bei google herumgetrieben. Nach auffinden entsprechender Hilfestelleungen habe ich mir ein I2C Interface ( RS232 to I2C) gebaut und ein kleines Java Programm abgeändert. Das I2C Interface besteht aus einem MAX232 und einem 7406 Baustein. Der Quellcode funktioniert soweit ich das sagen kann, da keine Fehlermeldungen ausgegeben werden. Habe leider auch kein oszilloskop, wo ich das nachprüfen könnte, was am Port ausgegeben wird.
    Das Programm wird auf einem Acer Laptop mit 1,6 Ghz und 265 MB Arbeitsspeicher ausgeführt. Betriebsystem XP.

    Da ich nicht weiß , wo nun der verflickste Fehler stecken könnte, benötige ich Eure Anregungen, Hilfestellungen und und und....
    Sollte noch irgendetwas unklar sein, bitte ich dies zu Entschuldigen, aber das ist mein erstes Foren Thema!!!


    PS: Die Variable : static int DEFAULT_BAUD muss auf 19200 geändert werden.
    Angehängte Dateien Angehängte Dateien

  2. #2
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.075
    RoboterNetz.de Foren-Übersicht » Roboter-Foren » Buchempfehlungen » Servoansteuerung von PC nach SD21 über Java
    Nach der Beschreibung weiß ich ehrlich gesagt noch nicht welches Buch hier empfohlen wird.
    Manfred

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.03.2004
    Beiträge
    10
    OH!!
    Ich sehe gerade, das ich im falschen Form bin!!
    Sorry!! Werde versuchen es zu ändern.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich würd' mal sicherstellen, daß die Java <> RS232 Geschichte sicher funktioniert, man hört hier im Forum von Problemen, wo ich aber nix zu sagen kann.
    Steck' das I2C Interface mal ab
    Verbinde am RS232 Stecker die Pins 2 u. 3 (rx/tx)
    Jetzt müßtest du alles, was du mit java richtung RS232 rausschickst, 1:1 wieder zurückkommen. Schlimmstenfalls baust du einen Java-Test-Türken.
    Erst dann wär' ich mir sicher, daß dein Programm wirklich mit dem Interface quasseln kann.
    Da ich weiß, daß das SD21 wie ein Büffel tadellos funktioniert, kannst du dich dann wirklich auf das Interface konzentrieren.
    Provoziere am I2C Bus Zustände, die vorhersagbare Fehlermeldungen und Reaktionen hervorbringen müssen. (Bus belegt / wieder frei z.B)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    11.03.2004
    Beiträge
    10
    Also das mit dem Verbinden der Pins 2 und 3 werde ich ausprobieren. Könnte interessant sein zu sehen was geschieht.
    Was ist eine Java - Test-Türken? Habe ich noch nie gehört.
    Ich gehe mal auch davon aus, dass das I2C nicht so richtig funktioniert, warum kann ich nicht sagen! Die Bauteile werden mit Strom versorgt, dass konnte ich nachmessen. Das Java Interface funktioniert soweit ich sagen kann auch, da ich mit dem Hypterteminal den COM Port 1 geöffnet hatte und ich dann versuchte, auf diesen mit Java zu zugreifen. Das Resultat von Java: Der Port wird bereits verwendet.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Hallo Morbius,

    bin seit längerer Zeit mal wieder hier und gleich über dieses Posting gestolpert.

    Wie schon vor einiger Zeit per Mail geschrieben, kann ich zu den I2C-Interfaceroutinen nichts sagen/schreiben.
    Ein Oszi wäre hier sicher hilfreich um zu sehen, was sich an den Ausgängen überhaupt tut.

    Ich habe mir nochmal das Mainprogramm angesehen, hier sind allerdings ein paar Sachen nicht ganz korrekt.

    Code:
    servo = s;
    System.out.println("Servo " +s);
    position = 1500;
    speed    = 2;
    [...]    	
    packet[1] =  servo; 
    packet[2] =  position;
    packet[3] =  speed;
    In Packet[1] gehört die Registernummer rein. Die ist jedoch nicht mehr identisch mit der Servonummer (wie beim SD20), sondern folgendermaßen aufgebaut:
    Register Servo Belegung
    0 1 Speed
    1 1 Low byte Position
    2 1 High byte Position
    3 2 Speed
    1 2 Low byte Position
    2 2 High byte Position

    4 3 Speed
    ......
    60 21 Speed
    61 21 Low byte Position
    62 21 High byte Position

    Obiges Programm kann also nicht funktionieren, zumindest müssten die Servos ziemlich wahllos positioniert werden.
    Zum Ausprobieren würde ich dir die erweiterten (und zum SD20 kompatiblen) Register ab Register 63 empfehlen.
    In Register 63 wird dann die Byteposition (1-linker Anschlag, 127-Mitte, 255 anderer Anschlag) für Servo 1 geschrieben, in Register 64 dann für Servo 2 usw.

    Code:
    servo = s + 62;  // Servo1 = Register 63
    position = 1;    // linker Anschlag,  
    [...]    	
    packet[0] = (int)SD21_ADDRESS;  
    packet[1] =  servo; 
    packet[2] =  position;
    [...]    	
    outputStream.write((int)packet[0]);     // ob das so geht, keine Ahnung!!!
    outputStream.write((int)packet[1]);     // wichtig, I2C arbeitet immer byteweise
    outputStream.write((int)packet[2]); 
    [...]


    Ansonsten tippe ich auch eher, wie PicNick schon geschrieben hat, auf einen Fehler in den Interfacegeschichten.

    HTH und Viele Grüße
    Jörg

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Nicht vergessen: Der SD21 hätt gern Zahlen zwischen 1000 ( links) u. 2000 (rechts) in den unteren Registern (->Doku)
    mfg

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    60
    Beiträge
    409
    Hi PicNick,

    Nicht vergessen: Der SD21 hätt gern Zahlen zwischen 1000 ( links) u. 2000 (rechts) in den unteren Registern (->Doku)
    yep. Und weil das eine zusätzliche Fehlerquelle ist (Lowbyte, Highbyte -> was kommt zuerst), rate ich bei Problemen immer zuerst die Register ab 63 zu nutzen (Byteregister). Wenn das dann funzt, kann man mit den mächtigeren 16bit-Registern und den Zeitwerten und Geschwindigkeitswerten arbeiten.

    Bei meinem Hexapoden nutze ich übrigens die Byteregister ab 63 und zusätzlich die Speedregister. Geht einwandfrei.

    THX und Viele Grüße
    Jörg

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zitat Zitat von Morbius
    Was ist eine Java - Test-Türken?
    Ein Türke ist ein Programm, das so tut, als ob.
    Gemeint ist eine (Kopie) Version von deinem Programm, das keinen Wert auf sinnvolle Abläufe legt, sondern nur den gewünschten Effekt (in deinem Fall "ECHO") visualisiert.
    Das Programm im original kriegt ja nich einfach was rein, sondern muß es sich vom Bus explizit holen, das ist zum Testen natürlich nix.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    11.03.2004
    Beiträge
    10
    Vielen Dank an euch!
    Die Doku habe ich gelesen, nur habe ich mit Registern nicht so viel Erfahrung. PicNick, wäre es möglich,das du mir den Java Quellcode so anzupassen könntest , dass ich den ersten Servo ansteuern kann.Vielleicht bekomme ich dann einen besseren Einblick in die Funktionsweise mit den Registern.

    THX
    Morbius

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen