-         

Ergebnis 1 bis 3 von 3

Thema: Servo zucken bei Power on vermeidbar???

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    22.03.2005
    Beiträge
    91

    Servo zucken bei Power on vermeidbar???

    Anzeige

    Hallo!

    Ich habe folgendes Problem. Wie in der angehängten Software wird ein Servo von einem ATtiny 13 gesteuert um damit auf der Modellbahn Weichen, oder Tore zu steuern. Mit den Potis werden die Endlagen eingestellt, die eigentlich eingehalten werden sollen.

    Nun ist es beim Einschalten aber so, daß das Servo kurz über die Eine Endlage zuckt um dann in der gewünschten Lage stehen zu bleiben.
    Kann man dies irgendwie unterdrücken??? Oder liegt das am Servo generell? Kenne dieses Phänomän noch gut von der Lenkung meines Ferngesteuerten Auto beim Einschalten, nur macht es hier nichts aus, da keine mechanische Endlage in der Mittelstellung erreicht wird.
    Kann man das vierhindern, indem ich den zuerst auf high oder low lege und dann erst als Servo freigebe???

    Hat vielleicht noch jemand eine Idee, wie ich das verwendete kleine Conrad-Servo langsamer aber dennoch gleichmäßig laufen lassen kann?
    Evtl. ein kleines Beispiel?

    Viele Grüße

    und schon mal danke für Eure Mithilfe

    Sven
    Code:
    '-----------------------------------------------------------------------------------------
    'name                     : Schuppentor_Servotiny13.bas
    'copyright                : (c) 2007 SZ
    'purpose                  : Endlage über Potis einstellbar
    '                           Ansteuerrung über PB1
    'micro                    : TINY13
    'Minimum                  : 35 for most small Conrad-Servos
    '-----------------------------------------------------------------------------------------
    
    $regfile = "attiny13.dat"                                   ' specify the used micro
    $crystal = 9600000                                          ' used crystal frequency
    '$baud = 19200                                               ' use baud rate
    '$sim
    
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 10                                               ' default use 10 for the SW stack
    $framesize = 40                                             ' default use 40 for the frame space
    
    Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
    
    '--------------------------Config AD - Wandler--------------------------------------
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    'For this chip you can use the additional param :
    'Config Adc = Single , Prescaler = Auto, Reference = Internal
    'The reference param may be :
    'OFF      : AREF, internal reference turned off
    'AVCC     : AVCC, with external capacitor at AREF pin
    'INTERNAL : Internal 2.56 voltage reference with external capacitor ar AREF pin
    
    Enable Interrupts                                           'Ist nötig
    Config Portb.0 = Output                                     'Servoausgang
    Config Pinb.1 = Input                                       'Auf/ZU
    Config Pinb.2 = Input                                       'Jumper
    Config Debounce = 20                                        'Tastenentprellung 20ms
    
    'Interne Pullup Widerstände einschalten
    Portb.1 = 1
    Portb.2 = 1
    
    Dim Minimum As Byte
    Dim Maximum As Byte
    Dim Spg_p1 As Word
    Dim Sresult As Word
    Dim Flag As Bit
    '-----------------------------Sub Deklaration-------------------------------------
    Declare Sub Poti_1
    Declare Sub Poti_2
    
    Start Adc
    
    Flag = 0
    Minimum = 35                                                'Rechter Anschlag
    Maximum = 155                                               'Linker Anschlag
    
    Do
    
    Gosub Taster_up
    
    Loop
    
    
    
    End
    '*******************************************************************************
    
    Taster_up:
    'Debounce Pinb.1 , 1 , Pr 'try this for branching when high(1)
      Debounce Pinb.1 , 1 , Aus_up , Sub                        'Taster offen
      Debounce Pinb.1 , 0 , Ein_up , Sub                        'Taster gedrückt
    
    Return
    '*******************************************************************************
    
    'Unterprogramm Taste Up
    Ein_up:
      Gosub Poti_1
    Return
    
    '*******************************************************************************
    
    'Unterprogramm Taste Up
    Aus_up:
      Gosub Poti_2
    Return
    
    '*******************************************************************************
    
    Sub Poti_1
    
    Spg_p1 = Getadc(2)                                          'Spannung an Poti
    
     Sresult = Spg_p1 / 8
     Sresult = Sresult + 35
    
     If Sresult < 35 Then
       Servo(1) = Minimum
     End If
    
     If Sresult = 35 Then
       Servo(1) = Sresult
     End If
    
     If Sresult > 35 Then
       Servo(1) = Sresult
     End If
    
     If Sresult > 155 Then
       Servo(1) = Maximum
     End If
    
    End Sub
    
    '*******************************************************************************
    Sub Poti_2
    
    Spg_p1 = Getadc(3)                                          'Spannung an Poti
    
     Sresult = Spg_p1 / 8
     Sresult = Sresult + 35
    
     If Sresult < 35 Then
       Servo(1) = Minimum
     End If
    
     If Sresult = 35 Then
       Servo(1) = Sresult
     End If
    
     If Sresult > 35 Then
       Servo(1) = Sresult
     End If
    
     If Sresult > 155 Then
       Servo(1) = Maximum
     End If
    
    End Sub

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Hessibaby
    Registriert seit
    20.11.2003
    Ort
    Gelsenkirchen
    Alter
    65
    Beiträge
    1.597
    Bei (analogen) Servos ist nun mal das Timing relativ wichtig. Alle 20ms muss ein Puls zwischen 1ms und 2ms kommen (1ms linker Anschlag, 1,5ms Mitte, 2ms rechter Anschlag). Wenn kein Signal anliegt, also dein ATiny noch am initialisieren ist und die Leitung zum Servo noch "in der Luft" hängt, kann es passieren dass das Servo zu einem Anschlag läuft, um danach in die gesollte Position zu laufen.
    Wenn Du noch einen freien Ausgang hast, dann schalte das Servo, über einen Transistor, erst dann ein wenn alle Ports initialisiert sind.
    Zu Deiner zweiten Frage: Zwei antiparallel geschaltete Dioden in Reihe zum Motor (im Servo) reduzieren die Spannung, am Motor, um 0,7V.
    Das funktioniert sicher (selber ausprobiert).
    Wenn Du es noch langsamer brauchst kannst Du es mit zwei Paaren versuchen.
    Gruß aus der Modellbauecke an die Schiene

    Planung ersetzt Zufall durch Irrtum

    Gruß aus dem Ruhrgebiet Hartmut

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    22.03.2005
    Beiträge
    91
    Zitat Zitat von Hessibaby
    Bei (analogen) Servos ist nun mal das Timing relativ wichtig. Alle 20ms muss ein Puls zwischen 1ms und 2ms kommen (1ms linker Anschlag, 1,5ms Mitte, 2ms rechter Anschlag). Wenn kein Signal anliegt, also dein ATiny noch am initialisieren ist und die Leitung zum Servo noch "in der Luft" hängt, kann es passieren dass das Servo zu einem Anschlag läuft, um danach in die gesollte Position zu laufen.
    Wenn Du noch einen freien Ausgang hast, dann schalte das Servo, über einen Transistor, erst dann ein wenn alle Ports initialisiert sind.
    Zu Deiner zweiten Frage: Zwei antiparallel geschaltete Dioden in Reihe zum Motor (im Servo) reduzieren die Spannung, am Motor, um 0,7V.
    Das funktioniert sicher (selber ausprobiert).
    Wenn Du es noch langsamer brauchst kannst Du es mit zwei Paaren versuchen.
    Gruß aus der Modellbauecke an die Schiene
    Hallo!

    Danke für den Tipp! Habe es auch mal getestet. Allerdings zuckelt das Servo dann total sobald ein Transistor in der Leitung hängt egal, ob in +5V oder der Masseleitung. Also absolut unbrauchbar.
    Die Drehgeschwindigkeit verringert man durch Pausen zwischen den Schritten, nicht durch Dioden! Das bringt dann den selben Effekt wie die Flußspannung des Transistors.

    Jetzt lasse ich es erstmal bei dem Einschaltzucken. Vielleicht gibt es ja noch eine Lösung.

    Viele Grüße

    Sven

Berechtigungen

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