PWM Berechnung

Hi,
für ein UniProjekt sollen wir Servos mit pwm manuell steuern. Für die Berechnung des pwm-Wertes hab ich schon öfter folgende Formel gefunden.

pwm = (pos * 11)+500

pos ist dabei der Wert den wir über einen Joystick einlesen. Wir denken das die 500 von der Frequenz kommt aber die * 11 können wir uns nicht erklären.

Kennt jmd die Formel und kann sie uns erklären?

Vielen Dank

Handelt es sich um Modellbau-Servos? Die werden nicht wirklich per pwm-Signal gesteuert. Das Steuersignal hat zwar Ähnlichkeit mir einem PWM-Signal, wenn man es auf dem Oszi anschaut. Für den Servo ist aber nur die Breite des Impulses wichtig, die muss nominel zwischen 1...2ms liegen ( die meisten Servos verstehen auch einen etwas größeren Bereich. Die Wiederholfrequenz liegt bei 50Hz, ist aber weniger kritisch und kann auch höher sein. Aber auch bleiben die Werte für die Pulsbreite konstant. Für einen Servo ist also NICHT das Puls/Pause verhältnis massgebend ( wie das bei einem klassischen PWM-Signal ist. Mit der Formel kann ich daher im Zusammenhang mit einem Servo nichts anfangen.

Industrielle Servomotore arbeiten ganz anders, und bestehen üblicherweise aus einem DC-Motor und einem Positionssensor.

Worum geht es also?

Hallo,

die Frage lautet wo hast du die Formel gefunden und in welchen Zusammenhang? Die Variable pwm kann für sonstwas stehen. Auch weiß niemand was die Variable pos darstellt?

Wenn man mal blauäugig pos als Winkel annimmt, dann wäre das Ergebnis zwischen 0° und 180° dann 500 bis 2480. Sollten dann µs sein. Mit den Werten ist ein normales Servo mehr als ausgereizt und fährt sicherlich in die mechanische Begrenzung. Wenn man die Winkelwerte begrenzt käme es hin. Nur finde ich die Formel dennoch etwas seltsam ohne den Hintergrund dafür zu kennen.

pos ist dabei der Wert den wir über einen Joystick einlesen

Das ist üblicherweise 0-1023, damit ist das Ergebnis der Formel 500-11753...das ergibt keinen Sinn.

Oder vielleicht 0-255, damit ist das Ergebnis der Formel 500-3305...das ergibt auch keinen Sinn.

Folglich führt deine Fragestellung zu keinem sinnvollen Ergebnis. Daher muss das Problem bei der Fragestellung liegen: Du hast bisher zu wenig Informationen geliefert.

Unsere Glaskugel ist noch trüb...

Lieben Gruß, Chris

Hallo,

sorry ich muss mich mal wieder über Studenten wundern, da gibt es Internet und Wikipedia und wo man alles mögliche finden kann, man muss halt nur ein bischen suchen. Wie haben wir das eigendlich vor 40 Jahren gemacht. ?

link

So den Rest musst Du jetzt aber selber machen, ich benutze dafür eine Lib

Heinz

Wir haben uns Bücher gekauft (auf Papier) und haben so lange gelesen und probiert, bis es funktionierte und wir es vor allem [u]verstanden[/u] hatten warum es so und nicht anders funktionierte.

Die resultierende "neue Qualität" siehst Du doch ständig in den Führungsetagen. Ich habe aber gerade im IT Bereich auch wirklich gute Absolventen erlebt. Die konnten aber ein Thema auch selbstständig bearbeiten.

Gruß Tommy

Tommy56: Wir haben uns Bücher gekauft (auf Papier) und haben so lange gelesen und probiert, bis es funktionierte und wir es vor allem [u]verstanden[/u] hatten warum es so und nicht anders funktionierte.

drum hieß es ja auch studieren und nicht kopieren ;)

aber selbst der Duden hat darauf eine erste Antwort die mich zweifeln lässt???

studieren = eine Hochschule besuchen link

man muss schon etwas weiter lesen um ....

Gruß Heinz

Typhonn353: für ein UniProjekt sollen wir Servos mit pwm manuell steuern. ...

Guck hier.

Gruß

Gregor

Die Formel hab ich von diesem [https://forum.arduino.cc/index.php?topic=90668.0]Beitrag[/url]

Die Formel hab ich von diesem [https://forum.arduino.cc/index.php?topic=90668.0]Beitrag[/url]

Is das jetzt alles was du bringst? Ein misslungener Versuch einen Link reinzustellen? Da muss jetzt von dir schon n bischen mehr kommen!

Hallo,

die Formel ist nachwievor ohne Zusammenhang. Denn der damalige TO vom Link hatte ja auch leider nur irgendwas zusammengeschustert was nicht funktionierte. Also kann man das mit Sicherheit nicht als Grundlage für irgendwas verwenden.

Für dich. Du kennst von deinem Joystick die eingelesenen Werte. Liegen ja zwischen 0 und 1023. Du weißt spätestens jetzt das Servos Pulsbreiten zwischen 1 und 2ms mögen. Das einlesen und umrechnen wirst du sicherlich auf die Reihe bekommen. Mehr ist das nicht. Falls noch nicht entdeckt, die IDE bringt zwei Bsp. mit.

Wenn Du schon aus irgendwelchen Sketchen etwas entnimmst, solltest Du wenigstens auch die Kommentare lesen, wenn sie denn schon vorhanden sind:

  //Winkel in Mikrosekunden umrechnen
  pwm = (pos * 11) + 500;

pos steht also für einen Winkel - üblicherweise von 0-180° ( wobei das nur wenige Servos wirklich können). Das Ergebnis soll also die Pulsbreite für den Servo in Mikrosekunden sein. Aber den Bereich können auch die wenigsten wirklich nutzen. Du solltest dich erstmal mit den Grundlagen der Servo-Ansteuerung befassen, bevor Du an die Programmierung gehst.

https://www.mariolukas.de/2011/08/arduino-servo-tutorial/?unapproved=33175&moderation-hash=0d44f512dbe7108ef21c1ec0b986ccb4#comment-33175

Hier kommt der Code ursprünglich her. Da steht leider nicht woher der Faktor 11 kommt.

Da steht leider nicht woher der Faktor 11 kommt.

Das kann ich dir sagen!

Die Formel entspricht der Geradengleichung. Die sollte man aber eigentlich schon kennen, bzw. auf 100m Entfernung riechen können. Also frage ich mich: Was geht denn sonst noch so durch die Lappen?

Der Faktor 11 ist nur gerundet. Exakt müsste der Faktor 11,111111111 sein. Woher ich das weiss? Ich kann rechnen.

Ich bin so frei und nenne dir mal die Eingabe und Ausgabegrößen. Die Formel darfst du dann alleine umstellen. Winkelbereich 0-90 Servo uS= 500-1500

Das kannst du aber auch genauso gut mit map() machen.
Und du kannst das auch auf deinen Joystick umbauen. Da sind die Joystickwerte dann üblicherweise 0-1023