-
        

Ergebnis 1 bis 2 von 2

Thema: Problem bei Servo Ansteuerung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.12.2010
    Beiträge
    5

    Problem bei Servo Ansteuerung

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich habe mich bei meiner Servo Ansteuerung für die Timer Methode entschieden (http://www.rn-wissen.de/index.php/Servoansteuerung)

    Bei dem ganzen hat sich der Servo hin und wieder kurz gedreht, zuletzt gar nicht mehr
    Nach dem drehen hat er immer eine weile gebrummt und danach das board neu gestartet, als hätte er die stromzufuhr kurz gekappt (versorgung über 9V batterie)

    So sieht die Ansteuerung aus:
    Timerinitialisierung
    Code:
    Config Timer0 = Timer , Prescale = 1024                     'timer für Servos
    Timer0 = 230                                                '224 bis 239
    Config Porta.0 = Output
    Porta.0 = 0
    On Timer0 Isr_servo
    Meine Rechnung dazu:
    16 mhz / 1024 / 1000 ergibt 15,...
    daraus ergibt sich der bereich für den timer
    timer1 ist schon anderweidig vergeben, daher kann ich den nicht nehmen
    (der Timer wird per Tastendruck aktiviert)

    Die Isr
    Code:
    Isr_servo:
    If Aktiv = 2 Then
    Print "Ende"
    Else
    If Aktiv = 0 Then
       Porta.0 = 1                                              'und port anschalten
       Aktiv = 1
       Print "An"
    Else                                                        
       Porta.0 = 0                                              'dann port wieder ausschalten
       Disable Timer0
       Aktiv = 2
       Print "aus"
       Waitms 20
    End If
    End If
    Return
    das ganze mit oder ohne die 20ms wartezeit
    das board meldet ordentlich "An", "aus" und "Ende" nacheinander, danach der oben beschriebene effekt

    abgesehen davon das Disable bei Timern offenbar nicht funktioniert (sonst gäbs kein "Ende") weiß einer woran es liegt?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Den Code im RN-Wissen solltest du dir noch mal genau ansehen!

    Nur ein paar Sachen, die so nicht klappen:
    1. Dein Timer läuft mit ca. 600Hz, d.h. die ISR wird alle ~1,7ms aufgerufen. Das wäre im Prinzip "fast" die Servo-Mittelstellung. Aber warum "disablest" du dann den Timer? Es müssen viele identische Impulse folgen, damit das Servo in eine Stellung fährt.
    2. Alle 20ms muss der Impuls wiederholt werden. Das geht nicht mit einem Waitms in der ISR! Eine ISR muss so schnell wie möglich ablaufen. Warten darf man nicht in der ISR. Sieh dir das Beispiel aus dem RN-Wissen genau an!
    3. Wenn das Servo "brummt" dann arbeitet es gegen einen Anschlag und verbraucht dabei extrem viel Strom. Der bringt dann dein Board zum Reset, weil dort die Versorgungs-Spannung einbricht. Das sieht dann so aus, dass das Board "neu startet".

    Gruß Dirk

Berechtigungen

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