-         

Ergebnis 1 bis 2 von 2

Thema: Servo stottert mit ATmega128funk Board

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.12.2007
    Beiträge
    13

    Servo stottert mit ATmega128funk Board

    Anzeige

    Ich habe grade eine kleinen (Conrad ES-05 JR) Servo zum Schwenken eines Sensors angebaut. Das PWM-Signal wird vom Atmega 128 geliefert, die Spannungsversorgung des Servos (5V) kommt direkt vom RP6-Roboter, von dem auch der Atmega versorgt wird. (Hatte das vorher auch am Board, hatte aber Angst, dass der Servo zu viel Strom zieht, der unten beschriebene Effekt tritt aber in beiden Fällen auf.)

    Ich fahre den Servo ganz langsam durch und warte nach jedem Einzelschritt 50 ms. Trotzdem passiert immer wieder, dass beim Fahren in der Rückrichtung der Servo plötzlich bis zum Anschlag springt, dort bleibt und dabei über 100 mA Strom zieht (sonst sinds nur so ca 20 mA). Die Wahrscheinlichkeit dafür wird höher, wenn ich nur 20 ms warte. Der Servo fährt dabei viel weiter in den Anschlag, als ich ihn sonst fahre. Mechanische Hindernisse sind nicht im Spiel, montiert ist nur ein kleiner Sharp-Sensor.

    Wahrscheinlich ist mir auf diese Art schon ein anderer Servo abgeraucht (im Endanschlag hängengeblieben und viel Strom gezogen).

    Der Code ist eigentlich ganz unspektakulär.

    Code:
    '###################################################
    'Servoansteuerung von RN 128
    '
    'Autor: Wag
    '#######################################################
    
    
    
    ' ---------------Definitionen ---------------------------
    $regfile = "m128def.dat" ' Bei Mega 128 "
    $framesize = 40
    $swstack = 40
    $hwstack = 40
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 19200                                               'Baudrate für Funkmodul
    $baud1 = 9600                                               'Baudrate für MAX
    
    Open "com2:" For Binary As #2                               'Ausgabe über zweite serielle Schnittstelle (MAX)
    
    Sound Portg.2 , 400 , 450                                   'BEEP bei RN-Mega128Funk
    Sound Portg.2 , 400 , 250                                   'BEEP bei RN-Mega128Funk
    Sound Portg.2 , 400 , 450                                   'BEEP bei RN-Mega128Funk
    
    Config Serialout1 = Buffered , Size = 100                   'Ausgabebuffer für normalse RS232
    Enable Interrupts
    ' ---------------Definitionen fuer Subprogramme----------
    'Ports
    Config Portf.0 = Output                                     'Motor
    
    ' ---------------------------------------------------
    
    Dim I As Integer
    Dim J As Integer
    
       Wait 2
    
       Print #2 , ""
       Print #2 , "****                                         ****"
       Print #2 , "**** Kommunikationscenter auf RN-Mega128Funk ****"
       Print #2 , "****                                         ****"
       Print #2 , ""
    
                Print #2 , "Motor wird durchgefahren."
                Config Servos = 1 , Servo1 = Portf.0 , Reload = 10
                Config Portf.0 = Output
                Enable Interrupts
    
    
    
                For I = 60 To 150
                   Servo(1) = I
                   Print #2 , I
                Waitms 50
                Next
    
                For I = 150 To 60 Step -1
                   Servo(1) = I
                   Print #2 , I
                Waitms 50
                Next
    End

    Hat jemand eine Idee, woher dieses Stottern kommt?

    Darf ich einen Servo durch einen einzigen Befehl von einer Seite zur anderen fahren, oder muss ich alle Zwischenpositionen anfahren, weil er sonst zu viel Strom zieht?

    Danke!

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

    Möglicherweise stört die serielle Schnittstelle, genauer der Interrupt derselben, die Impulslängen des Servos. Versuche es mal ohne Printausgaben.

    Die Servos kann man auch direkt durchfahren lassen, dann muss man aber zwischen der Übergabe der (End-)Positionen länger warten (ist ja logisch, oder). Der Strom ist dabei nicht höher als bei den Einzelschritten, im Gegenteil, durch das wiederholte Starten/Stoppen ist er (eher theoretisch) etwas höher. Übel wirds erst bei echter Belastung oder beim Blockieren, dann sind's bei den 3€-Servos schon mal 0,5A! Der Spannungsregler des RP6 ist kurzschlussfest und hat einen thermische Überwachung, trotzdem ab und zu prüfen ob er sich erwärmt.



    Gruß

    mic

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

Berechtigungen

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