Forum: Mikrocontroller und Digitale Elektronik Warum mit PWM verliert der Motor seine Stärke?


von Luca B. (lucabert)


Angehängte Dateien:

Lesenswert?

Hallo, Leute!

Folgendes Problem: wenn ich den Motor direkt an der Batterie verbinde, 
werde ich einfach nicht schaffen mit zwei Hände ihn zu halten.
Wenn ich den Motor an die Schaltung (siehe Anhang) verbinde und auch nur 
Strom gebe, genau das gleiche.

Nutze ich PWM, um die Geschwindigkeit des Motors zu steuern, reicht ein 
Finger um den Motor abzubremsen. Und ist auch keine schwere Sache ihn 
einfach zu halten.

Was mache ich denn falsch?

Danke für eure Empfehlungen
Luca Bertoncello

von g457 (Gast)


Lesenswert?

Vielleicht eine dämliche Frage, aber wo genau nimmst Du in dem 
Schaltplan denn ne PWM bei der Ansteuerung? ENABLE_*? INPUT_*?

von Luca B. (lucabert)


Lesenswert?

g457 schrieb:
> Vielleicht eine dämliche Frage, aber wo genau nimmst Du in dem
> Schaltplan denn ne PWM bei der Ansteuerung? ENABLE_*? INPUT_*?

Ich denke, ich habe doch das Problem gefunden (dank einem Tipp eines 
Freundes), und zwar, ich nutze eine zu hohe Frequenz für den PWM.

Ich hatte es so eingerichtet:
1
   TCCR1B = _BV(WGM12) | _BV(WGM13) | _BV(CS10);

Nun habe ich so geschrieben:
1
   TCCR1B = _BV(WGM12) | _BV(WGM13) | _BV(CS10) | _BV(CS12);

Und der Motor ist nicht zu halten. Gut so!

Nun kriege ich aber ein anderes Problem, und zwar: der Motor bewegt sich 
ein Stück, dann hält, dann wieder ein paar Sekunden bewegen, dann ein 
paar Sekunden Pause, usw.

Was ist dann das Problem?

Mit folgendem Code steuern ich den Motor:
1
  TCCR1B = _BV(WGM12) | _BV(WGM13) | _BV(CS10) | _BV(CS12);
2
  TCCR1A |= _BV(COM1A1) | _BV(COM1B1) | _BV(WGM11);
3
  ICR1 = 0xFFFF;
4
  OCR1A = OCR1B = (pwmL<<8) | 0xFF;

pwmL ist die Geschwindigkeit.

Danke für eurer Tipps!

Grüße
Luca Bertoncello

von fz (Gast)


Lesenswert?

Hallo,

sieh dir das mal an http://de.wikipedia.org/wiki/Pulsweitenmodulation 
dann solltest du deine Fragen selber beantworten können

fz

von Philipp B. (philipp_burch)


Lesenswert?

Hi,

überleg dir mal, was du mit deiner PWM eigentlich machst: Du reduzierst 
die Leistung des Motors. Logischerweise wird so auch das maximale 
Drehmoment verringert. Wenn du die Drehzahl konstant halten willst, 
musst du selbige messen und das PWM-Signal entsprechend nachregeln.
Deine Codeänderung führt die ganze Drehzahlsteuerung ad absurdum, weil 
du die Frequenz damit dermassen niedrig wählst, dass dein Motor einige 
Sekunden auf voller Leistung läuft und anschliessend einige Sekunden 
abgeschaltet wird. Ist zwar auch noch PWM, aber höchstens für eine 
Heizung brauchbar.

Was du vielleicht noch probieren könntest, wäre, ENABLE dauerhaft 
eingeschaltet zu lassen und dein PWM-Signal stattdessen als 
Richtungsinformation an die INPUT-Anschlüsse zu legen. Bei 50% duty 
würde der Motor dann stehen, darunter dreht er in eine Richtung und 
darüber in die andere. So kannst du auch bei stehendem Motor ein 
Haltemoment erzeugen, ziehst aber natürlich auch dauerhaft Strom. Bei 
Akkubetrieb kann das problematisch werden.

Gruss,
Philipp

von Luca B. (lucabert)


Lesenswert?

fz schrieb:

> sieh dir das mal an http://de.wikipedia.org/wiki/Pulsweitenmodulation
> dann solltest du deine Fragen selber beantworten können

Also, ich habe den Artikel gelesen, und auch 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#PWM_.28Pulsweitenmodulation.29 
bin aber immer noch nicht sicher, was das Problem sein kann...

Meinst du, ich gebe einfach eine niedrige Frequenz (das muß aber sein, 
ansonten verlieren die Motoren so viel Kraft, daß ich jetzt echt 
bewzeifel, daß sie dann später den Roboter bewegen können), und ein zu 
hohe Zähler?

Ich bin für jeden Tipp dankbar!

Grüße
Luca Bertoncello

von Peter D. (peda)


Lesenswert?

Bei hoher PWM-Frequenz integriert der Motor, d.h. die Leistung reduziert 
sich und damit das Drehmoment.

Bei kleiner Frequenz macht der Motor kurze Sprünge, dafür aber mit 
voller Leistung. Dieser Stotterbetrieb wird daher gerne im Modellbau 
verwendet.
Der Trick dabei ist, die Frequenz so zu wählen, daß das Ruckeln gerade 
noch nicht zu sehen ist, aber die Leistung noch voll da.


Peter

von Luca B. (lucabert)


Lesenswert?

Peter Dannegger schrieb:
> Bei hoher PWM-Frequenz integriert der Motor, d.h. die Leistung reduziert
> sich und damit das Drehmoment.
>
> Bei kleiner Frequenz macht der Motor kurze Sprünge, dafür aber mit
> voller Leistung. Dieser Stotterbetrieb wird daher gerne im Modellbau
> verwendet.
> Der Trick dabei ist, die Frequenz so zu wählen, daß das Ruckeln gerade
> noch nicht zu sehen ist, aber die Leistung noch voll da.

Hast du ein Tipp, wie ich es rechnen kann?

Danke
Luca Bertoncello

von nefuas (Gast)


Lesenswert?

PWM erlaubt constant torq.
Du arbeitest sicher open loop
Schliesse mal ein loop....dann haelst dt auch bei geringer Drehzahl den 
Motor nicht mehr.

von Luca B. (lucabert)


Lesenswert?

nefuas schrieb:
> PWM erlaubt constant torq.

Was ist torq?

> Du arbeitest sicher open loop
> Schliesse mal ein loop....dann haelst dt auch bei geringer Drehzahl den
> Motor nicht mehr.


Was meinst du mit "open loop"? Wenn es ist, was ich denke, dann ist es 
NICHT so.
Ich habe für jeden Motor einen optischen Encoder, so daß ich ganz genau 
die richtige aktuelle Geschwindigkeit des Motors kriegen kann, und 
entsprechend korrigieren.

Jedenfalls, ich denke, ich habe was geschafft. Jetzt bewegen sich die 
Motoren flußig (außer bei GANZ kleine Geschwindigkeit, aber ist egal), 
und ich kann mit zwei Händen sie nicht halten.
Ich muß nur das ganze Programm jetzt noch anpassen, daß die eventuelle 
Korrekturen gemacht werden, aber das ist noch das kleinste...

Grüße
Luca Bertoncello

von STK500-Besitzer (Gast)


Lesenswert?

>Was ist torq?

die zu kurz geratene Version von "Torque" engl. für Drehmoment.

Open Loop ist eine Steuerung
Closed Loog ist eine Regelung.
Bei einer Steuerung wird die Drehzahl nur eingestellt und nicht gemessen 
bzw. nicht verwertet.
Bei der Regelung wird die Drehzahl eingestellt und gemessen. Weicht sie 
vom Sollwert ab, wird nachgeregelt.

Wie Peter schon schrieb: Deine Frequenzen sind unpassend gewählt.

von Luca B. (lucabert)


Lesenswert?

STK500-Besitzer schrieb:
>>Was ist torq?
>
> die zu kurz geratene Version von "Torque" engl. für Drehmoment.

Ach so!

> Open Loop ist eine Steuerung
> Closed Loog ist eine Regelung.
> Bei einer Steuerung wird die Drehzahl nur eingestellt und nicht gemessen
> bzw. nicht verwertet.
> Bei der Regelung wird die Drehzahl eingestellt und gemessen. Weicht sie
> vom Sollwert ab, wird nachgeregelt.

OK, dann implementiere ich eine Reglung...

> Wie Peter schon schrieb: Deine Frequenzen sind unpassend gewählt.

Ich bin dabei, die richtige Frequenz zu suchen.

Besten Dank
Luca Bertoncello

von Wilhelm F. (Gast)


Lesenswert?

Ich bin ja auch kein großer Freund und Kenner der Regelungstechnik. Da 
ich als Mikroelektroniker damit nie in Berührung kam. Irgendwann trifft 
es einen aber, und beginne, mich mit der Materie etwas zu befassen. Das 
ist wohl der einzige Ausweg bei solchen Angelegenheiten. Eine 
geschlossene Regelschleife.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Es ist ganz normal, dass ein Motor, der in der Drehzahl mit PWM 
abgeregelt wird, nicht mehr das volle Blockierdrehmoment bringt.
Für einen Permanentmagnetgleichstrommotor gilt näherungsweise:

1. Das Drehmoment ist direkt proportional zum momentan fließenden 
Motorstrom
2. Die Leerlaufdrehzahl ist direkt proportional zum eingestellten 
Pulsweitenverhältnes
3. Das Blockierdrehmoment (Drehzahl = 0) ist direkt proportional zum 
eingestellten Pulsweitenverhältnis

Daraus ergibt sich ein lineares Kennlinienfeld, in dem der Zusammenhang 
zwischen Drehzahl und Drehmoment von dem eingestellten 
Pulsweitenverhältnis abhängt.

Dieses Verhalten zeigt ein Permanentmagnetgleichstrommotor genauso wie 
eine konventionelle Gleichstromnebenschlussmaschine. Ob man das 
Pulsweitenverhältnis bei PWM verstellt oder mit einer verstellbaren 
Spannungsquelle versorgt, ist für das Motorverhalten fast egal. Das 
Verstellen des Pulsweitenverhältnisses ist gleichbedeutend mit dem 
Verstellen der Spannung im Konstantspannungsbetrieb.
Voraussetzung ist eine PWM-Frequenz, die hoch genug ist, dass sich der 
Motorstrom während einem PWM-Zyklus nicht zu stark ändert. Für kleine 
Motoren sind das üblicherweise einige 10 kHz. Zu niedrige Frequenz führt 
zu zu starkem Stromrippel und damit zu Drehmomentrippel, der als 
Vibration auf die Mechanik wirkt und je nach Frequenz auch Brummen oder 
Pfeifen erzeugt. Ist die Frequenz zu hoch, werden die 
Leistungstransistoren durch die Schaltverluste unnötig thermisch 
belastet. Bei viel zu hoher Frequenz (bei kleinen Motoren einige 100 
kHz) können die durch die Windungsinduktivitäten und Windungskapazitäten 
dargestellten Schwingkreise in Resonanz kommen, Motor und Transistoren 
können dann beschädigt werden.

Die Frequenz wählt man normal so, dass das Pfeifen wenig stört (also 
höher als die störendste Frequenz), aber nicht so hoch, dass dadurch die 
Transistoren zu warm werden.

Wenn man das Drehmoment regeln möchte, sollte man den Motorstrom regeln. 
Das macht man durch Verstellen der Spannung oder des 
Pulsweitenverhältnisses.
Wenn man die Drehzahl regeln möchte, verwendet man normalerweise 
zunächst einen Drehmomentregler wie oben und regelt die Drehzahl durch 
Verstellen des Drehmomentsollwertes.
Für beide Regler eignen sich PI-Regler gut.

Das volle Blockierdrehmoment wird unabhängig von der Frequenz mit 
geeigneter Regelung immer erreicht, denn die Regler stellen bis zur 
vollen Gleichspannung hoch, wenn das Moment nicht ausreicht. Dann ist 
immer eingeschaltet und es gibt daher keine Auswirkung der PWM mehr.


Grüße,

Peter

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.