PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motoransteuerung mittels PWM



Katja
11.04.2006, 16:59
hallo Community,

habe ein Problem mit meinen (Faulhaber-) Motoren im Asuro. Mir ist aufgefallen, daß bei halb so großer Motorspeed-Einstellung (also 127 statt 255) trotzdem noch über 5V am Motor anliegen. Dachte die Spannung sollte dann nur noch die Hälfte der VCC betragen (???). Jetzt hab ich mir mal das PWM-Signal angeschaut und festgestellt, daß das ja gar keine schöne Rechteckspannung ist, sondern das die steigenden Flanken zwar schön grade nach oben ansteigen - aber das die fallenden Flanken nur sehr langsam im Bogen abfallen (könnte ne e-Funktion sein). Jetzt ist meine Frage: Ist das normal? Und ist es irgendwie möglich doch eine schöne rechteckspannung zu bekommen? Ich will nämlich das die Spannung proportional zum PWM-Wert ist. Oder muß ich eine Funktion schreiben die MotorSpeed und Ausgangsspannung so anpaßt daß ich eine Proportionalität erhalte???

LG Katja

Manf
11.04.2006, 17:15
Haben die Motoren vielleicht große Entstörkondensatoren?
Wie lange dauert denn das Umschalten? Verlustarm wäre ein recht schnelles schalten.
Manfred

Katja
11.04.2006, 17:30
Was meinst du mit "Wie lange" ? Ich benutze die ganz normale vorgefertigte Funktion MotorSpeed(left_speed, right_speed) und habe das Problem über den gesamten Bereich von 0 bis 255. Den Motor, den ich ansteuer, habe ich vor der Messung abgeklemmt, so daß von der Seite eigentlich keine Beeinflussung kommen sollte...

Manf
11.04.2006, 18:25
aber das die fallenden Flanken nur sehr langsam im Bogen abfallen (könnte ne e-Funktion sein).
Die Zeit hast Du ja gemessen wenn ich es richtig verstanden habe, wie lange dauert denn der Bogen?
Es ist eigentlich nicht vorgesehen, dass es länger als eine oder wenige Mikrosekunden dauert.
Ist es auf beiden Seiten gleich?
Manfred

Katja
12.04.2006, 12:16
Der Abfallende Bogen geht bis zur nächsten steigenden Flanke. Habe jetzt herausgefunden, daß der Motor scheinbar zu wenig Leistung zieht. Wenn ich anstatt des Motors einen 1000-Ohm-Widerstand anklemme, habe ich eine vorbildliche Rechteckspannung. Annährend rechteckig ist sie auch, wenn ich den Motor richtig gut belaste. Lasse ich den Motor allerdings unbelastet laufen, wars das. Ich hab dann auch mit jedem PWM-Bitwert annährend die gleiche Drehzahl - nur das Moment sinkt halt ab...
Eine Propotionalität zwischen PWM-Bitwert und Motorspannung oder Drehzahl kann man so jedenfalls vergessen... :-s

EDIT:
Möglicherweise liegt das Problem darin, daß sich speziell mein Motor nicht mit der H-Brücke versteht. Der Motor ist ein Scheibenläufer. Habe mal 2 konventionelle DC-Motoren angeklemmt und mit denen keinerlei Probleme gehabt. D.h. ich habe bei denen immer ein schönes Rechtecksignal an den Klemmen messen können. Im Attachement ist das Datenblatt des Motors. Habe die Ausführung für 6V

sigo
14.04.2006, 00:48
Hallo Katja,

wie macht die Endstufe die PWM?
Wenn die PWM 0 ist, werden dann alle Transistoren stromlos geschaltet oder wird "gechoppert", also wird die Spannung kurzgeschlossen.
Das könnte deine Kurven erklären.
Im einen Fall wäre es ein 1-Quadrantenbetrieb (wenn man nur 1 Drehrichtung betrachtet), d.h. die Spannung wird ein- oder ausgeschaltet. Wenn der Motor speist (leerläuft) dreht er im Leerlauf..

Im anderen Fall würden die Mosfets bei PWM 0 den Motor kurzschließen und so also abbremsen. Die Drehzahl und Spannung müsste sich so immer auf die PWM-Rate einstellen. (2-Quadrantenbetrieb).

Das kann mit der hervorragenden Qualität der Motoren zusammenhängen. (bei anderen Motoren bewirkt der miese Wirkungsgrad und die Reibung ja ein abbremsen..

Gruß Sigo

Manf
14.04.2006, 07:55
Die Endstufe ist die des ASURO ist hier links im Bild zu sehen, es ist eine vollständige H-Brücke.

Der Motor hat einen Widerstand von 8,2 Ohm und eine Induktivität von 0,465mH. Die elektrische Zeitkonstante des Motors ist damit L/R = 57µs. (Die Zeitkonstante in der Schaltung wird durch den Innenwiderstand der H-Brücke eher etwas geringer.)

Die PWM Frequenz sollte so hoch sein, dass die Induktivität (mit ihrer Zeitkonstante in der Schaltung) den Strom mittelt. Das könnte für die Grundeinstellung der PWM Frequenz des ASURO mit 57µs etwas knapp werden.


https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=656

waste
14.04.2006, 13:48
wie macht die Endstufe die PWM?
In der OFF-Phase der PWM sind die Transistoren hochohmig, d.h. der Motor läuft in der Phase leer, wird also nicht gebremst. Dadurch kann sich bei zu geringer Induktivität oder zu geringer PWM-Frequenz und geringer Last zu einem lückenden Strom kommen. Damit wirkt die PWM nicht mehr so wie es eigentlich sein sollte.

@Katja
Wie Manfred schon schrieb, ist die Induktivität des Faulhaber Motors sehr viel kleiner als der des original Asuro Motors (etwa Faktor 10). Der Strom wird mit der Asuroansteuerung vermutlich lückend sein und damit nicht mehr proportional zum PWM-Wert.
Mögliche Abhilfen:
1. PWM-Frequenz erhöhen
Wenn ich mich recht entsinne, kann man die PWM-Frequenz beim Asuro noch um den Faktor 8 erhöhen. Ich bin mir allerdings nicht sicher ob das ausreichen wird.
2. Motortreiber auf 2-Quadrantenbetrieb umbauen
Wie bereits sigo schon andeutete, die Ansteuerung so umbauen, dass der Motor während der OFF-Phase der PWM kurzgeschlossen wird. Das sollte auf jeden Fall die Proportionalität verbessern. Allerdings bedeutet das einen Eingriff in die Hardware des Asuro. Ich weiß nicht, wie umfangreich das sein wird.

Zum Schluss noch eine Frage: Für was brauchst du eine Proportionalität zw. PWM und Drehzahl?
Eine exakte Proportionalität wird es nämlich nie geben, da immer irgend eine Reibung vorhanden sein wird und die Proportionalität zunichte macht.

Waste

sigo
14.04.2006, 16:09
Bei der sehr geringen Induktivität würde ich eher die PWM-Frequenz erhöhen, als den Chopper-Betrieb wählen. Dieser würde zu große Verlust erzeugen, da praktisch die ganze Energie aus dem Motor gezogen werden kann. weil die Zeitkonstante so klein ist.

Also erstmal die PWM-Frequenz erhöhen, und dann ggf. zusätzlich den Chopperbetrieb wählen. Ich hatte bei Servomotoren mit einer PWM-Frequenz von 16kHz, mit dem Chopperbetrieb klar die besseren dynamischen Eigenschaften. Aber die Motoren waren auch größer (250W) und somit träger.

Sigo

Manf
14.04.2006, 17:34
Zur Ansteuerung des Motors in der H-Brücke mit PWM ganz allgemein:
Oben im Schaltbild der Brücke, beispielsweise für den linken Motor erfolgt die Richtungsansteuerung des Motors über die Signale a und b.

Das Signal das auf 0 ist steuert den oberen Brückentransistor an, b=0 für T1 und a=0 für T3 und sperrt über das und Gatter auch gleich den unteren Transistor damit die Spannungsquelle nicht kurzgeschlossen wird.

Wenn dann eine PWM Ansteuerung über c dazukommt dann wird eine Spannung an den Motor gelegt. Für b = 0 (und a= 1) wird der Transistor T4 über c mit PWM angesteuert und der Strom fließt von d nach e durch den Motor.

Solange der Transistor T4 angesteuert ist fließt der Strom
von Vcc über T1 Motor d-e und T4 nach GND.
Ist der Transistor T4 gesperrt dann fließt der Strom
von Vcc über T1 Motor d-e und die Freilaufdiode D3 nach Vcc zurück.

Die Ansteuerung erfolgt also im Chopper-Betrieb mit slow decay. Siehe auch: https://www.roboternetz.de/wissen/index.php/Chopper_Betrieb
Dort ist es der Wechsel zwischen dem roten Strompfad in der On Phase des PWM und dem grünen Strompfad in der Off Phase des PWM. Es ist in der Darstellung auch gezeigt, dass es eine Alternative fast decay gibt.

Für Motoren mit kleinen Induktivitäten wie hier beim ASURO ist der slow decay mode der geeignete. (Um das Abklingen des Motorstroms weiter zu verzögern könnte man allenfalls noch die jeweilige Freilaufdiode in der Abschaltphase des PWM kurzschließen. )

Es sollte bei einer kleinen Induktivität, die zu Stromlücken führt, die PWM Frequenz erhöht werden.
Manfred

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=751.gif

Katja
19.04.2006, 20:00
tausend Dank für die Antworten!

hab jetzt mal die PWM-Frequenz so hoch gedreht wie's nur geht (16kHz) und der Motor ist jetzt viel besser einstellbar und das Rechtecksignal wird auch langsam sichtbar. Das einzige was vermutlich noch sein muß, is das beide oberen Transistoren der H-Brücke in der Low-Phase offen sind. Würd dafür nochmal zu dem geschlossenen Transistor einen weiteren parallel schalten und den negiert mit dem PWM ansteuern. Gibts dafür vielleicht ein IC zum invertieren? Un ich hätt auch noch ne Frage zu den Transistoren. Hab leider noch nicht wirklich den Unterschied zwischen NPN und PNP begriffen (trotz einiger Lektüre). Ist es so das die beiden oberen Transistoren stromlos offen sind??? Und halt mit Strom zumachen? Weil dann könnt ich ja einfach noch so'nen PNP parallelschalten und den ohne voherige Invertierung mit dem PWM ansteuern, oder?

Manf
19.04.2006, 23:21
Anstelle von recht vielen pnp oder npn Transistoren wird man besser Fets einsetzen, die den Strom in beiden Richtungen durchschalten. Man kann dann zwei Fet Treiber einsetzten die die beiden Pole des Motors ansteuern.

Der TC4469 ist grundsätzlich so ein Baustein, er ist allerdings im Betrieb mit 5V nicht sehr niedrohmig ( ca. 20 Ohm pro Ausgang). Der ICL 7667 müßte ein bisschen besser sein. Seine Daten bei 5V kenne ich allerdings nicht. Andererseits benötigt der Motor wohl auch nur einen Strom von ca. 30mA.

Vielleicht kennt jemand noch einen beseren FET-Treiber.
Manfred

sigo
20.04.2006, 01:55
Wie wärs mit einem 1k Widerstand vom Und-Gatter zur Basis des oberen Transistors - in Manfs Schaltung wäre das Pin 11 zu T1 und Pin 3 zu T3, entsprechendes für die andere Endstufe.

Wenn PWM 0 ist, werden so beide oberen Transistoren durchgesteuert.
Einer voll, der andere etwas schwächer (2,5V über 1k), sollte aber stark genug sein, sonst muss man evtl. mit den Widerstandswerte variieren.

Wenn PWM 1 ist, passiert nix, da der obere Transitor noch "auser" gemacht wird, sofern der Ausgang nah genug an Vcc rankommt (<<0,5V)
Da die PWM der gegenüberliegenden Brücke sowieso dann "0" ist, wird der aktive High-Side-Transistor noch besser durchgeschaltet..

Dies soll erstmal nur ein Diskussionsvorschlag sein.
Keine Garantie, dass es klappt.
Wäre aber einfach und müsste eigentlich gehn, wenns denn vom Timing her klappt. Was meint ihr?

sigo

Manf
20.04.2006, 07:49
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=751.gif
Wenn man die Diode D3 für den Stromfluss in grün mit dem pnp Transistor T3 kurzschließen wollte, dann müßte man ihn invers betreiben.

Der Basisstrom fließt dann vom Kollektor zur Basis. Der Kollektor läge dabei auf Ub und die Basis auf Ub +0,7V. Die Ansteuerung ist etwas schwierig.

Mit einem FET der seinen Kanal in beiden Richtungen durchschaltet wird es einfacher gehen.
Manfred

waste
20.04.2006, 11:58
Wie wärs mit einem 1k Widerstand vom Und-Gatter zur Basis des oberen Transistors - in Manfs Schaltung wäre das Pin 11 zu T1 und Pin 3 zu T3, entsprechendes für die andere Endstufe.

Wenn PWM 0 ist, werden so beide oberen Transistoren durchgesteuert.
Einer voll, der andere etwas schwächer (2,5V über 1k), sollte aber stark genug sein, sonst muss man evtl. mit den Widerstandswerte variieren.

Wenn PWM 1 ist, passiert nix, da der obere Transitor noch "auser" gemacht wird, sofern der Ausgang nah genug an Vcc rankommt (<<0,5V)
Da die PWM der gegenüberliegenden Brücke sowieso dann "0" ist, wird der aktive High-Side-Transistor noch besser durchgeschaltet..

Dies soll erstmal nur ein Diskussionsvorschlag sein.
Keine Garantie, dass es klappt.
Wäre aber einfach und müsste eigentlich gehn, wenns denn vom Timing her klappt. Was meint ihr?

sigo
Das klappt nicht mit dem original verwendeten UND-Gatter CD4081. Der Ausgang des CD4081 ist zu hochohmig um die Last (1kOhm) nah genug an die Versorgungsspannung und GND zu treiben (<0.5V). Ich schätze mal, da wird eine Spannung von ca. 1.5V übrigbleiben. Damit sind dann beide Transistoren (z.B. T1 und T2) leitend und es fließt ein großer Querstrom. Abhilfe wäre ein UND-Gatter in HC- oder AC-Technologie, die sind niederohmiger. Ich habe aber leider auf die Schnelle keinen HC- oder AC-Baustein gefunden der pinkompatibel zum CD4081 ist. Nur den 74HC08, der hat aber bei 2 Gattern eine andere Pinbelegung, da müsste man umverdrahten.
Zudem würde ich anstatt eines zusätzlichen Basiswiderstands für die oberen Transistoren gleich den jetzigen Widerstand R1 bzw. R3 umverdrahten und auf den Ausgang des UND-Gatters legen, das sollte auch funktionieren.

Eine andere Möglichkeit wäre, wenn man keine HC/AC-Bausteine auftreiben kann, einen zweiten CD4081 für die oberen Transistoren verwenden. Den zweiten CD4081 einfach auf den ersten huckepack löten, aber nur bei den Eingängen und der Versorgung. Die Ausgänge nach aussen biegen und an die Basiswiderstände R1, R3, R5, R7 anschließen. Damit ist der zweite CD4081 an den Eingängen parallel geschaltet und die Ausgänge treiben nur jeweils den oberen Transistor.

Gebe auch keine Garantie, dass es funktioniert. War nur eine schnelle Überlegung zur Diskussion. Was meint Ihr?

Waste

Manf
20.04.2006, 13:25
Noch einmal zur Ansteuerung von T3:

In der Sperrphase des PWM Taktes fließt der Strom vom Motor aus über D3 zur Versorgungsspannung (Diodenpfeilrichtung). Soll das Schaltverhalten verbessert werden und die Diode D3 durch den Transistor T3 kurzgeschlossen werden, dann benötigt er für den inversen Betrieb an seiner Basis eine Spannung die um eine Diodenschwellspannung oberhalb der Versorgungsspannung der Brücke liegt.

Wenn diese Spannung (oberhalb Ub) für den pnp Transitor nicht erzeugt wird, dann muss es die Diode D3 alleine schaffen. Dabei fällt an ihr eben die Schwellspannung ab.

Möglich wäre die Funktion mit einem FET anstelle des pnp Transistors der dafür keine Hilfsspannung benötigt.
Manfred

waste
20.04.2006, 18:06
Manfred, das sollte auch so mit den Transistoren gehen. Solange ein Basisstrom fließt, leitet der Transistor, auch wenn er eine inverse Kollektorspannung hat. Zwar ist die Stromverstärkung nicht mehr berauschend, aber er leitet.

Soll das Schaltverhalten verbessert werden und die Diode D3 durch den Transistor T3 kurzgeschlossen werden, dann benötigt er für den inversen Betrieb an seiner Basis eine Spannung die um eine Diodenschwellspannung oberhalb der Versorgungsspannung der Brücke liegt.
Wenn diese Spannung (oberhalb Ub) für den pnp Transitor nicht erzeugt wird, dann muss es die Diode D3 alleine schaffen. Dabei fällt an ihr eben die Schwellspannung ab.
Das geht nicht Manfred. Beim PNP-Transistor fließt kein Basistrom, wenn man die Basis positiv vorspannt. Da ist der Basis-Emitter-Übergang in Sperrrichtung. Erst bei der Durchbruchspannung fließt dann ein Strom, aber das wäre nicht Sinn der Sache. Die Basis muss also negativ vorgespannt sein, damit ein Basisstrom fließt.

Aber du hast schon recht, eine FET-Brücke wäre für den Zweck besser. Allerdings reicht hier der TC4469 bzw. TC4468 mit seinen 20 Ohm Innenwiderstand nicht aus. Bei 50 bis 100mA fallen da schon 1 bis 2V ab und das mal 2 ergibt dann schon 2 bis 4 Volt, das ist zu viel.

Waste

Manf
20.04.2006, 20:17
das sollte auch so mit den Transistoren gehen. Solange ein Basisstrom fließt, leitet der Transistor, auch wenn er eine inverse Kollektorspannung hat. ...
Das kommt schon auf die Stromrichtung an.

Das geht nicht Manfred. Beim PNP-Transistor fließt kein Basistrom, wenn man die Basis positiv vorspannt. Da ist der Basis-Emitter-Übergang in Sperrrichtung.
Für eine Betrachtung des Stromflusses durch den pnp Tranistor T3 in Richtung vom Motor zur Versorgungsspannung, also entgegen der Pfeilrichtung, sollte man den Transistor zum inversen Transistor, also mit vertauschten Anschlüssen für Kollektor und Emitter umzeichnen.

Ich hoffe es wird dann klarer.
Manfred

waste
20.04.2006, 22:02
Manfred, ich habe es jetzt extra nochmal ausprobiert, es ist so wie ich geschrieben habe. Wenn Manfred widerspricht, dann wird man ja wirklich unsicher. :)
Also ein PNP-Transistor braucht einen negativen Basisstrom, wie im Normalbetrieb, damit er auch mit inverser Kollektorspannung (also positiver) leitend wird.

Probier es aus Manfred, es stimmt!

Gruß Waste

Manf
20.04.2006, 22:31
Wenn Du es schon gemessen hast, dann gib doch einfach die Daten an: Welchen Basistrom benötigt man, damit der Motorstrom von beispeilsweise 50mA über T3 nach Ub weiterfließen kann und mit welcher Sättigungsspannung (<0,1V?) ist zu rechnen?
Manfred

waste
20.04.2006, 23:48
Ich habe keinen BC327 zur Hand.
Aber ein BC338 bringt im Inversbetrieb bei 4mA Basisstrom einen Kollektorstrom von 90mA. Bei Strombegrenzung auf 50mA hat der Transistor im Inversbetrieb eine Sättigungsspannung von 40mV.

Waste

Manf
21.04.2006, 13:48
Dann nehmen wir die Daten mal an.
Der Motor hat eine Induktivität von 0,465mH und 8,2 Ohm.
Die 0,6V der Diode entsprechen bei 50mA und 0,6V einem Widerstand von 12Ohm.

Bei einer halben Periodendauer der PWM (bei 16kHz) von 30µs hat man etwa eine Zeitkonstante von L / 8Ohm = 57µs bei kurzgeschlossener Diode und mindestens L / 20Ohm = 23µs mit Diode.
Es könnte sich also lohnen, die Diode mit dem PWM Signal kurzzuschließen.
Manfred

Katja
25.04.2006, 21:04
ich habs jetzt mal so probiert und die oberen PNP-Transistoren mit weiteren PNPs parallelgeschaltet. Die neuen PNP-Transistoren steuer ich direkt mit dem PWM-Signal an. Das funktioniert wirklich super!!! In der Low-Phase werden die Motoren jetzt schön kurzgeschlossen und ich bekomm ein sauberes Rechtecksignal. Auch die Drehzahl läßt sich so perfekt regeln! Also nochmal vielen Dank für eure Hilfe!

lg Katja

Manf
25.04.2006, 21:17
Es freut mich sehr dass es funktioniert. Eine gewisse Verbesserung (eine Halbierung der Diodenspannung) wäre auch mit Schottkydioden zu machen gewesen.

Dass die Zusatztransistoren es gerade gut schaffen ohne zuviel Strom kurzzuschließen ist sicher günstig. Eine funktionierende Lösung sollte man natürlich beibehalten.

Für grundsätzliche Lösungen sollte man auch die Ansteuerung der Transistorbrücken mit entsprechenden Signalen im Auge behalten.
Manfred