mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PPM Signal erzeugen für brushless - Regler


Autor: C. S. (chrisdask8)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi @ all,

ich habe mir den brushless- Regler von hier
http://mikrokopter.de/ucwiki/BrushlessCtrl

nachgebaut sozusagen. Der Regler ist an einen LiPo 11,1V Akku und einem 
brushless Motor angeschlossen.
Von der Verkabelung des Reglers, Motors, Akkus her dürfe alles passen, 
da zb durch das Testprogramm "Test_Schub_BruchLess-Ctrl_V0_32.hex" von
http://svn.mikrokopter.de/listing.php?repname=BL-C...
der Motor ordentlich auf Touren kommt.

Nun möchte ich aber testweise die Original Software aufspielen von hier
http://svn.mikrokopter.de/listing.php?repname=BL-C...

und den Regler dann mit einem selbst erzeugtem PPM Signal ansteuern.
Dazu bastelte ich mir einen recht simplen Testcode, der zunächst 10 
Sekunden lang einen 1ms Puls (+5V) erzeugt, gefolgt von 19ms LOW, immer 
hintereinander (sozusagen 0% Gas).
Nach diesen ersten 10 Sekunden soll der Regler dann "Gas" geben ;) dazu 
werden ca. 1,3ms HIGH gefolgt von ca. 18,7ms LOW als PPM Signal erzeugt 
(also ca 30% Gas).

Wäre nett wenn jemand sich mal den C-Code im Anhang anschauen würde, ist 
nicht umfangreich.

Jetzt meine Frage, ist dieser Code geeignet um ein korrektes PPM Signal 
für den Regler zu erzeugen? Bislang zeigt der Regler keine Reaktion, 
wenn ich dieses PPM Signal auf den PPM- Anschluss (PB0) des Reglers 
gebe.

Das PPM Signal meines Codes wird von einem Mega8 mit 8Mhz externem 
Quarzoszillator erzeugt.

Hoffe jemand kann mir weiterhelfen, was ich falsch mache.

Danke schonmal!!

MfG Christian

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verstehst du unter PPM ? Ich kenne das als Puls Position Modulation 
und das ist eher eine Kodierung um Daten zu übertragen, bei der der 
Dutycycle möglichst immer gleich bleibt.

Gruß Hagen

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mmh, ich hab letztens so ein Signal für einen Brushless-Regler mit einem 
Frequenzgenerator erzeugt.
Den besten Erfolg hatte ich mit einem 10ms Grundsignal, dessen Pulswide 
ich von 1 ms bis 4 ms veränderte. Ab ca. 2ms startete der Motor und bei 
4ms blieb er wieder stehen.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was möchtest du denn genau wissen ? Ich weiss nicht worauf ich bei 
deinem Code achten soll...? Fehler bekannt ?

PPM wird im Modellbau verwendet. Für die Funkfernsteuerung! Meinst du 
das oder vielleicht PWM ?

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh mal bei sprut.de nach, da ist alles dokumentiert.
Da wird wohl auch stehen, daß 1,5ms die "Mitte" also Stillstand ist ... 
Ich habe keine praktische Erfahrung mit dem Einbau von Fahrtreglern also 
kann ich auch nicht sagen, ob 1ms oder 2ms dann Vollgas sind.

Die Länge der Pause zwischen den Impulsen ist eher Nebensache, die Länge 
der Pulse wird aber genau vermessen.

Autor: gznw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Also soweit ich weiß brauchst Du zur Ansteuerung ein PWM-Signal. Mit dem 
PPM-Signal werden die Daten mehrere Kanäle übertragen!
PWM lässt sich bei den Controllern recht gut realisieren, da viele diese 
Funktion bereits integriert haben ;-)
Da es hierbei wahrscheinlich kein Fahrtregler, sondern ein Flugregler 
ist, werden die 1,5ms zwar die Mitte sein, aber der Motor dreht nur in 
eine Richtung, also ist die untere Grenze 1ms! Dies gilt allerdings für 
Servos! Ich gehe aber davon aus, daß dies bei deinem Regler auch so ist. 
Das muß eigentlich dokumentiert sein.
Also PWM lässt sich sehr gut mit wenig Code realisieren!

Autor: Thomas Otto (tarzanwiejane)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo C.S.

deine Annahme, dass das PPM Signal das du brauchst ein alle 20ms 
wiederholter 1-2ms Impuls ist ist korrekt. Das ist für 
Servos/Brushless-controller etc... halt alles ausm Modellbau.
1ms ist 0  also kein Gas
1,5ms ist "neutralstellung" bei dir Halbgas
2ms ist Full Speed

Dein Code sieht allerdings ziemlich daneben/unübersichtlich aus.
Normalerweise macht man das mit einem der Timer und den Output Compare 
Match Registern -> PWM mit 50Hz (aka 20ms) und entsprechend der OCR1 die 
1-2ms Pulslaenge.
Da brauchst du dann nicht mal ne Interruptroutine. Einfach Register 
setzen, der Rest geschieht in Hardware. Du musst nur den richtigen Pin 
(z.B. OC1) als PWM Ausgang dann an deinen Brushless Controller haengen. 
Mach am besten nen 100Ohm Wiederstand dazwischen.

cu Tarzanwiejane

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.