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


von C. S. (chrisdask8)


Angehängte Dateien:

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-Ctrl&path=%2Ftags%2FV0.42%2FHex-Files%2FBL-Ctrl_V1_0%2F&#Ac50525c7f1f29a8b3dc643c5e00fa52b
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-Ctrl&path=%2Ftags%2FV0.42%2F&#A4bfcc0886576e3118d94460220fa558a

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

von Hagen (Gast)


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

von ... (Gast)


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.

von Lehrmann M. (ubimbo)


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 ?

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


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.

von gznw (Gast)


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!

von Thomas O. (tarzanwiejane)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.