- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 3542

Thema: Willas Shrediquette Tricopter / Quadrocopter / Hexacopter

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Hallo Matthias,
    ok, da habe ich was durcheinander gebracht. Was die Nomenklatur der PxM Generierung angeht hast du vollkommen Recht, danke für das Update

    Und noch was durcheinander gebracht...
    Die von dir beschriebene Methode zur Impulserzeugung ("Compare Match") haben wir beim sNQ V1 angewandt, da wir dort PWM für die Steuerung der brushed Motoren benötigt haben. Das hat auch prima geklappt, ergibt aber ein symmetrisches Signal, das ich für die ESCs nicht haben wollte.

    Haarig wurde es erst, als ich versucht habe, die Impulse für die ESCs zu erzeugen.
    Hier wollte ich CCM "Clear on Compare Match" verwenden, was ich so verstanden habe, dass ich den Timer mit Null und gesetztem Ausgangsbit starte, einen Comparewert vorgebe, der bei Erreichen zum Interrupt führt und gleichzeitig den Timer rücksetzt (wieder bei Null anfangen lässt zu zählen) und den Ausgang löscht, und zwar ohne user intervention.
    Die Impulslänge würde dann wieder durch schreiben des CompareMatch Registers bestimmt werden, die Pause zwischen zwei Impulsen wollte ich durch Enable/Disable steuern.

    Zur Pausensteuerung bin ich aber nicht gekommen, da das Handling der Zählerwerte schon nicht geklappt hat.

    Vielleicht habe ich ja auch das Datenblatt falsch verstanden...
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von Picojetflyer
    Registriert seit
    03.08.2004
    Ort
    Sauerland
    Beiträge
    247
    Zitat Zitat von deHarry Beitrag anzeigen
    Haarig wurde es erst, als ich versucht habe, die Impulse für die ESCs zu erzeugen.
    Hier wollte ich CCM "Clear on Compare Match" verwenden, was ich so verstanden habe, dass ich den Timer mit Null und gesetztem Ausgangsbit starte, einen Comparewert vorgebe, der bei Erreichen zum Interrupt führt und gleichzeitig den Timer rücksetzt (wieder bei Null anfangen lässt zu zählen) und den Ausgang löscht, und zwar ohne user intervention.
    Also wenn ich dich richtig verstanden haben möchtest du das so machen:

    Do
    Timer mit 0 starten und hochzählen lassen mit aktivierten OC-Pin
    Timer erreicht Compare wert z.b 100
    Compare Match setzt Timer auf 0 zurück und setzt OC-Pin auf low
    Timer zählt wieder bis Compare hoch
    Compare löscht wieder Timer aktiviert wieder OC-Pin
    Loop

    richtig???

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Fast.

    Do
    Timer mit 0 starten und hochzählen lassen mit aktivierten OC-Pin
    Timer erreicht Compare wert z.b 100
    Compare Match setzt Timer auf 0 zurück und setzt OC-Pin auf low
    -> hier den Timer anhalten und wahlfrei "irgendwann" wieder starten mit OC-Pin auf low
    -> Nach dem NeuStart, bei dem der Pin wieder zu setzen ist:
    Timer zählt wieder bis Compare hoch
    Compare löscht wieder Timer, deaktiviert wieder OC-Pin
    Loop

    Aber das von dir skizzierte Szenario müsste ebenfalls funktionieren, dann hätten wir halt doch ein symmetrisches (Low-Hi-Anteil) PWM-Signal.
    Wenn ich das dann richtig interpretiere, läuft das ja inzwischen einwandfrei in deinem Copter

    Mich stört hieran nur die geringe Auflösung. Das ist der fehlenden Prescalerstufe 32 geschuldet, richtig?
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von Picojetflyer
    Registriert seit
    03.08.2004
    Ort
    Sauerland
    Beiträge
    247
    Zitat Zitat von deHarry Beitrag anzeigen
    Aber das von dir skizzierte Szenario müsste ebenfalls funktionieren, dann hätten wir halt doch ein symmetrisches (Low-Hi-Anteil) PWM-Signal.
    Wenn ich das dann richtig interpretiere, läuft das ja inzwischen einwandfrei in deinem Copter

    Mich stört hieran nur die geringe Auflösung. Das ist der fehlenden Prescalerstufe 32 geschuldet, richtig?
    Haar genau! der 32er Prescaler fehlt total. Ich bin noch am tüfteln mit den PID Werten aber eigentlich merkt mal die geringere Auflösung gar nicht. Die Knüppelstellung wird auch nur mit 74 Schritten aufgelöst und an der Feinfühligkeit merkt man auch nix. Allerding könnte ich mir vorstellen das man es mit zunehmender Minisierung (es soll ja Leute geben die sowas wie ein sNQ bauen ) die geringere Auflösung doch merkt.
    Wofür möchtest du den Timer denn stoppen? Brauchst du den für was anderes?

    Code:
    Config Timer0 = Timer , Compare_a = Toggle , Prescale = 64 , Clear_timer = 1
    Damit erzeugt man ein symmetrisches PWM Signal. Hab es grade ausprobiert.

    Gruß

    Matthias

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Oh Mann!!
    Da war es wieder... Wer sinnbegreifend lesen kann ist klar im Vorteil...

    "Clear_Timer" ist das Zauberwort.
    Steht (nicht dick und fett) in allen Hilfethemen von Bascom zu den Timern in der Parameterliste drin, ist aber nicht explizit erklärt, also hat's der gute Harry nicht mehr gesehen .
    Danke für das (ökologisch verträgliche) beiseite räumen des Waldes!!

    Was die Auflösung angeht stimme ich dir vorbehaltlos zu. Die Feinfühligkeit der Steuerung ist nicht so sehr das Problem, sondern die Onboard-Regelung muss so feinstufig wie möglich erfolgen, weil je kleiner, je kippeliger ist das Teil.

    Ach ja... Stoppen wollte ich den Timer, damit ich von den 40 µs weg komme. Mir erschien ein Wert in der Größenordnung von 3..4 ms sympatischer.

    Meine aktuelle Routine zur PWM-Erzeugung stellt 255 diskrete Werte für die vier ESCs zur Verfügung und durch Optimierung der Receiver-IRQ-Routine scheine ich es geschafft zu haben, die gegenseitigen Störungen zu eliminieren oder doch zumindest soweit verringert zu haben, dass es mir seit dem nicht mehr aufgefallen ist.
    Die Pause zwischen den Impulsen ist variabel und hängt direkt an den anderen drei Sollwerten, die Impulse werden reihum erzeugt.
    Vorlage war ein Servo-Beispiel aus www.mikrocontroller.net.
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von Picojetflyer
    Registriert seit
    03.08.2004
    Ort
    Sauerland
    Beiträge
    247
    Die Hilfe von Bascom könnte mal überarbeitet werden. Nicht jede Unterart von den Befehlen wir klar erklärt...
    Ich hatte auch erst daran gedacht die Servo Routine von Willa zu erweitern. So wie es Nils mit seiner Kammera anti wackel Halterung mal gemacht hat.
    Aber ich will die Hardware des Controllers so effizient wie möglich nutzen und so wenig wie möglich durch das Programm abarbeiten lassen.

    Mir ging grade ein Licht auf! Der Mega2560 hat vier 16Bit Timer. Jeder hat mindestens zwei Compare Pins. Bei 16 Bit könnte man mit einen Prescaler=8 eine Auflösung von 2000 Schritten erreichen mit der Clear_Timer Funktion.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    38
    Beiträge
    1.400
    Hey,

    das klingt ja alles super
    ich werde für den sNQ mal am wochenende die hardware-lösung testen... vllt heben sich ja die geringe auslösung durch die 490Hz wiederholrate auf!? denn unser programm läuft ja mit rund 400Hz wenn ich das noch richtig in erinnerung habe.

    gruß, sven
    Der miniatur Quadrocopter: www.nanoquad.de

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test