Hallo! Ich möchte eine Servomotor mit einem PWM signal ansteuern Ich habe den PWM so konfiguriert, dass die Frequenz ca 60 Hz beträgt Nun möchte ich wissen wie ich die Einschaltzeit(tein) berechnen kann. mfg
Daniel Lauß schrieb: > Ich möchte eine Servomotor mit einem PWM signal ansteuern Meinst Du ein Modellbauservo oder einen der mindestens tausend verschiedenen anderen Servomotoren?
Daniel Lauß schrieb: > Nein ich brauche den Compare Wert den ich OCR1A zuweisen muss Ja und genau dafür braucht man zuerst das Datenblatt des Servos, denn dazu muß man wissen, was der eigentlich haben will. Ohne Eingangsgrößen kann man nix berechnen, das sollte doch wohl jedem klar sein. Nur dir scheinbar nicht...
Es ist ein Modellbauservo Die Eingangsspannung ist 5V und die Steuerspannung = auch 5V Der Winkel ist 180° mfg
Steht doch da, 1,5ms neutral, links und rechts davon +/- 0,4ms. Was das für Deinen OCR0A bedeutet kann man ohne weitere Angaben nur raten.
Daniel Lauß schrieb: > Es ist ein Modellbauservo > > Die Eingangsspannung ist 5V > und die Steuerspannung = auch 5V > > Der Winkel ist 180° Und das ist alles wirklich völlig unwichtig für dein Problem und es stimmt nicht einmal, denn lt. dem Datenblatt, was du gepostet hast, kann der Servo keine 180°, sondern nur 90°. Kannst du nichtmal einfachste technische Zeichnungen lesen? Was wirklich wichtig ist, sind diese Angaben aus dem Datenblatt: 1500µs Pulslänge für Neutralstellung 40° Auslenkung entsprechen 400µs Änderung der Pulslänge +-45° beträgt die maximal mögliche Auslenkung Mittels Mathematik der 4.Klasse (Dreisatz/Verhältnisgleichung) bekommt man spielend heraus, daß für die maximale Auslenkung 450µs Pulslängenänderung nötig sind. x 400 -- = --- 45 40 400 * 45 x = -------- 40 x = 450 Und mittels Mathematik der 2. Klasse (Addition/Subtraktion) bekommt man dann heraus, daß man Pulslängen zwischen 1050 und 1950µs generieren muß. 1500 - 450 = 1050 1500 + 450 = 1950 Am besten ein bissel Auf- bzw. Abrunden und es ergibt sich der für Modellbauservos übliche Bereich von 1..2ms. Und dann wieder mittels Dreisatz die OCR-Werte für diese beiden Fälle berechnen. Das kann ich dir leider nicht vorexerzieren, weil du nicht geschrieben hast, wie genau du den Timer zu seinen 60Hz Zykluszeit bewegt hast. Irgendwie hast du aber, implizit oder explizit, den maximalen Zählumfang des Timers vorgegeben. Den nennen wie mal N. N entspricht nun nach deinen Angaben 1/60s, also rund 16,7ms. Und damit bist du dann wieder beim Stoff der 4.Klasse, Verhältnisgleichung/Dreisatz. Die OCR-Werte für die gewünschte Pulsweite verhalten sich nämlich zu N wie die gewünschte Pulszeit zur Zykluszeit. Für den Fall mit 2ms gilt also: x 2 - = ---- N 16,7 2 * N x = ----- 16,7 Kriegst du das für 1ms jetzt alleine hin?
Ich habe meine werte zwar etwas anders berechnet aber egal welche wert ich einsetze der Motor lenkt immer nur in eine richtung aus
c-hater schrieb: > Und mittels Mathematik der 2. Klasse (Addition/Subtraktion) bekommt man > dann heraus, daß man Pulslängen zwischen 1050 und 1950µs generieren muß. > > 1500 - 450 = 1050 > 1500 + 450 = 1950 Und wie bringst du das mit der Datenblattangabe
1 | Operating Angle: 40° one side pulse traveling 400usec |
2 | Direction: Clockwise/Pulse Traveling 1500 to 1900usec |
in Einklang? Da steht weder etwas von 45° noch von Pulsdauern über 1900µs. Diesen spezifizierten Bereich sollte man tunlichst einhalten, wenn man den Aufbau des Servos nicht ganz genau kennt. Falls der Motor dort mechanische Anschläge hat, kann der bei Überschreitung der Spezifikationen heiß laufen.
Mike schrieb: > Und wie bringst du das mit der Datenblattangabe >
1 | Operating Angle: 40° one side pulse traveling 400usec |
2 | > Direction: Clockwise/Pulse Traveling 1500 to 1900usec |
> in Einklang?
Das brauche ich nicht, denn das steht damit in Einklang.
Dein Probem ist bloß, daß du nicht verstehst, was der Chinese da
eigentlich geschrieben hatte, was aber nach der lausigen Übersetzung
in's englische nur noch mühsam zu erahnen ist.
Da steht eigentlich folgendes:
-40° Änderung der Auslenkung entsprechen 400µs Änderung der Pulselänge
-Die Sache bewegt sich in Uhrzeigerrichtung, wenn man die Pulselänge
erhöht,
z.B. von 1500 auf 1900µs
Mit der ersten Angabe habe ich gerechnet und die zweite spielte für die
Berechnung keine Rolle.
Und was die +-45° angeht, das sagt die Zeichnung. Wie so oft
aussagekräftiger als Worte und das gilt in diesem Fall einer schlechten
Übersetzung natürlich erst recht.
Hast du das Resultat deiner Werte und Software auch per Oszilloskop überprüft? Ein normales Modellbauservo steht bei einem PWM Signal von 1.5ms mit 50Hz(20ms) auf 0°. 1ms bzw. 2ms sind der jeweilige max. Ausschlag (+/-45°). Je nach Hersteller, mech. Ausführung lässt sich das noch etwas übersteuern. Modellbauempfänger arbeiten idR mit Signalen im Bereich von 0.8-2.2ms. Bei "falschen" Signalen kann ein Servo alles mögliche tun. Von Abbrennen der H-Brücke, über unkontrolliertes Zucken, systematischem Offset bis zum nächsten Powercycle, nichts tun, fahren in einen Endanschlag, kurzes Zucken,... kann eigentlich alles vorkommen.
Da man 60Hz auf unterschiedlichem Weg erreichen kann lässt sich alleine daraus nicht ableiten, welche Werte OCR1A haben sollte. Glaskugel auspack. Das ist ein 16-Bit Timer? Der Takt des Controllers sind 16 MHz? Mode 7? Prescaler ist auf 256 eingestellt? Der Takt des Controllers sind 16 MHz? Dann wären die Werte für OCR1A: 69 - Links 94 - Mitte 119 - Rechts Mode 14? Prescaler auf 8 eingestellt? ICR1 auf 33333 gesetzt? Dann wären die Werte für OCR1A: 2200 - Links 3000 - Mitte 3800 - Rechts ...
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.