Hallo,
ich möchte den Pegel eines Signals (z.B. PWM) entsprechend anpassen.
Ein normales PWM-Signal sieht ja folgendermaßen aus:
5V ---- ----
| | | |
| | | |
0----- ----- -----
Nun möchte ich das Signal so anpassen, das der "Low-Pegel" nicht ganz
auf null geht, sondern noch einen gewissen Reststrom besitzt.
Also so:
5V ---- ----
| | | |
| | | |
1V ----- ----- -----
0----------------------------------
Wie kann man so etwas realisieren?
Gruß Max
@Max
> Nun möchte ich das Signal so anpassen, das der "Low-Pegel" nicht ganz> auf null geht, sondern noch einen gewissen Reststrom besitzt.
a) wieso?
b) Ein PWM Signal hat keinen RestSTROM, bestenfalls eine Offsetspannung.
MfG
Falk
>> a) wieso?
Möchte einen Servomotor über PWM-Steuern. Klappt soweit schon ganz gut,
aber im nidrigen Drehzahlbereich hat der Motor keine Kraft.
>> b) Ein PWM Signal hat keinen RestSTROM, bestenfalls eine Offsetspannung.
Ja, hast Recht. Offsetspannung wäre das richtige Wort gewesen. So etwas
suche ich aber. Hab gelesen das könnte man über eine
NPN/PNP-Transistor-Kombination machen.
Doch der Aufbau ist mir nicht ganz klar. Vielleicht kann mir das einer
kurz erklären?
@Max
> Möchte einen Servomotor über PWM-Steuern. Klappt soweit schon ganz gut,> aber im nidrigen Drehzahlbereich hat der Motor keine Kraft.
Und wieso glaubst du, dass durch den Spannungsoffset im PWM Signal der
Servo dann Kraft hat?
> Doch der Aufbau ist mir nicht ganz klar. Vielleicht kann mir das einer> kurz erklären?
Ich denke du braucht keinen derartigen Offset. Bei der PWM ist das
Tastverhältnis der Informationsparameter, nicht die Spannung.
MfG
Falk
Der Spannungsoffset wird an Deinem Schalttransistor (oder womit auch
immer Du den Motor ansteuern willst) schön viel Verlustleistung
erzeugen. Ne PWM nimmt man doch grad deswegen, damit die Schaltelemente
nur "Volle Pulle" und "Null" abkriegen und außer beim Umschalten die
Verlustleistung sehr gering ist. Wenn Du nen Arbeitspunkt irgendwo
mittendrin wählst, haste im ungünstigsten Fall ne Heizung gebaut. Und
mehr Drehmoment kriegste nur durch mehr Strom, den Du über einen nicht
voll durchgeschaltetes Schaltelement aber wieder begrenzt und verheizt.
Wenn Du den Motor wirklich einigermaßen linear von 0...100% betreiben
willst, musste ne Drehzahlregelung spendieren, die das Tastverhältnis
der PWM entsprechend anpasst, um das erforderliche Drehmoment für die
jeweils gewünschte Drehzahl zu erreichen.
> Wenn Du den Motor wirklich einigermaßen linear von 0...100% betreiben> willst, musste ne Drehzahlregelung spendieren, die das Tastverhältnis> der PWM entsprechend anpasst, um das erforderliche Drehmoment für die> jeweils gewünschte Drehzahl zu erreichen.
Hört sich gut an! Wie muss ich da vorgehen?
Indem Du das Tastverhältnis nichtlinear veränderst (was nur dann
wirklich funktionieren kann, wenn die Last konstant ist) oder, wie oben
schon gesagt, mit einer Drehzahlregelung.
> Und wie bekomme ich es dann hin, dass der Servo bei einer niedrigen> Drehzahl mehr Kraft erzeugt?
Dazu müsstest du den Servo aufreissen und modifizieren. Vielleicht
reicht einfach eine etwas höhere Spannungsversorgung? Was für ein Servo
ist es denn?
MfG
Falk
Mein Posting von 15:16 bezog sich natürlich auf das von 15:13...
> Hört sich gut an! Wie muss ich da vorgehen?
Du musst die Drehzahl erfassen, eine Regeldifferenz (Sollwert - Istwert)
bilden, die Regeldifferenz über einen entsprechenden Regelalgorithmus
(PI-Regler wäre in so einem Fall ratsam) in ein PWM-Tastverhältnis
umwandeln und ausgeben. Das ist mit einem µC im Prinzip recht einfach,
das größte Problem dürfte die Erfassung der Drehzahl (Istwert) sein...
Wenn das zu kompliziert ist (was ich aufgrund der Fragestellung mal
vermute), kannst Du wie gesagt das Tastverhältnis nichtlinear ändern
(also bei niedriger Drehzahl mehr Spannung draufgeben, im Prinzip deinen
Offset digital erzeugen). Das ist zwar keine sonderlich präzise Lösung
(gerade bei sehr geringen Drehzahlen), aber immer noch besser, als
Transistoren zu Heizkörpern zu degradieren und dabei nicht mal den
gewünschten Effekt erzielen...
@johnny.m
> Du musst die Drehzahl erfassen, eine Regeldifferenz (Sollwert - Istwert)>bilden, die Regeldifferenz über einen entsprechenden Regelalgorithmus
Gehts nicht um Servos?
MfG
Falk
Gut, dann werde ich mal die Variante mit dem Regler angehen. Werd ich
schon irgendwie hinbekommen. Von nix kommt nix ;-)
> Das ist mit einem µC im Prinzip recht einfach,> das größte Problem dürfte die Erfassung der Drehzahl (Istwert) sein...
Wie erfasse ich denn die Drehzahl am besten?
So,
das mit dem Regler ist soweit klar! Hab ich verstanden und den Code auch
schon soweit umgesetzt.
Nun hat jonny oben geschrieben, das schwierigste wäre die Erfassung des
Istwertes, also der Drehzahl. Ist denn aber der geregelte Wert, den ich
dem PWM Signal am Ende der Regelung zuweise, nicht dann meine Drehzahl?
Oder hab ich da nen Denkfehler?
@Max
> das mit dem Regler ist soweit klar! Hab ich verstanden und den Code auch> schon soweit umgesetzt.
Du bist ja von der schnellen Sorte ...
> Nun hat jonny oben geschrieben, das schwierigste wäre die Erfassung des> Istwertes, also der Drehzahl. Ist denn aber der geregelte Wert, den ich> dem PWM Signal am Ende der Regelung zuweise, nicht dann meine Drehzahl?
Oder auch nicht. ;-)
Nein, dein PWM Signal ist die Stellgrösse, aus der die Regelstrecke
(Motor) dann hoffentlich die gewünschte Drehzahl macht. Da das aber
Last- und drehzahlabhängig ist, wird die Drehzahl nochmal explizit
gemessen und ggf. die Stellgröse angepasst.
Regelungstechnik versteht man nicht mal so hoppla hopp.
MfG
Falk
Ok, kapiert!
Das heißt ich müsste eigentlich erstmal die Sprungantwort der
Regelstrecke(Motor) messen. Anhand derer entscheide ich, was ich für
einen Regler verwende.
Die Drehzahl bestimme ich dann z.B. über einen Drehzahlmesser, der am
Motor hängt. Dieser Wert wird A/D gewandelt(falls nötig) und im Programm
vom Mikrocontroller alls Istwert verwendet.
Dann muss ich den Regler dimensionieren bzw. die Parameter richtig
einstellen.
Dachte noch drüber nach vielleicht mit Matlab Simulink diesen Regelkreis
zu simulieren um so die einigermaßen optimale Parameter zu finden. Dann
noch ein Bodediagramm um die Stabilität festzustellen und dann müsste
das doch eigentlich passen.
Soweit alles richtig?
Man kann alles übertreiben... Für Dein Servomotörchen brauchste sicher
keine Sprungantwort zu messen und auch kein Bodediagramm, es sei denn,
Du hast irgendwas bestimmtes vor. Abgesehen davon wirst Du allein aus
der Messung der Sprungantwort sicher nicht alle Parameter der
Regelstrecke ermitteln können, die Du für eine Simulation benötigst.
Bau Dir einfach nen PI-Regler (bzw. nen PI-Algorithmus im Controller,
was recht einfach ist) und spiel ein wenig mit den Parametern
(Nachstellzeit, Verstärkung) rum, bis es passt. Das sollte für einen
Experimentalaufbau mit einem Standard-Motor dicke reichen.
Kann ich den Istwert eventuell irgendwie umgehen, wenn ich im Moment
keinen Drehzahlmesser oder ähnliches zur Hand habe. Was gibt es da für
Möglichkeiten?
> Abgesehen davon wirst Du allein aus> der Messung der Sprungantwort sicher nicht alle Parameter der> Regelstrecke ermitteln können, die Du für eine Simulation benötigst.
Was wäre dazu denn noch nötig?
@Max
> Soweit alles richtig?
Ja.
> Kann ich den Istwert eventuell irgendwie umgehen, wenn ich im Moment> keinen Drehzahlmesser oder ähnliches zur Hand habe. Was gibt es da für> Möglichkeiten?
uhhhh, und schon wieder verrissen. :-(
Regelung ohne ISTwert ist keine Regelung.
MfG
Falk
P.S. Und der ganze Aufwand nur wegen eines falsch
ausgewähltem/dimensioniertem Servo?