- Labornetzteil AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 26

Thema: "Config Servo" in Bascom - Warum so krumme Werte??

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Anzeige

    Powerstation Test
    Wir ein größeres und längeres Projekt.........
    ...das scheint mir allerdings auch so
    Wenn sich so etwas überhaupt mit einem einzigen Controller lösen lässt.

    Vielleicht hilft Dir PWM ja ein wenig weiter - ich wünsch´ jedenfalls gutes Gelingen!

    Daniel

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161

    PWM vs. Config Servo

    ... also mit PWM die Ansteuerung zu realisieren ist ja recht einfach. Aber....

    auch mit dieser Auflösung bin ich nicht zufrieden. Warum? Na beim 10bit PWM habe ich bei 1.0ms einen Comparewert von 966, bei 1,5ms - 935 und bei 2,0ms Compare von 908. Somit über den gesamten Servoweg nur 58 Schritte Auflösung.

    Gibt es eine Möglichkeit die Auflösung weiter zu erhöhen? Steh jetzt echt auf dem Schlauch....

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    mit PWM die Ansteuerung zu realisieren ist ja recht einfach. Aber.... auch mit dieser Auflösung bin ich nicht zufrieden.
    Mit Hardware-PWM kann man (je nach Taktfrequenz) auch eine Auflösung von 1 us erreichen (also 1000 Schritte über den ganzen Servoweg).
    Damit kann man z.B. einen sehr genauen Servotester bauen.

    Gruß Dirk

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    Hi! Ich habe kürzlich einen Tricopter gebaut. Hier ist das Auslesen des RC Empfängers sowie das erzeugen von RC-Signalen sehr zeitkritisch. Außerdem muss die Auflösung hoch sein. Das ist nicht unbedingt trivial, da man meistens ja nur einen 8bit (=256 Schritte) und einen 16bit (=65536 Schritte) Timer hat. 256 Schritte für das Servosignal oder das Empfängersignal waren mir z.B. zu wenig.
    Zum Auslesen des Empfängers habe ich kürzlich einen Artikel im Wiki geschrieben. Zum erstellen der RC-Signale gibt es sehr viele unterschiedliche Möglichkeiten, wenn du willst kann ich dir meine Lösung schicken (schreib mir dafür am besten per PN deine email adresse)
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    @ Markus:

    Eine Möglichkeit, mehr aus dem 16bit-Timer herauzuholen besteht darin, das Impuls-Pausen-Verhältnis des Signals zugunsten des Impulses zu verändern (z.B. durch einen halbierten Prescaler und entsprechend abgesenkte Compare-Werte). Dadurch fallen mehr Takte aud die High-Phase.

    In allen Datenblättern steht außerdem "True 16bit design (i.e. allows 16bit PWM)".
    Ich vermute daher, dass diese Begrenzung auf 10 bit ein Bascom-Problem ist. Leider hat mir bisher die Zeit gefehlt einmal auszuprobieren, ob man auf Registerebene nicht doch eine 16bit-Auflösung hingekommen kann. Vielleicht wäre das genau das richtge für diesen verregneten Sonntag heute

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    ...und es geht doch:

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    
    DDRB.1 = 1
    
    TCCR1A = &B10000000
    TCCR1B = &B00010001
    
    ICR1L = &B11111111
    ICR1H = &B11111111
    
    
    Dim Phase As Word
    
    Do
    
    For Phase = 2000 To 4000
    Waitms 2
    OCR1AH = High(phase)
    OCR1AL = Low(phase)
    Next Phase
    
    Loop
    Dieser kleine Code erzeugt ein PWM-Signal mit ca. 30Hz, wobei die High-Zeit in 2000 (!) Stufen zwischen 1 und 2 ms variiert wird (pro Durchlauf etwa 4 Sekunden). Also echtes 16bit-PWM...

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Jungs Ihr seid Spitze!!!

    @William: Hast ne PM

    @Daniel: Wow werde ich heute abend gleich mal ausprobieren! Vielen Dank auch Dir für den Tipp (und gleich den Praxisversuch!!!))


    1000end Dank.

    Markus

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hallo Daniel,

    ich habe jetzt mal Deinen Code 1 zu 1 kopiert. Ich bekomme leider kein PWM Signal an Pin B.1 (OC1A) gemessen. Er bleibt nur auf "high". ??

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Hi Markus,

    sorry - da ist mit trotz "Copy - Paste" ein kleiner Dreher mit großer Folge unterlaufen:
    Die ICR1-Register müssen in umgekehrter Reihenfolge beschrieben werden, also erst das ICR1H und dann ICR1L.

    Code:
    ICR1H = &B11111111
    ICR1L = &B11111111
    Das klingt jetzt zwar fast esoterisch (zumal sie beide 0xFF enthalten), ist aber so. Wenn man zuerst das "Low"-Register beschreibt, läuft´s schief...

    Gruß,

    Daniel

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hi Daniel,

    ...ahhh, das muss man wissen. Das funktioniert echt gut! Ok eine 2000er Auflösung muss net sein aber ich habe hier schon einiges rumgespielt und das sieht sehr sehr gut aus. Das Servo ist so butterweich oder schnell und immer super präziese zu steuern. Muss mal mit nem größeren Code rundrum und mehr Kanälen spielen...

    Merci

    Gruß
    Markus

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests