- Labornetzteil AliExpress         
Ergebnis 1 bis 9 von 9

Thema: Servos per Hardware PWM ansprechen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von MiniMax
    Registriert seit
    26.07.2007
    Ort
    Bremen
    Beiträge
    241
    Also haltet ihr die Hardwaremethode nicht vorteilhaft? Dann mache ich es einfach so wie immer? :
    Code:
    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 = 6 Then   
    Timer1 = 40000                                  '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
    Gruß
    MiniMax

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn man mit der Ansteuerfrequenz höher gehen kann, wie im Kommentar oben im Code angedeutet, kann man ggf. auch mit 8 Bit PWM noch brauchbare Ergebnisse (z.B. 40 Stufen) bekommen.

    Bei dem Basic Code hätte man dann zur Not noch die Möglichkeit für die Servos inline ASM zu nutzen - das bringt gegenüber Bascom schon ein merkliche Beschleunigung und weniger Speicherbedarf (Interrupts sind nicht gerade die Stärke des Bascom Compilers). Hat man für die Servos einen ganzen Port reserviert, kann man auch den Basic-Code noch kürzer machen (array Zugriff statt der if then else Konstruktion) .

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von MiniMax
    Registriert seit
    26.07.2007
    Ort
    Bremen
    Beiträge
    241
    Mhmm Ok also fasse ich zusammen:
    1. Servoansteuerung wie gehabt mit 16 bit Timer & Interrupts
    2. Bei mehr Geschwindigkeitsbedarf ASM inline nehmen

    Ich werde das dann erstmal aufs Board bringen und dann Testen ob und in wie weit mir der Interrupt dazwischen funkt.

    Vielen Dank an euch alle
    Gruß
    MiniMax

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei der Softwarelösung braucht man nicht unbedingt einen 16 Bit timer, das geht auch mit einem 8 Bit Timer nicht so viel schlechter. Mehr als etwa 50-100 Schritte könnte die meisten Servos mechanisch nicht Auflösen, und dafür reicht auch ein 8 Bit Timer, denn hier muss der Timer nur die Pulslänge auflösen, nicht die ganze Periode - für die Wartezeit am Ende kann man wenn nötig den Vorteiler umstellen.

Ähnliche Themen

  1. RFM ansprechen
    Von runner02 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 11.03.2012, 11:01
  2. Welche Hardware für Ansteuerung von Servos
    Von roboterfips im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 4
    Letzter Beitrag: 10.01.2010, 19:01
  3. Config Servos Befehl und allg. Servos
    Von Foooob im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 09.08.2007, 16:43
  4. USB Ansprechen
    Von DHigh im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 05.10.2006, 20:37
  5. Servos ansprechen mit Atmega16
    Von zersus im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 22.05.2006, 21:35

Berechtigungen

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

Labornetzteil AliExpress