PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ist PWM = PWM



freezly
29.04.2011, 21:07
Hallo,

ich beschäftige mich neuerdings mit Modellbau und plane einen Quadrocopter. Nun habe ich mir eine Platine rausgesucht, mit der ich über Brushless Regler Brushless Motoren steuern möchte.
Die Platine (IOIO von http://ytai-mer.blogspot.com/2011/04/meet-ioio-io-for-android.html),
der Regler: http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=6456
und der Motor: http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=5354.

Soweit ich es in Erfahrung bringen konnte wird der Regler auf jeden Fall mit dem Motor können. Die Platine erlaubt mir 9 PWM Outputs. Leider habe ich nirgends finden können, wie diese Regler angesteuert werden. Ich denke, PWM Signale würden theoretisch gehen, aber nirgends steht, dass man mit PWM direkt drauf gehen kann. Und ist denn PWM auch gleich PWM, oder gibt es da Unterschiede bei den Signalen, Spannungen, Ströme?

PICture
30.04.2011, 10:55
Hallo!


Und ist denn PWM auch gleich PWM, oder gibt es da Unterschiede bei den Signalen, Spannungen, Ströme?

Eigentlich gibt es nur 1ne PWM ("puls width modulation", Freiübersetzung: Pulsweite Änderung), die den Tastverhältnis ein/aus definiert. Alles Weiteres ist von der tatsächlicher Schaltung abhängig und beliebig. ;)

TobiKa
30.04.2011, 12:11
Japp, PWM sagt immer das selbe aus, das Verhältnis zwischen Ein und Ausschaltzeit.
Frequenz, Spannung, ... sind dabei geliebig und nicht fest definiert.

freezly
30.04.2011, 18:42
Hm, ok. Was meint ihr so ganz spontan aus dem Bauch raus: ist die Chance groß, dass es auf Anhieb funktionieren könnte, oder ist das eher Zufall und ziemlich schwierig zu sagen. Die Spannungsversorgung würde ja sogar von der selben Quelle (3 Zellen Lipo) kommen.

Naja, meine Sätze oben zeigt wohl, dass ich ganz schön unschlüssig bin, ob ich nun das Geld ausgeben soll. Ist mein erster Kontakt mit solchen Sachen.

Klebwax
30.04.2011, 18:52
Japp, PWM sagt immer das selbe aus, das Verhältnis zwischen Ein und Ausschaltzeit.
Frequenz, Spannung, ... sind dabei geliebig und nicht fest definiert.

Leider nicht ganz so. Das Pulsbreiten modulierte Übertragungsprotokol zwischen RC-Empfänger und Servo wird auch gern als "PWM" bezeichnet.

MfG Klebwax

I♥ROBOTIC
30.04.2011, 18:57
@Klebwax Servos werden doch mit PWM gesteuert oder nicht :D ?




Also noch zum Thema ;):


ich denke du musst an den Regler ein PWM-signal senden und dieser steuert dann den Motor je nachdem wie das Signal ist


du brauchst also 4 Regler (da du ja 4 Motoren hast)

Klebwax
30.04.2011, 19:26
@Klebwax Servos werden doch mit PWM gesteuert oder nicht :D ?

Nein. Es ist ein Übertragungsprotokol, bei dem Analogwerte Pulsbreitenkodiert übertragen werden. Leg das Signal einfach mal an den PWM Eingang einer H-Brücke und versuche damit einen Motor zu steuern, dann wird dir auffallen, daß das so nicht geht.

MfG Klebwax

I♥ROBOTIC
30.04.2011, 19:31
hm... was ist denn der Unterschied :D ?


zitat aus dem RN-Wissen (servos)

An die Signalleitung (siehe Steckerbelegung oben) wird ein pulsweitenmoduliertes Signal (PWM) angeschlossen.

PICture
30.04.2011, 19:56
hm... was ist denn der Unterschied :D ?

Der Unterschied ist in der per PWM gesteuerter Schaltung. Es ist in beiden Fällen definitiv die PWM.

TobiKa
30.04.2011, 20:00
@Klebwax
Und warum kann ich dann ohne Probleme ein von einem µC generiertes PWM zum ansteuern von Servos nutzen?!

Klebwax
30.04.2011, 20:15
Ok, also erstmal PWM: statt einen Verbraucher analog anzusteuern (Motor am Labornetzteil, an der Spannung drehen) kann man ihn durch ständiges ein- und ausschalten steuern. Macht man das schnell genug, stellt sich durch mechanische und elektrische Trägheit eine mittlere Drehzahl ein. Bei einer LED oder Lampe sorgt das Auge für die mittlere Helligkeit. Schalte ich ständig ein, also 100% an, habe ich volle Helligkeit/Drehzahl, schalte ich nie an, also 0% oder gar kein Puls ist der Verbraucher aus. Die Frequenz, mit der man schaltet, hängt vom Verbraucher ab. LEDs sollten so schnell geschaltet werden, daß das Auge kein Flimmern bemerkt, also > 100Hz. Bei Motoren geht man gerne auf eine "hohe" Frequenz, damit der Motor nicht singt.

Gemeinsam ist aber, das Verhältnis von Pulsbreite zu Periodendauer typisch ausgedrückt in % gibt an, wie stark ich den Verbraucher ansteuere.

Nun zu Servoprotokol: (ich lass hier mal das Summensignal, das intern im Empfänger vorhanden ist, weg) Ein Daten-Telegram ist ca. 20ms lang. Es besteht aus einem Signal, das mindestens 0,5ms an ist. Die maximale Länge beträgt 1,5ms (manchmal gibt es auch Signale mit 1 - 2ms). Die übertragene Information steckt in der Pulsbreite. Für ein Servo ist das kürzeste Signal die eine Endposition, das längste die andere. Bei einem umsteuerbaren Motor ist das kurze Vollgas in die eine Richtung, das lange Vollgas in die andere. Bei Motoren ohne "Rückwärtsgang" legt man gerne Stop auf den kurzen und Vollgas auf den langen Puls. Bei Schiffsmodellen mit vielen Schaltfunktionen teilt man den Bereich zwischen kurzem und langem Puls in verschiedene Funktionen auf, z.B. 0,7ms Nebelhorn, 0,9ms Feuerlöschspritze 1,1ms ...

Dieses Datenprotokoll wird gerne als PWM bezeichnet, hat aber mit der oben beschriebenen PWM wenig gemein. Zur Verwirrung trägt auch bei, daß Motorcontroler aus dem RC-Bereich aus dem Servoprotokoll eine PWM machen, und auch Servos ihre Motoren mit PWM ansteuern. Auch wird zur Erzeugung diese Signals gerne die PWM-Einheit eines µC verwendet, dabei muß man aber aufpassen, daß das erzeugte Signal sich im PWM-Sinn nur zwischen etwa 2% und 7% bewegen darf, sonst spielen Servo und Motorcontroler nicht mit.

Ich hoffe, ich habe die allgemeine Verwirrung nicht vergrößert

MfG Klebwax

TobiKa
30.04.2011, 20:21
(ich lass hier mal das Summensignal, das intern im Empfänger vorhanden ist, weg)
Sehr gut, ist ja auch was völlig anderes...


Dieses Datenprotokoll wird gerne als PWM bezeichnet, hat aber mit der oben beschriebenen PWM wenig gemein.
Das sehe ich aber ganz anders, in dem Absatz davor hast du genau ein PWM beschrieben. Ob Boot, Auto, Flugzeug... Wayne.


dabei muß man aber aufpassen, daß das erzeugte Signal sich im PWM-Sinn nur zwischen etwa 2% und 7% bewegen darf, sonst spielen Servo und Motorcontroler nicht mit.
Ich muss also die korrekten Zeiten einhalten... sag bloß.

Mir ist schon klar was du meinst, das eine ist reine Information, das andere steuert direkt an und nutz die Trägheit von was auch immer.
Das Signal als solches ist und bleibt Pulsweitenmoduliert.

PICture
30.04.2011, 20:30
http://www.youtube.com/watch?v=n03g8nsaBro ;)

freezly
30.04.2011, 20:39
Nunja, jetzt habe ich viele Informationen ... danke

hm, ich habe nun ein nicht näher spezifizierten PWM Ausgang an diesem Board und möchte einen Regler damit betanken. Ist es möglich, dass dieser Ausgang genau mit diesem Servoprotokol kompatibel ist oder geht das einfach nur mit spezieller Hardware für den RC Bereich?

Klebwax
30.04.2011, 20:40
Sehr gut, ist ja auch was völlig anderes...


Das sehe ich aber ganz anders, in dem Absatz davor hast du genau ein PWM beschrieben. Ob Boot, Auto, Flugzeug... Wayne.


Ich muss also die korrekten Zeiten einhalten... sag bloß.

Na dann schalte mal dein Servosignal an den PWM-Eingang einer H-Brücke, z.B. ein L298 oder auch die RN Module.

Das Servoprotokoll ist durch die lange Pause zwischen den Pulsen so aufgebaut , daß man mehrere Pulse, leicht zeitversetzt über eine Datenstrecke übertragen kann. Das ist dann das Summensignal. Es stammt aus der vor-µC Zeit, und läßt sich leicht mit Standard ICs in einzelne Signale auftrennen.

Nur weil ein Puls sich in der Breite ändert, ist das noch lange keine PWM.

MfG Klebwax

Klebwax
30.04.2011, 20:51
Nunja, jetzt habe ich viele Informationen ... danke

hm, ich habe nun ein nicht näher spezifizierten PWM Ausgang an diesem Board und möchte einen Regler damit betanken. Ist es möglich, dass dieser Ausgang genau mit diesem Servoprotokol kompatibel ist oder geht das einfach nur mit spezieller Hardware für den RC Bereich?

Ich kann nur vermuten, das bei dem IOIO wirklich PWM und nicht Servoprotokol gemeint ist. Im Englischen wird da sonst von Servo oder RC-Servo gesprochen. Wie gut man da, ohne die Firmware auf dem Board zu ändern, ein Servosignal mit 50 Hz und einer vernüftigen Auflösung hinbekommt ???

MfG Klebwax

lokirobotics
01.05.2011, 19:05
Natürlich ist das Servosignal ein einfaches PWM-Signal.
Ein Servosignal ist eine PWM mit einer Frequenz von 50Hz und einem Tastverhältnis von 5-10%.

Vielleicht guckst du dir das OSI-Modell (http://de.wikipedia.org/wiki/OSI-Modell) nochmal an. Dann wird klar, wo welche Unterschiede liegen.

Das PWM-Signal dient zur Kodierung von Informationen auf einem digitalen Datenkanal. Die Information wird durch die Frequenz und das Puls-Pause Verhältnis dargestellt.
Wie diese Information interpretiert wird, hängt vom verwendeten Protokoll ab.
Im einfachsten Fall wäre das z.B. das Umsetzen des Tastverhältnisses in eine analoge Größe (Drehzahl vom Motor, Helligkeit Glühlampe etc.).
Dann gibt es natürlich noch weitere Protokolle, wie Servo-Summensignal und Servosignal (offensichtlich nicht das Gleiche!) usw.
Das Signal hat also ersteinmal nichts mit der übertragenen Information zu tun. Die Information wird erst durch die richtige Interpretation sichtbar.
Man kann Protokolle auch in Protokolle packen. So gesehen bei den Sonderfunktionen. Hier wird ein Protokoll auf das "Servoprotokoll" draufgesetzt und dadurch weitere Funktionen realisiert.

Fazit: Signal != Protokoll, "Servosignal" == PWM

MfG

freezly
01.05.2011, 19:18
Vielen Dank erst einmal für die Informationen.
Ich habe hier jetzt doch noch Informationen zu dem PWM Ausgang des IOIO gefunden:

The second use of PWM signals is as means to encode information. The device consuming the PWM signal will measure the width of the pulses and will behave differently for different pulse widths. The most notable example is a hobby servo motor (the kind often seen in RC toys). Those servos expect a PWM control signal with a frequency of 100Hz (10ms period). They decode this signal by measuring the pulse width and adjust their rotation angle accordingly. Typically, a 1ms pulse width will take the servo arm to one extreme, a 2ms pulse to the other extreme, a 1.5ms pulse to the center, etc. When controlling servos with the IOIO, it is not a problem to connect the PWM signal directly to the motor control wire - the servo does not draw a lot of current from this wire, unlike a DC motor.
gefunden auf: http://codaset.com/ytai/ioio/wiki/PWM-Output

Also wenn ich eure Ausführungen mit dem Wiki vergleiche, finde ich Gemeinsamkeiten. Aber mich verwirrt immer noch dieses "Servosignal" in euren Ausführungen.

Wil
01.05.2011, 20:00
@freezly
Der Motorcontroller wird mit einem Pulsweiten-modulierten Reckteck-Signal angesteuert: Vss 5V, Widerholfrequenz 50Hz (20ms) Pulsbreite 0,8-2,2ms. Aus=1ms Ein=2ms jeweils 0,2ms für die Trimmung. Daraus generiert der Controller wiederum ein höher frequente PWM-.Motorspannung (je nachdem ca. 2000-3500Hz). Entsprechend der Motordrehzahl wird die Spannung so auf die Anschlüsse aufgeschaltet, dass im so entstehenden Drehfeld der Drehstrommotor mit der beabsichtigten Drehzahl/Leistung/Stromaufnahme arbeitet.
mfg Wil

Klebwax
02.05.2011, 06:09
Fazit: Signal != Protokoll, "Servosignal" == PWM

Na gut, wenn du denn so willst. Das führt zwar immer wieder zu den Fragen wie "Hab mir eine H-Brücke gekauft, geht irgendwie nicht obwohl ich die PWM richtig angeschlossen habe" oder "Mein Motorkontroler funktioniert nicht an meiner Steuerung, PWM ist verbunden".

MfG Klebwax

nanoBean
02.05.2011, 08:01
Ich pack auch nochmal mein Senf dazu ;).
Einen Servo als solchen steuerst du per PWM an. Nun hast du ja nicht einen Servo, sondern ein BL Motor. Wenn ich dich richtig verstehe, willst du mit dem IOIO Board und dem Regler ein Brushless-Regler selbst entwerfen !?!? Oder !?!? Ansonsten guck mal hier:http://www.mikrocontroller.com/de/KopterBL.php

Ich glaube mit dem "Servoprotokoll" könnte PPM gemeint sein. http://www.mftech.de/ppm.htm oder http://www.aerodesign.de/peter/2000/PCM/PCM_PPM.html. Dann hätten wir hier im RN-Wissen auch ein Artikel hierzu: http://www.rn-wissen.de/index.php/RC-Empf%C3%A4nger_auswerten. (http://www.rn-wissen.de/index.php/RC-Empf%C3%A4nger_auswerten)
Das ist aber was ganz anderes als PWM, wobei die Knüppel-Stellung PWM codiert ist, aber bei dem PPM halt noch weitere Informationen hinzu kommen.

TobiKa
02.05.2011, 14:46
Na gut, wenn du denn so willst. Das führt zwar immer wieder zu den Fragen wie "Hab mir eine H-Brücke gekauft, geht irgendwie nicht obwohl ich die PWM richtig angeschlossen habe" oder "Mein Motorkontroler funktioniert nicht an meiner Steuerung, PWM ist verbunden".

Das wiederum ist doch nur ne Frage der Frequenz.

freezly
02.05.2011, 17:40
@Wil: Ja, hört sich irgendwie schon so an, wie das, was das Board raus gibt.
@nanoBean: Mit dem Board will ich simple ausgedrückt die Drehzahl des Brushless Motors regeln. Also muss ich dazwischen einen Brushless Regler schalten. Die Frage ist an der Stelle, ob ich den Brushless Regler direkt mit dem Board ansteuern kann, oder ob da noch was dazwischen muss.

freezly
02.05.2011, 20:52
So, aus dem IOIO Wiki habe ich folgende Infos aus der Programmierung mal rausgezogen:
- Setzten einer Frequenz für einen PWM Ausgang (z.B. 50Hz)
- und dann kann man die Pulslänge (1000-2000 µs) stellen ... 1000µs=1ms=aus, 2000µs=2ms=full Speed

Das hört sich doch nach einem PPM Signal an, oder?
Damit sollte ich doch einen Brushless Regler ansteuern können, oder?

nanoBean
02.05.2011, 21:24
Eigentlich hört sich das nach ganz simplem PWM an. PPM ist das "Signal", wie die Fernbedinung die Signale an den Empfänger sendet und alle Knüppel-Stellungen beinhaltet. Ohne mich da genau auszukennen, suchst du glaube ich ehr sowas:http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=9900. Was mich noch etas wundert: Das IOIO Ding scheint für ein Android Phone zu sein. Willst du in deinem Quadrocopter ein Android Phone einbauen? Oder dann doch ehr den Quadrocopter mit ihnem Iphone steuern?

Sonst guck dir doch noch mal den mikrokopter-link an.

Als Schnittstellen sind möglich:


Asynchrone Serielle Schnittstelle (zum Ansteuern oder Debuggen)
I2C (zur schnellen Sollwertvorgabe)
PPM-Signal (als Standard-Eingang vom Empfänger)

Soetwas in der Art brauchst du. Mit I2C oder der seriellen Schnittstelle kannst du dann deinen Motor steuern.

Klebwax
02.05.2011, 23:00
Das wiederum ist doch nur ne Frage der Frequenz.

Wenn du meinst, daß es nur eine Frage der Frequenz ist, dann wirds wohl auch so sein.

MfG Klebwax

freezly
03.05.2011, 18:26
@nanoBean: Ja, so einen Regler will ich mit dem IOIO ansprechen.


PPM bedeutet doch, dass in einer bestimmten Frequenz ein 1-2ms langer Impuls kommt, oder? Auch wenn es vom Empfänger generiert wird, wäre es doch das, was ich beschrieben habe, oder?

Richard
03.05.2011, 19:19
Leider nicht ganz so. Das Pulsbreiten modulierte Übertragungsprotokol zwischen RC-Empfänger und Servo wird auch gern als "PWM" bezeichnet.

MfG Klebwax


Eigentlich als ppm Puls Pausen Modulation PWM Puls Weiten Modulation das ist nur Theoretisch das gleiche. Klappt aber halt auch, es kommt dabei eher auf die Art der Signal Generierung und dessen gedachte Aufgabe an.

Gruß Richard

PICture
03.05.2011, 19:27
Hallo!

Mir ist bisher kein Protokoll als Signal (Spannung/Strom) in der Elektronik bekannt, bin aber wahrscheinlich nicht mehr auf dem Laufenden. Der Begriff "ppm" kenne ich bisher nur als "parts per milion" bei z.B. Frequenzstabilität von Quarzoszillatoren. ;)

freezly
05.05.2011, 11:10
Noch mal die Frage von mir, weil ich das Gefühl habe, dass die unter gegangen ist in dem Ganzen:
PPM bedeutet doch, dass in einer bestimmten Frequenz ein 1-2ms langer Impuls kommt, oder? Auch wenn es vom Empfänger generiert wird, wäre es doch das, was ich beschrieben habe, oder?

Richard
05.05.2011, 11:51
Noch mal die Frage von mir, weil ich das Gefühl habe, dass die unter gegangen ist in dem Ganzen:
PPM bedeutet doch, dass in einer bestimmten Frequenz ein 1-2ms langer Impuls kommt, oder? Auch wenn es vom Empfänger generiert wird, wäre es doch das, was ich beschrieben habe, oder?

Was ein IOIO ist kann ich nicht sagen, kenne ich nicht. So ein Motortreiber wird aber quasi wie ein Servo betrieben
und sollte dann auich wie z.B. im Bascom Beispiel angesteuert werden können.



Config Servos = 1 , Servo1 = Portb.0 , Reload = 10

Config Portb = Output


Enable Interrupts


Servo(1) = 10 '10 times 10 = 100 uS on

Do
Loop

Dim I As Byte
Do
For I = 0 To 100
Servo(1) = I
Waitms 1000
Next

For I = 100 To 0 Step -1
' Servo(1) = I
Waitms 1000
Next
Loop
End


Gruß Richard

freezly
05.05.2011, 13:07
Tut mir leid, deinen Code kann ich jetzt nicht deuten. Wie sieht das Signal zum Treiber aus, was du da generierst?

Richard
05.05.2011, 13:24
Tut mir leid, deinen Code kann ich jetzt nicht deuten. Wie sieht das Signal zum Treiber aus, was du da generierst?

Na wie halt ein Servo Signal aussieht. :-) Das ist ein original Bascom (AVR Basic) Servo code und wie das bei Hochsprachen so ist, was da im Hintergrund abläuft ?????? Dazu müsste man den Original ASM Code zerflücken. :-( Aber ein servo kann man damit gut steuern (getestet). Das Programm initialisiert den Sevo Mode, den Ausgangs Pin und die Reload Zeit (hier 10 ms (normal währen 20 ms). Dann wird der IRQ für diese Routine frei gegeben.

In der LOOP fährt das Servo dann endlos hin und her....

Gruß Richard

freezly
06.05.2011, 21:10
@Richard: naja, dann hilft mir deine Antwort wenig :( Obwohl ich dich schon so einschätze, dass du dich auskennst :)

freezly
06.05.2011, 21:18
@all: danke noch mal für eure Mühe, ich finde es toll neu in ein Forum zu kommen und ziemlich viel Unterstützung zu erhalten

Nun will ich meine letzte Frage noch mal umformulieren: Aus dem Wiki zum IOIO habe rauslesen können, dass ich in einer bestimmten Frequenz ein xxxxµs langen Impuls liefern kann. Kann ich damit einen Brushless Regler damit ansteuern und die Drehzahl regeln (1000µs-2000µs Impuls)?