-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: C-Control + SD20 Testprogramm !!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.05.2006
    Beiträge
    74

    C-Control + SD20 Testprogramm !!

    Anzeige

    Hallo

    Ich wollte mal Fragen ob jemand eine Art TestProgramm hat für die steuerung eines Servos (C-Control und SD20).
    Am besten wäre es wenn man die c-control direkt über den Pc ansteuern könnte und so die winkelstellung beeinflussen.Z.BSp mit einem Schieberegler oder auch durch direkte eingabe von Zahlen (0-255)
    Ich bräuchte in jedem fall beide Codes die für die C-Control und die für den Pc (VB oder C++).
    Ich denke das wäre für viele Anfänger eine grosse Hilfe die wie ich erstmall ein passendes Servo suchen bzw das servo hacken wollen.
    Desweiteren kann man bestimmt das ganze besser nachvolziehen und daraus lernen wenn man diese Möglichkeit hat.Falls keiner so ein TestProgramm in der Schublade hat wäre es natürlich extrem cool wenn einer der zahlreichen Profis hier die Zeit und die lust hat eins zu schreiben.
    Bin in jedem Fall für alle Infos dankbar !!

    H.M

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    28.08.2006
    Beiträge
    48
    Hello,
    I found this -> http://www.roboternetz.de/phpBB2/zei...highlight=sd20
    This could be a start.
    Greetings,
    Drifter2006

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    29.04.2006
    Beiträge
    17
    Moin!

    Also ich habe mal mein alte CControl 1 Unit rausgeholt und mit dem SD20 das angegebene Testprogramm compiliert und übertragen. Also irgendwie stimmt da was nicht mit den Impulslängen?? Denn das Servo läuft zwar in die soll-Position aber bei einer Schleife in der es hin und her laufen soll, mit Pause 100 nach erster Position und Pause 100 nach zweiter Position, scheint es so, als ob es zwei Bewegungen in einer durchführt.. wie ein verspäteter Impuls.. allerdings völligt unregelmässig... Auch andere Servos zeigen diese Verhalten. Woran könnte das liegen? Dies ist nur bei einahme von Position 0 zu 255 umgekehrt zeigt das Servo diese Verhalten niemals??

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.09.2004
    Beiträge
    264
    Ich denke das wäre für viele Anfänger eine grosse Hilfe die wie ich erstmall ein passendes Servo suchen bzw das servo hacken wollen.
    Zerhackt doch nicht immer eure Servos
    Die C-Control, bzw. der SD20 ist doch in der Lage jedes handelsübliche Servo anzusteuern.

    mfg

    Stefan

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    29.04.2006
    Beiträge
    17
    Hier mal das Testprogramm mit Servos an 1 und 3, jeweils hin und herpendeln von Position 0 bis 255. wie gesagt der erste abschnitt sorgt dafür das die Servos immer doppelte Bewegung in einer ausführt was sich durch ein winziges unterbrechen der Fahrt sowie einen größeren Stellwinkel bemerkbar macht. Aber nur manchmal. In diesem übersteuerten Bereich hat es auch keine wirkliche Kraft... als ob es ein verspätetes Echo der Signale mit anderer Pulsweite wäre, warum habe ich eigentlich noch keinen Oscar???. Spannungversorgung der Servo ist es nicht, abgesehen davon habe ich mikroservos daran. Vielleicht die Abschlußwiderstände des I2C-Bus... ??? Stimmt da müssten doch bei der C-Control welche rein? Weiss jemand wie das nochmal war? Also nutze Port 7 und 8 der C-Control 1

    mfg



    [define SDA Port[7]
    define SCL Port[8]

    define I2C_Daten byte
    define N byte 'Schleifenvariable
    define Startbyte byte
    define Kommandobyte byte
    define ServoNummer byte
    define ServoWinkel byte

    'I2C Bus Ruhezustand
    SDA=ON
    SCL=ON

    '*********** Hauptprogramm********************************
    #Main


    gosub I2C_Start ' I2C-Startbedingung
    I2C_Daten=194 ' Adresse des SD20 am I2C Bus
    gosub I2C_Write ' Adresse übertragen
    I2C_Daten = 3' Register des Servos, der angesprochen werden soll schreiben
    gosub I2C_Write ' Register übertragen
    I2C_Daten = 0' Winkel auf den dieser Servo drehen soll schreiben
    gosub I2C_Write ' Winkel schreiben
    gosub I2C_Stop ' I2C-Stopbedingung.

    gosub I2C_Start ' I2C-Startbedingung
    I2C_Daten=194 ' Adresse des SD20 am I2C Bus
    gosub I2C_Write ' Adresse übertragen
    I2C_Daten = 1' Register des Servos, der angesprochen werden soll schreiben
    gosub I2C_Write ' Register übertragen
    I2C_Daten = 255' Winkel auf den dieser Servo drehen soll schreiben
    gosub I2C_Write ' Winkel schreiben
    gosub I2C_Stop ' I2C-Stopbedingung.

    pause 100

    gosub I2C_Start ' I2C-Startbedingung
    I2C_Daten=194 ' Adresse des SD20 am I2C Bus
    gosub I2C_Write ' Adresse übertragen
    I2C_Daten = 3' Register des Servos, der angesprochen werden soll schreiben
    gosub I2C_Write ' Register übertragen
    I2C_Daten = 255' Winkel auf den dieser Servo drehen soll schreiben
    gosub I2C_Write ' Winkel schreiben
    gosub I2C_Stop ' I2C-Stopbedingung.

    gosub I2C_Start ' I2C-Startbedingung
    I2C_Daten=194 ' Adresse des SD20 am I2C Bus
    gosub I2C_Write ' Adresse übertragen
    I2C_Daten = 1' Register des Servos, der angesprochen werden soll schreiben
    gosub I2C_Write ' Register übertragen
    I2C_Daten = 0' Winkel auf den dieser Servo drehen soll schreiben
    gosub I2C_Write ' Winkel schreiben
    gosub I2C_Stop ' I2C-Stopbedingung.

    pause 100





    '*********** I2C Bus Standard Routinen********************

    #I2C_Start
    SDA=OFF
    SCL=OFF
    return

    #I2C_Stop
    SDA=OFF
    SCL=ON
    SDA=ON
    return

    #I2C_Write
    for N=1 to 8 ' 8 Bit schreiben in For-Next-Schleife
    SDA=OFF
    if (I2C_Daten and 12 =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 ' 8 Bit lesen in For-Next-Schleife
    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
    ][/code]

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.09.2004
    Beiträge
    264
    Hallo,
    setze doch testweise mal 10k von beiden Leitungen auf 5V.
    Im Programm wird die Zuweisung "=0" und "=1" benutzt. Dies sollte "off" und "on" heissen.

    mfg

    Stefan

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    29.04.2006
    Beiträge
    17
    Ja genau das wars... ich Blödian... ohne die Resistors gehts ja nicht auf dem Bus...

    So jetzt laufen beide in die richtige Position und keine Echos mehr...

    Aber.. jetzt muss ich mich mal mit der Basic-Programmierung beschäftigen...
    Denn jetzt bemerke ich das, das Servo an Kanal 1 ja im Programm als zweites seine Daten vom sd20 bekommt.
    Und hier gibt es ein Problem.. Manchmal wird dieses ausgelassen???.
    Da war doch irgendwas mit der Ruhezeit bevor der SD 20 wieder das nächste Servo ansteuert?
    Also für Servo an Kanal 3: i2cstart dann Adresse und Byte 1 und Byte 2 und i2cstop... und dann musste man doch eine Wartezeit einbauen??? und dann für Servo an Kanal 1: wieder i2cstart dann Adresse ... etc?

    Allerdings bringt auch eine Pause von 10 zwischen den Blöcken nichts?

    Hmm jetzt habe ich mal die Graupner Microservos gegen Conrad-Modelle getauscht... da gibt es das Problem anscheinend nicht???????


    Auch die anderen Graupner-Mikroservos zeigen, das Sie manchmal die Befehle nicht bekommen?????

    Ob es da Unterschiede gibt?? Sollte ja bei Graupner nicht sein... eher wohl beim großen C und nicht umgekehrt?

    nighteagle

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    28.08.2006
    Beiträge
    48
    Hello nighteagle,
    I have looked through the *I2C Bus Standard Routinen* and I must say that I am not very impressed.
    The *I2C Bus Standard Routinen* does not support I2C clock stretching and I2C Nack.
    This “could” be the reason why you are having problems controlling your servos.
    Try the download “SD20 VIA EMULATED I2C BUS b1.0 for CCIMainU1.1 with CCISB.bas” here - > http://www.roboternetz.de/phpBB2/zei...highlight=sd20 and see if this works.
    Greetings,
    Drifter2006

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.04.2006
    Beiträge
    17
    Hi there,

    oh good... but have any problems with your program, its not working?
    I use port 7 and 8 for sda and scl, i have change it in your programm and the print function on the starter board is deleted.. Hmm where the malfuncion?

    thanx

    Simple Programm


    Code:
    '**************** I/O PORTS ****************'
    define sda port[7]
    define scl port[8]
    '*******************************************'
    '**************** A/D PORTS ****************'
    
    '*******************************************'
    '**************** D/A PORTS ****************'
    
    '*******************************************'
    '**************** VARIABLES ****************'
    define control_flags byte[1]
    define i2c_nack bit[1]
    define i2c_last bit[2]
    define i2c_nack_count byte[2]
    define i2c_byte byte[3]
    define i2c_out_bit bit[24]
    define i2c_in_bit bit[17]
    define i2c_loop byte[4]
    
    define servo_number byte[5]
    define servo_position byte[6]
    '*******************************************'
    '**************** CONSTANTS ****************'
    define sd20_i2c_address 194
    '*******************************************'
    '****************** SETUP ******************'
    
    '*******************************************'
    '***************** PROGRAM *****************'
    #start
    
    servo_number = 1
    if (servo_number = 0) or (servo_number > 20) then goto start
    
    servo_position = 200
    gosub sd20_servo_driver
    goto start
    
    ....and the rest of your program...

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    28.08.2006
    Beiträge
    48
    Hi,
    Please try the original software first (with your port numbers).
    If this works then we can work from there.
    Greetings,
    Drifter2006

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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