-
        

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

Thema: Servoansteuerung Bsp ändern?!

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400

    Servoansteuerung Bsp ändern?!

    Anzeige

    Hallo,
    ich habe mal anfangen ein bischen mit Servos rum zu experimentieren.

    nun wollte ich mal das beispiel aus dem Wiki nehmen.
    http://www.roboternetz.de/wissen/ind...rvoansteuerung
    mein prob ist das ich nen atmega8 habe der einen takt von 3,6864 Mhz hat. nun muss ich ja die timer werte umrechnen.

    meine frage ist wie? wäre ganz nett wenn mir jemand das mal erklären könnte. oder mal das generelle umrechnen erklären könnte. ich weis immer nicht wie man auf die werte bzw zeiten kommt.

    mfg Bammel

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    Dreisatz?

    Code:
       16       3,6864
    ------- = ---------
     62535        x
    
    36864 * 62535 / 160000 = 14408
    Überschlägig knapp 1/4, das scheint zu passen. Drehbereich wäre dann ca. +-500.

    Ich hoffe das stimmt so :)

    Man könnte auch den Prescaler anpassen, aber das wäre mir zuviel Rechnerei für "ein bisschen mit Servos rum zu experimentieren"

    [edit]
    Oje, das war nix, der Timer scheint im Overflow zu laufen. Dann muss man den Abstand der Werte zu 65536 verwenden, also so:

    36864 * (65536-62535) /160000 = x

    und der gesuchte Wert für Servomitte wäre dann:

    65536-x

    Jetzt sollte es aber passen :)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    danke da bin ich ja mal überhaupt nicht drauf gekommen... naj diese ganze geschwindigkeitsberechnungen mit den Hz bin ich net so fit drinne hab das ganze auhc nohc net so wirklich gepeilt

    EDIT:
    leider funktioniert das so nicht ;( (das war vor deinem edit) werde das andere moregn probierrne ich muss ins bett

    EDIT Nr2: danke jetzt funktionierts, hatte mir keine ruhe gelassen. mich würde die geschichte mit dem prescaler aber auch nochmals interessieren.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Hi,
    ich habe den Artikel mal ganz bisschen erweitert:
    Es gibt das Tool rnAVR mit dem man sich die Rechnerei für Preload und Prescale sparen kann: rnAVR
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.01.2008
    Beiträge
    164
    So ein bisschen Mathe kann nicht schaden...., lernen die in der Schule nicht mehr.

    Dreisatz...,wat is dat denn...

    mfg

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.418
    sechsrad das kann man nicht so pauschal sagen !!!!!!!!!!

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    danke für die sehr klugen worte.. aber mathe kann ich wohl sehr gut...!

    nur muss man erstmal drauf kommen und ganz so easy war es dann ja doch net. bzw reiner dreisatz brachte einem ja nicht weiter...!!!

    PS.: <<< auf grund einer bitte entfernt>>>

    schönen abend und danke an willa und radbruch

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    hallo,
    hat soweit funktioniert auch wenn ich die eigentlichen servowerte durch annäherung herausbekommen habe.

    habe nur ein problem und zwar nutze ich die mg995 servos. nur kann ich diesem um max. 180grad bewegen. alle werte die drüber gehen würden fährt der Servos nur bis zu den 180grad werten normal an danach nur sehr langsam .. esseiden ich wähle einen extrem hohen wert dann schläg der servo aber mit voller geschwindigkeit an den endanschlag dieses sollte ja vermieden werden. weis da jemadn eine lösung?

    code sieht nun so aus:
    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 19200
    $framesize = 64
    $swstack = 64
    $hwstack = 64
    Config Timer1 = Timer , Prescale = 1                        'timer für Servos
    Enable Timer1
    Timer1 = 56320
    Config Portb = Output
    Portb.0 = 0                                                 'hier hängt servo1
    Portb.1 = 0                                                 'hier hängt servo2
    Portb.2 = 0                                                 'hier hängt servo3
    Portb.3 = 0                                                 'hier hängt servo4
    
    On Timer1 Servoirq                                          'servo
    
    Enable Interrupts
    
    Dim Kanal As Byte
    Dim Servo(4) As Word                                        'links: 63200, mitte 60000, rechts 56800
    Do
    Servo(1) = 63200                                            'mitte
    Servo(2) = 60000
    Servo(3) = 56800
    Servo(4) = 60000
    Wait 1
    Servo(1) = 60000                                            'mitte
    Servo(2) = 56800
    Servo(3) = 63200
    Servo(4) = 60000
    Wait 1
    Servo(1) = 56800                                            'mitte
    Servo(2) = 63200
    Servo(3) = 60000
    Servo(4) = 60000
    Wait 1
    
    Loop
    
    Servoirq:
    If Kanal = 0 Then
       If Portb.0 = 0 Then                                      'wenn port low
          Timer1 = Servo(1)                                     'dann timer auf entsprechende verzögerung
          Portb.0 = 1                                           'und port anschalten
       Else                                                     'das hier passiert erst bei dem darauf folgenden interrupt
          Portb.0 = 0                                           'dann port wieder ausschalten
          Incr Kanal                                            'und den nächsten kanal bearbeiten
       End If
    End If
    If Kanal = 1 Then
       If Portb.1 = 0 Then
          Timer1 = Servo(2)
          Portb.1 = 1
       Else
          Portb.1 = 0
          Incr Kanal
       End If
    End If
    If Kanal = 2 Then
       If Portb.2 = 0 Then
          Timer1 = Servo(3)
          Portb.2 = 1
       Else
          Portb.2 = 0
          Incr Kanal
       End If
    End If
    If Kanal = 3 Then
       If Portb.3 = 0 Then
          Timer1 = Servo(4)
          Portb.3 = 1
       Else
          Portb.3 = 0
          Incr Kanal
       End If
    End If
    
    If Kanal = 4 Then
      Timer1 = 21300                                            '54016  eine pause von ca. 12ms bis zum nächsten interrupt. Bei guten Servos oder Brushlessreglern kann man hier bis auf 65530 gehen ==> ansteuerfrequenz von ~ 200Hz
      Kanal = 0
    End If
    Return
    End

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    Hallo

    Ich kenne die mg995er-Servos (von TowerPro?) nicht persönlich. Nach kurzer Suche bin ich auch nirgends auf einen Angabe des Drehbereichs gestossen (wohl aber auf viele unterschiedliche Angaben zum Drehmoment ;). Daraus schliesse ich: Der Drehbereich für Servos ist normalerweise ca. 180 Grad (meist etwas mehr). Wenn nirgends erwähnt wird das dieses Servo deutlich weiter drehen kann, was ja eine bessere Positionierung am Markt wäre, dann würde auch damit geworben werden. Also sind 180° für dieses Servo normal. Achtung! Wiederholtes Anschlagen am Anschlag kann das Servo zerstören!

    Die meisten Fundstellen hier im RN-Forum verknüpfen die MG995er mit MeckPommER weil er sie in seinem Marvin einsetzt:

    http://www.roboternetz.de/phpBB2/zei...ag.php?t=37615

    Schreib ihm doch mal 'ne PN.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    30
    Beiträge
    1.400
    ja hatte ihm schon vor dem kauf angeschrieben. werde es auch nochmal tun. von seinem projekt hatte ich auch die Servos "entdeckt". da es auch mein traum ist so einen hexa auf die beine zu stellen wollte ihc mihc mla langsam ran waagen Servos anzusteuern und ggf. den die servo experiment-ühase vorbei ist mal ein bain aufbauen um dnan mal die inverse kinematik versuchen zu können.

    PS: das mit dem anschlag erzählt meckprommer mir schon. da ich @mom eh am testen bin fände ich es jetzt nicht weiter schlimm wenn mir ein Servos kaput gehen sollte.

    gruß bammel

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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