- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Servocontroller anx-S20 per I²C ansteuern

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2004
    Beiträge
    24

    Servocontroller anx-S20 per I²C ansteuern

    Anzeige

    LiFePo4 Akku selber bauen - Video
    nabend zusammen,
    ich möchte einen Servo mithilfe des Servocontrollers anx-S20 über I²C mit einer C-Control V1.1 steuern. Zum Testen habe ich analog zu dem Programm für einen SD20 auf dieser Seite (http://www.the-starbearer.de/Roboter...servo/SD20.htm) ein Testprogramm geschrieben was folgendermaßen aussieht:

    Code:
    define SDA Port[11]
    define SCL Port[12]
    define I2C_Daten byte
    define N byte
    SDA=ON
    SCL=ON
    
    
    #Main
     gosub I2C_Start
     I2C_Daten=194
     gosub I2C_Write
     I2C_Daten=63
     gosub I2C_Write
     I2C_Daten=0
     gosub I2C_Write
     gosub I2C_Stop
     pause 50
    
     gosub I2C_Start
     I2C_Daten=194
     gosub I2C_Write
     I2C_Daten=63
     gosub I2C_Write
     I2C_Daten=255
     gosub I2C_Write
     gosub I2C_Stop
     pause 50
    
     goto main
    
    
    
    
    #I2C_Start
     SDA=OFF
     SCL=OFF
    return
    
    #I2C_Stop
     SDA=OFF
     SCL=ON
     SDA=ON
    return
    
    #I2C_Write
     for N=1 to 8                                             
      SDA=OFF
      if (I2C_Daten and 128) =128 then SDA=ON
      pulse SCL
      I2C_Daten=I2C_Daten shl 1
     next
     pulse SCL
    Return
    
    #I2C_Read
     I2C_Daten=0
     deact SDA
     for n=1 to 8                                               
       I2C_Daten=I2C_Daten shl 1
       SCL=ON
       if SDA then I2C_Daten=I2C_Daten+1
       SCL=OFF
     next
    Return
    
    #Ack
     SDA=0
     pulse SCL
    return
    
    #NoAck
     SDA=1
     pulse SCL
    return
    Das Programm soll einen Servo von der ganz linken Position nach einer kleinen Pause auf die ganz rechte Position fahren und das dann immer wieder hin und her. 194 ist die I²C Adresse des anx-S20 und 63 der Befehlscode für Servo Nr. 1 im 8-bit Modus.
    Allerdings tut sich mit diesem Programm rein gar nichts der Servo gibt keinen mucks von sich. Habe alle Anschlüsse überprüft und konnte keinen Fehler erkennen. Am Servo liegts auch nicht, ahbe ich seperat getestet. Ich schätze mal der Fehler liegt in meinem Programm. Weiß jemand einen Tip für mich? In der Anleitung des anx-S20 hab ich leider nichts bez. I²C Ansteuerung gefunden.

    Vielen Dank schon mal und Viele Grüße
    Daniel

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Was mir auffällt: beim Senden (Write) mach du am Schluß "PULSE", es ist dir aber vollkommen wurst, ob der Slave Acked oder nicht und WANN er das tut.
    Eigentlich solltest du SCL freigeben (high), dann lesen, und erst, wenn er wirklich high ist, dann erst auf Low ziehen
    https://www.roboternetz.de/wissen/in...ock_Stretching
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.04.2004
    Beiträge
    24
    Danke für die Antwort, aber ich hab jetzt den Fehler gefunden. Auf der starbear Seite hat der das mit den Digitalports 15 und 16 gemacht. Ich dachte, da im C-Control Bestückungsplan port 11 und 12 extra als I²C-Leitungen ausgegeben sind, dass ich diese benutzen müsste.
    Naja habe es jetzt auch mal mit Port 15 und 16 ausprobiert und siehe da jetzt gehts. Aber jetzt frag ich mich doch warum werden 11 und 12 als I²C Datenleitungen in der Anleitung der C-Control angegeben und funktionieren dann nicht?
    Naja so klappts jetzt...

    Gruß
    Daniel

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    warum werden 11 und 12 als I²C Datenleitungen in der Anleitung der C-Control angegeben und funktionieren dann nicht
    Klingt nach einer guten Frage. Leider kann ich da nix zu sagen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    warum werden 11 und 12 als I²C Datenleitungen in der Anleitung der C-Control angegeben und funktionieren dann nicht
    Klingt nach einer guten Frage. Leider kann ich da nix zu sagen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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

12V Akku bauen