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
Vielleicht eine dämliche Frage, aber wo genau nimmst Du in dem Schaltplan denn ne PWM bei der Ansteuerung? ENABLE_*? INPUT_*?
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
Hallo, sieh dir das mal an http://de.wikipedia.org/wiki/Pulsweitenmodulation dann solltest du deine Fragen selber beantworten können fz
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
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
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
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
PWM erlaubt constant torq. Du arbeitest sicher open loop Schliesse mal ein loop....dann haelst dt auch bei geringer Drehzahl den Motor nicht mehr.
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
>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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.