Harry-R / Looping-Louie-Project

MIT License
0 stars 1 forks source link

Direkte Motorsteuerung mit FET statt Modellbau-RC-Regler #2

Open rleh opened 10 years ago

rleh commented 10 years ago

Anstatt das Servosignal auszugeben, soll (evtl. zusätzlich) direkt ein PWM-Signal zur Motorregelung mittels eines simplen FET oder Bipolar-Transistors ausgegeben werden.

Turakar commented 10 years ago

Wenn ich das richtig sehe, ist das Signal an sich sogar das selbe, egal ob ESC oder FET oä. Der ESC "zählt" ja die Zeit die das Signal oben ist, egal ob das jetzt mit 15kHz oder nur 1kHz oä ist.

Turakar commented 10 years ago

Und ist das nicht ein Feature-Request?

rleh commented 10 years ago

ad 1: Ja, an sich ist das Signal ähnlich, bloß ist der Duty cycle halt prinzipiell zwischen 0..100%. Beim Servosignal beträgt der Duty cycle ja nur 10..20% und 15% Duty cycle ist Neutralstellung bei einer RC-Fernbedienung wg. möglichem Rückwärtsgang. Und die Frequenz ist üblicherweise höher damit der Motor kein hörbares Pfeifen o.ä. erzeugen könnte.

ad 2: Eigentlich schon ... wo kann man das machen?

Turakar commented 10 years ago

1: dann wäre ne #define-switch sinnvoll 2: geht über nen Tag, ist aber leider hier nicht eingerichtet :(

rleh commented 10 years ago

1: Da sich der Arduino eh langweilt, kann er auch direkt beides (an unterschiedlichen Pins) ausgeben, aber ein #define-switch wäre natürlcih elegant :)

2: ok, dann hab ich immerhin nix übersehen ;)

ScotteC commented 10 years ago

EIne Ansteuerung direkt über einen Transistor ist soweit ich weiß von Anfang an ein Ziel gewesen. Jedoch haben Leistungs-FETs die unliebsame Eigenschaft für präzise Schaltvorgänge bei den angestrebten Frequenzen eine doch nicht unbedeutende Energie zu benötigen, sprich Strom. Dies kann am einfachsten durch Verwendung eines MOSFET-Treibers realisiert werden. Und wenn wir schon über zusätzliche Beschaltung sprechen, dann ist der Schritt zu einer Vollbrücke nur noch ganz klein. Damit gibts dann eine präzise, schnelle Ansteuerung, Vor- und Rückwärts und sogar eine sinnvolle Energierückgewinnung.

rleh commented 10 years ago

Eine komplette H-Bridge ist halt entweder aufwendig (diskret) oder teuer (als IC) und auf jeden Fall mehr Aufwand als ein einfacher FET. Klar ist die Ansteuerung mit einem Lineartransistor nicht besonders effizient, aber soweit mir bekannt geht es bei dem Motor um Ströme im 2- bis kleinen 3-stelligen Bereich. Ich würde einen normalen Logic-Level-MOSFET nehmen, z.b. IRL3808 (den habe ich gerade da). Der schaltet ab 1,0V (Gate-Source) durch und kann bei 5V schon fast 100A schalten, natürlich mit Kühlung. (Quelle: http://fenykapu.free-energy.hu/pajert59/irl3803.pdf, "Electrical Characteristics" und Fig. 3) Da braucht man dann bei den paar mA weder einen Treiber noch Kühlung. Kostet auch nicht so viel, zwischen 0,5€ und 2€.

Ein möglicher Rückwärtsgang ist damit natürlcih nicht möglich ... ist die Frage wie viel Sinn das macht. Bei LendoRs weitgehend unmodifizierten Spiels konnte der Motor sich nur vorwärts drehen.

Gibt es wirklich einfache Vollbrücken Schaltungen mit Energierückgewinnung? Ich kenne das nur mit Bremsfunktion für den Motor durch kurzschließen...

ScotteC commented 10 years ago

Natürlich ist der Aufwand größer, keine Frage. Doch immerhin reden wir über ein JuFo-Projekt, da dachte ich mir, ein bissl was neues könnte man schon mal einbauen :) Wenn kein Rückwärtsgang gewünscht ist, tut es auch eine Halbbrücke. Der Bauteilaufwand liegt bei einer Bootstrap-Schaltung für den High-FET bei 5 Bauteilen... Natürlich kann ein einfacher FET schon sehr hohe Ströme liefern. Wir sprechen jedoch davon einen FET mit 6-8 kHz zu schalten. Der Umladevorgang benötigt Energie am Gate, welche ich gerne vom Arduino fernhalten würde. Das schützt das Board und ist auch bezüglich EMV-Gedanken stets einer direkten Ansteuerung vorzuziehen, gerade wenn Motoren getrieben werden sollen.

rleh commented 10 years ago

Das ist natürlcih wahr, aber auch JuFo-Projekte kann man nach dem KISS-Prinzip bauen ;) Wenn die Arduino Funktion analogWrite() genutzt wird, beträgt die Schaltfrequenz nur knapp 500Hz oder knapp 1000Hz... ist eigentlich nicht optimal, hatte ich ja oben geschrieben.

Die Kapazität des Gates gegen Source beim IRL3803 beträgt 41nC, der Arduino verkraftet ca. 20mA pro Pin, an den anderen Pins ist auch nichts weiteres angschlossen. 41nC/2µs. 41nC/20mA = 2µs brauch das Gate zu umladen (wenn man nur die Gate-Kapazität der FET berücksichtigt) Die Periodendauer bei 1kHz (500Hz) beträgt 1ms (2ms), in der Zeit muss das Gate 2 mal umgeladen werden. Die Zeiten liegen um Faktor 500..1000 auseinander, ich denke daher nicht, dass es ein Problem geben könnte. Man könnte auch den Arduino durch einen Bipolar-Transistor das Gate schalten lassen, am besten auch zur Versorgungsspannung ... Aus EMV-Gründen befindet sich vermutlich eine Rücklaufdiode (anti)parallel zum Motor direkt am diesem ... die verhindert auch das Rückwärtsdrehen. Und kurze Leitungen schaden nie ;)

ScotteC commented 10 years ago

500-1000Hz ist sogar die suboptimalste Frequenz, die man einem Motor verpassen kann :D Anstatt mit analogWrite zu arbeiten würde sich hier eine Timerbasierte ansteuerung anbieten. Schau mal in meinen Fork von dem Projekt, da habe ich das für ein Servo bereits realisiert. Die Frequenz lässt sich dann recht beliebig wählen, 6-8kHz ist eigentlich ein ganz guter Wert.

Turakar commented 10 years ago

Der Vorteil an 20kHz (wenn man das hinkriegt), liegt darin, dass evtl. Pfeifen der Motoren unterdrückt wird (wegen Ultraschall). Ich weiß jetzt nicht ob das ein nennenswertes Problem ist und ob es überhaupt auftaucht, nur ist das wohl im Modellflug (mit entsprechend größeren Motoren) schon eher nervig.

ScotteC commented 10 years ago

Die PWM mit 20kHz laufen zu lassen ist gar kein Problem. Wenn jedoch nur ein Pfeifen unterdrückt werden soll ist eine solch hohe Frequenz nicht notwendig. Pfeifen tritt nur in ungünstigen Gesamtkonzepten überhaupt störend auf. Je höher die Frequenz, desto höher werden auch die Schaltverluste in den FETs, da diese schneller und öfter schalten müssen. Es gilt hier einen Kompromiss zu finden.

Turakar commented 10 years ago

Minimum ist 20kHz, sonst ist es hörbar.

MfG Turakar

Am 20.06.2014 um 18:36 schrieb Fabian Schöttler notifications@github.com:

Die PWM mit 20kHz laufen zu lassen ist gar kein Problem. Wenn jedoch nur ein Pfeifen unterdrückt werden soll ist eine solch hohe Frequenz nicht notwendig. Pfeifen tritt nur in ungünstigen Gesamtkonzepten überhaupt störend auf. Je höher die Frequenz, desto höher werden auch die Schaltverluste in den FETs, da diese schneller und öfter schalten müssen. Es gilt hier einen Kompromiss zu finden.

— Reply to this email directly or view it on GitHub.