-         

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

Thema: Bascom Servos "Beschleunigung"

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    28
    Beiträge
    718

    Bascom Servos "Beschleunigung"

    Anzeige

    Hey Leute,
    da ich gerade ein Roboterarm mit Servos baue hab ich folgendes Problem.
    Ich möchte das der Servo nicht mit voller Geschwindigkeit sich von Pos. A nach Pos. B bewegt.
    Er sollte am Anfang beschleunigen und kurz vor erreichen der Position langsamer werden, geht das?
    Zurzeit steuer ich ihn so an (ATMega16):
    Code:
    'Config Servo
    Config Servos = 1 , Servo1 = Portb.3 , Reload = 7
    
    
    'Config Servopin on AVR
    Config Portb.3 = Output
    
    'Enables Interrupts
    Enable Interrupts
    
    Do                                                         
    
    Servo(1) = 50
    Wait 1
    
    Servo(1) = 145
    Wait 1
    
    Servo(1) = 240
    Wait 1
    
    Loop
    End
    Und überhaupt, wie realisiere ich am besten eine Roboterarmsteuerung für 7 Servos?

    Mfg
    Stefan

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    Hi,
    ich hab mal ne Frage. Für was steht denn das Reload=7. Was macht das?

    Und als Servosteuerung werde ich das hier verwenden:
    http://www.kreatives-chaos.com/artik...ontroller-s8io

    Ich krieg morgen einen Tiny2313 und werde dann mal berichten wie das so ist mit der Steuerung

    Aber das mit der Geschwindigkeit würde mich auch interessieren, wenn das denn überhaupt geht.

    MfG

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    46

    Re: Bascom Servos "Beschleunigung"

    Zitat Zitat von Lenox
    Hey Leute,
    da ich gerade ein Roboterarm mit Servos baue hab ich folgendes Problem.
    Ich möchte das der Servo nicht mit voller Geschwindigkeit sich von Pos. A nach Pos. B bewegt.
    Er sollte am Anfang beschleunigen und kurz vor erreichen der Position langsamer werden, geht das?
    Zurzeit steuer ich ihn so an (ATMega16):
    Code:
    'Config Servo
    Config Servos = 1 , Servo1 = Portb.3 , Reload = 7
    
    
    'Config Servopin on AVR
    Config Portb.3 = Output
    
    'Enables Interrupts
    Enable Interrupts
    
    Do                                                         
    
    Servo(1) = 50
    Wait 1
    
    Servo(1) = 145
    Wait 1
    
    Servo(1) = 240
    Wait 1
    
    Loop
    End
    Und überhaupt, wie realisiere ich am besten eine Roboterarmsteuerung für 7 Servos?

    Mfg
    Stefan
    Wenn Du den Servo langsamer bewegen willst, kannst du den Paramater für die Positionierung in Schritten in Richtung Zielposition zählen. Zwischen den Schritten kannst Du mit WAITMS Pausen einlegen - um so länger die Pausen, um so langsamer die Bewegung. Alternativ könntest Du auch zum Beschleunigen die Zählschritte erhöhen bzw. zum verlangsamen verringern.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    28
    Beiträge
    718
    ah danke, hab ich auch schonmal dran gedacht, ist nur n bisschen umständlich.. ich muss mir Bascom noch was reinzieht, ich möchte auch 2 Servos gleichzeitig bewegen, aber halt konfortable, und nicht jedesmal 4 seite coden!

  5. #5
    Murus
    Gast
    Ich hab das über ne For-Schleife und mit waitms gemacht. Funktioniert tadellos und lässt sich relativ gut stufen.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    28
    Beiträge
    718
    kannst du mal ein Beispiel posten? wäre nett =)

  7. #7
    Murus
    Gast
    For i=1 to 50
    servo(1)=i
    waitms 30
    next

    So dreht das Servo von der Position 1 bis zur Position 5o.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    entschuldigt, wenn ich mich hier mal einklinke:

    hab da so ein paar theoretische ideen. im beispiel von murus dreht der servo von 1 bis 50. was ist denn der gesamtbereich eines Servos in eurem system ? ( 0 bis 255 oder mehr)

    das mit dem wait-befehl ist ja ganz lustig aber ne verschwendung von cpu-leistung und zudem kommt es ja dem ursprünglichen gedanken von LENOX nicht nahe. er will ja die schrittgeschwindigkeit umsomehr verringern, je näher der arm seinem ziel kommt.

    dazu müsste man wohl ein vereinfachtes logarithmisches verfahren anwenden.

    was mein ihr ?

    gruss kolisson

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    46
    Zitat Zitat von kolisson
    entschuldigt, wenn ich mich hier mal einklinke:

    hab da so ein paar theoretische ideen. im beispiel von murus dreht der servo von 1 bis 50. was ist denn der gesamtbereich eines Servos in eurem system ? ( 0 bis 255 oder mehr)

    das mit dem wait-befehl ist ja ganz lustig aber ne verschwendung von cpu-leistung und zudem kommt es ja dem ursprünglichen gedanken von LENOX nicht nahe. er will ja die schrittgeschwindigkeit umsomehr verringern, je näher der arm seinem ziel kommt.

    dazu müsste man wohl ein vereinfachtes logarithmisches verfahren anwenden.

    was mein ihr ?

    gruss kolisson

    Wenn man die CPU auch für anderes nutzen möchte, kann man die Servosteuerung ja in eine Interruptroutine oder auf eine extra CPU (kosten ja nicht viel) packen. Das immer lansgamere heranfahren an die Zielposition kann man erreichen, wenn man den Parameter für WAITMS ebenfalls hochzählt. Z.B:

    FOR I = 1 TO 50
    SERVO(1) = I
    WAITMS I
    NEXT I

    Den Übergabeparameter für WAITMS muß man ggbf. noch teilen oder multiplizieren um ein vernünftiges verhalten hinzubekommen.

    Es gibt meines Wissens einfach keine andere Möglichkeit einen Modelbauservo in seiner Verfahrgeschwindigkeit zu maniplulieren. Vielleicht noch wenn man die Versorgungsspannung variiert, aber das klappt bestimmt nicht richtig.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.10.2006
    Ort
    Aachen
    Alter
    28
    Beiträge
    718
    50-240 muss ich ihn bewegen, die Idee mit der for-schleife und einer Variablen bei WAITMS kling gut, muss ich mal testen!! danke

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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