- LiFePO4 Speicher Test         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Servo Programmieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    04.12.2006
    Ort
    ERK
    Alter
    40
    Beiträge
    69

    Servo Programmieren

    hallo zusammen,

    ich möchte gerne mit hilfe des rn-mini controll boards, ein servo so programmieren, das es beim setzen von einem eingang am board, eine bestimmte bewegung macht, eine bestimmte zeit stehen bleibt, und dann wieder in die ausgangsposition zurück fährt.

    hat da einer ne idee, bzw. etwas quellcode für mich! ich bin noch totaler anfänger im punkto bascom.

    danke,

    gruss alex
    Das leben ist zu kurz, um es nicht mit einem Chevy Pickup zu genießen!
    Bild hier  

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.07.2007
    Alter
    40
    Beiträge
    214
    Ich würde mir dazu erstmal die Infos in der Wiki zu Gemüte führen: https://www.roboternetz.de/wissen/index.php/Servos

    Da ist ein Bespiel wo 2 Servos konfiguriert werden, beide in eine bestimmte Position gefahren werden und dann eine Weile gewartet wird.
    Du musst das nur etwas anpassen:
    Nur einen Servo einstellen, mit if ... abfragen ob der Eingang gesetzt ist und dann mit "Servo(1) = XXX" den Servo in Position fahren, ein beliebig langes "Wait" einschieben und dann wieder mit Servo(1)... zurückfahren.
    Die Werte für die Servo-Position liegen zwischen 0 und 255. Wo dein Servo den linken und rechten Anschlag hat und wo die Mittelstellung liegt musst du ausprobieren. Am besten mal mit Wert "100" anfangen und dann nacheinander die beiden Endanschläge suchen.

    Ist keine große Sache wenn du das Beispiel verstanden hast.
    In der BASCOM-Hilfe werden alle diese Befehle außerdem ganz gut erklärt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    04.12.2006
    Ort
    ERK
    Alter
    40
    Beiträge
    69
    hallo cairol,

    danke für deine info.

    das mit den servo´s habe ich hinbekommen! jetzt hänge ich an der kommunikation zwischen pc - RN-Control per rs232.

    hast du da auch ne idee? ich möchte mir mein eigenes protokoll entwickeln.

    gruss alex
    Das leben ist zu kurz, um es nicht mit einem Chevy Pickup zu genießen!
    Bild hier  

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.07.2007
    Alter
    40
    Beiträge
    214
    Naja, also: "Ich hänge..." ist jetzt nicht so aussagekräftig...
    Außerdem ist das Thema ja wieder ne ganz andere Hausnummer.

    - Was geht denn schon, und was geht nicht?

    - Welches Programm benutzt du für das senden/empfangen von Daten auf dem PC? Ein Terminalprogramm? Oder baust du die ne grafische Oberfläche mit VisualBasic, C++ oder Java?
    - Sendest du Bytes, einzelne Character oder ganze Strings?

    Zeichen kann man auf dem ATMega mit dem "inkey()"-Befehl von der seriellen Schnittstelle einlesen. (auch hier hilf wieder die BASCOM-Hilfe)
    Man macht einfach eine Schleife die mit "inkey()" die Zeichen einliest bis eine '0' empfangen wird. In der Hilfe ist ein Bespiel dazu.

    Auf dem PC kommt es eben drauf an mit welchem Programm du senden und empfangen willst. Da kann ich jetzt nix aus der Luft greifen.

    Das mit dem "eigenen Protokoll" ist das kleinste Problem. Da du ja auch beliebige Strings senden kannst, sind Befehle wie: "SWITCH_LIGHT_ON", "MOTORSPEED_70", oder was immer dir Freude macht möglich.
    Nur ein Tipp falls du die Daten über Funk senden möchtest: Halte die Kommandos so kurz wie möglich. Mit jedem Zeichen steigt die Wahrscheinlichkeit eines Übertragungsfehlers. Das kann bei einem gestörten "MOTOR_STOP"-Kommando böse enden...

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    04.12.2006
    Ort
    ERK
    Alter
    40
    Beiträge
    69
    hallo cariol,

    danke für deine antwort.

    für den pc wollte ich die software labview von national instruments verwenden. damit ist es sehr "einfach" möglich, daten zu senden und zu empfangen über schnittstellen. bis jetzt habe ich noch nichts im punkto kommunikation gemacht. ich werde mir mal die hilfe von Bascom reinziehen, und dann melde ich mich nochmal.

    danke,

    gruss alex
    Das leben ist zu kurz, um es nicht mit einem Chevy Pickup zu genießen!
    Bild hier  

  6. #6
    hey, weiß einer zufällig wie die ein- und aus-schaltzeiten von dem Signal für die Servos sein muss??

    und wie lass ich den anders herum drehen , was muss ich an den zeiten ändern??

    gruß luca

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Zitat Zitat von Luca-33
    hey, weiß einer zufällig wie die ein- und aus-schaltzeiten von dem Signal für die Servos sein muss??

    und wie lass ich den anders herum drehen , was muss ich an den zeiten ändern??

    gruß luca
    Klick einfach mal auf: Servo
    Dass hier einige Begriffe automatisch in einen Link umgewandelt werden hat schon seinen Sinn.

  8. #8
    da muss man mal drauf kommen ...
    aber danke hat mir sehr geholfen!!

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    08.09.2008
    Alter
    37
    Beiträge
    33
    Hallo Zusammen,
    ich mache mal keinen neuen Thread auf, da der Thread Titel ganz gut passt.

    Wenn ich mit Servos = .... Servos ansteuern will... kommt beim kompilieren unknown interrupt source...

    selbst wenn ich das Beispiel aus der Hilfe in ein leeres Programm kopiere und kompilieren will, kommt dieser Fehler.

    Hat jemand Abhilfe?

    Code:
    '-----------------------------------------------------------------------
    '                         (c) 2001-2005 MCS Electronics
    '                           servo.bas demonstrates the SERVO option
    '-----------------------------------------------------------------------
    
    'Servo's need a pulse in order to operate
    'with the config statement CONFIG Servos we can specify how many servo's we
    'will use and which port pins are used
    'A maximum of 16 Servos might be used
    'The SERVO statements use one byte for an interrupt counter and the TIMER0
    'This means that you can not use TIMER0 anymore
    'The reload value specifies the interval of the timer in uS
    'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
    $regfile = "2313def.dat"
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    'as an option you can use TIMER1
    'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1
    
    
    'we use 2 Servos with 10 uS resolution(steps)
    
    'we must configure the port pins used to act as output
    Config Portb = Output
    
    'finally we must turn on the global interrupt
    Enable Interrupts
    
    'the servo() array is created automatic. You can used it to set the
    'time the servo must be on
    Servo(1) = 10                                               '10 times 10 = 100 uS on
    'Servo(2) = 20                                               '20 times 10 = 200 uS on
    Do
    Loop
    
    Dim I As Byte
    Do
     For I = 0 To 100
       Servo(1) = I
       Waitms 1000
     Next
    
     For I = 100 To 0 Step -1
     '  Servo(1) = I
       Waitms 1000
     Next
    Loop
    End

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    08.09.2008
    Alter
    37
    Beiträge
    33
    hier noch ein bild von dem sachverhalt

    Bild hier  [/list]

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen