-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Möglichkeiten der AVR/Arduino PWM?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211

    Möglichkeiten der AVR/Arduino PWM?

    Anzeige

    Ich überlege im Moment eine Art Quadcopter zu bauen, dazu brauch ich vier separate Motorenregelungen. Am einfachsten wärs natürlich, wenn ich gleich die im Arduino eingebaute PWM verwenden könnte. Ich hab mich etwas mit den Spezifikationen dieser brushless Motoren und -regler beschäftigt. Die Grundfrequenz die diese Regler brauchen liegt im Bereich von 50Hz (genau glaub ich 22.5ms Periode). Die PWM-Grundfrequenz am Arduino ist da standardmäßig weit daneben, aber die kann ich offenbar verändern, indem ein paar Register überschreibe.

    Ein großes Problem bleibt aber: der gesamte Drehzahlbereich wird anscheinend angewählt mit einer HIGH-Dauer von ungefähr zwischen 1-1.5 in die eine, bzw 1.5-2ms in die andere Richtung. Ich bräuchte eine Möglichkeit, die 8bit-Zahl die ich der analogWrite()-Funktion übergebe auf einen anderen Zeitbereich zu mappen, sonst bleiben da nur eine handvoll Abstufungen übrig, womit ich das Ding kaum gerade halten kann

    Geht das? Kann ich irgendwie einstellen, dass "0" eine Dauer des positiven Pulses von ungefähr 1.5ms und "255" von 2ms in einer 22.5ms-Periode entspricht?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hi,

    50Hz sind für Kopter im allgemeinen eher ungeeignet! Alle Projekte, die ich kenne, betreiben ihre Regler mit 500Hz (genauer: 490Hz). Es gibt darüber auch viele Infos im Netz, welche Modellbauregler diese Frequenz verarbeiten können
    Dann solltest du evtl. auf 16Bit PWM umsatteln, bei 8Bit hast du sonst dein o.g. Problem. Eine Art Map-Funktion für die PWM gibt es nicht (zumindest nicht in Hardware)!

    Gruß
    Chris

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Hi,

    50Hz sind für Kopter im allgemeinen eher ungeeignet! Alle Projekte, die ich kenne, betreiben ihre Regler mit 500Hz (genauer: 490Hz).
    Das glaub ich gar nicht. Ich meinte nur, dass die Regler die mir untergekommen sind mit der Frequenz arbeiten. Ich hab aber in der letzten Stunde auch welche mit 8kHz gefunden. Ich bin mir nicht sicher, aber ich denke dass sie sich bei manchen Reglern auch auf den gewünschten Wert einstellen lässt, die sind ja alle irgendwie programmierbar.

    490Hz wären perfekt, das ist ja die Arduino-Standardfrequenz, aber ich hab bisher keine Regler gefunden, die eine solche Frequenz angeben.

    Zitat Zitat von Che Guevara Beitrag anzeigen
    Dann solltest du evtl. auf 16Bit PWM umsatteln, bei 8Bit hast du sonst dein o.g. Problem. Eine Art Map-Funktion für die PWM gibt es nicht (zumindest nicht in Hardware)!

    Gruß
    Chris
    16-bit PWM gibts auch? Ist das einigermaßen bequem gelöst? Werd ich mir gleich mal ansehen.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hi,

    ich hab selbst schon mehrere Kopter von Grund auf selbstgebaut! Die Hersteller der Regler geben meistens 50Hz an, das ist aber bei weitem nicht die größtmögliche Frequenz.
    Hier ist unter anderem eine Liste von kompatiblen Reglern: http://fpv-community.de/showthread.p...MultiWiiCopter
    Die 8kHz beziehen sich glaub ich eher auf die Frequenz des Reglers intern
    Ja, 16Bit-PWM ist bei den meisten (oder allen??) AVRs hardwaremässig dabei. Die Frage ist nur, ob dein AVR eine genügend große Anzahl an solchen Kanälen bereitstellt. Zur Not ginge aber auch Soft-PWM, wird teilweise bei Multiiwii verwendet.

    Gruß
    Chris

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211
    Ok, der ATMega hat mehrere 16bit timer. Damit wirds was. Ob es diese Funktionalität auch bei einem Arduino-Modell gibt, find ich morgen raus, wenn die Homepage wieder erreichbar ist. Was ich so lese, gibts da meist nur 2 16bit-PWM pins.

    Danke für die Hilfe.

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo,


    Das klingt doch für mich als ob diese Regler wie normale Servos angesteuert werden. Für Arduino gibt es dafür die Servo Library, die genau das tut, was du benötigst. Eine Pulsdauer von 1-2ms bei 50Hz, bzw. zwischen 0..180Grad. 90Grad entspricht 1.5ms. Einige Beispiele sind in der Arduino IDE bereits enthalten.

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211
    Zitat Zitat von m.a.r.v.i.n Beitrag anzeigen
    Das klingt doch für mich als ob diese Regler wie normale Servos angesteuert werden.
    Ja, davon geh ich aus. Im klassischen Modelbau werden die direkt an den Empfänger angeschlossen und drehen rauf, wenn der Hebel an der Fernsteuerung nach vorne geht.

    edit: 180 verschiedene Werte? Nicht gerade üppig, aber könnt gehen.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    180 verschiedene Werte? Nicht gerade üppig, aber könnt gehen
    Es war die Rede von 0 bis 180°.
    Bei einem 8MHz Quarz sind für die Werte von 1ms bis 2ms immerhin 1000Werte möglich.
    Das bei einem 16Bit Timer und einem Prescaler von 8.
    Mit dem Comparematch Interrupt und ein wenig Software ist die Ansteuerung von bis zu 8 Servos möglich.
    Nutzt man zusätzlich noch den Comparematch B sind es bis zu 16 Kanäle mit einem 16 Bit Timer.

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211
    Die Arduino Servo Lib nimmt ints von 0 bis 180, also genau Gradschritte. Ich würd mir lieber sparen, zuviel selbst herumzuschreiben, Mikrocontrollerprogrammierung ist Chinesisch für mich.

    Verdammt, mir fällt jetzt erst auf, dass das wieder nur 90 Werte pro Richtung sind ... muss ich wohl doch selbst ran.

    edit: aso, nein, da gibts ja mehr als eine Funktion
    http://arduino.cc/en/Reference/ServoWriteMicroseconds

    Untere und obere Grenzen für die Pulslänge kann man auch einstellen, damit man keine Genauigkeit verschwendet. Nur die Frequenz ist scheinbar unveränderlich.
    Geändert von ichbinsisyphos (23.02.2013 um 09:47 Uhr)

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von Picojetflyer
    Registriert seit
    03.08.2004
    Ort
    Sauerland
    Beiträge
    247
    Zitat Zitat von ichbinsisyphos Beitrag anzeigen

    edit: 180 verschiedene Werte? Nicht gerade üppig, aber könnt gehen.
    Mit 8Bit Hardware PWM bekommt man bei Ca 490Hz nur Ca 120 Schritte. mehr geht nicht. aber das fliegt auch sehr gut. Sollte arduino mehr Auflösung schaffen muss mir das mal einer erklären. Edit: bei 16MHz
    Gruß
    Matthias
    Geändert von Picojetflyer (23.02.2013 um 10:07 Uhr)

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Arduino vs. AVR
    Von primus inter pares im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 30.09.2011, 09:35
  2. Robotik: Bilibot soll der Arduino der Robotik werden
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 2
    Letzter Beitrag: 22.04.2011, 19:24
  3. Möglichkeiten der Orientierung mit 2 SRF02
    Von Fabian E. im Forum Robby RP6
    Antworten: 5
    Letzter Beitrag: 03.02.2010, 22:54
  4. Arduino PWM Code
    Von Lota im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 20.12.2008, 10:03
  5. Möglichkeiten der Funkübertragung?
    Von carom im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 21.05.2008, 17:51

Berechtigungen

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