Forum: Mikrocontroller und Digitale Elektronik Sevo mit PWM ansteuern


von Daniel Lauß (Gast)


Lesenswert?

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

von Sina A. (sinapse)


Lesenswert?

man siehe ins datenblatt des servos?

von Daniel Lauß (Gast)


Lesenswert?

Nein ich brauche den Compare Wert den ich OCR1A zuweisen muss

von Harald W. (wilhelms)


Lesenswert?

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?

von c-hater (Gast)


Lesenswert?

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...

von Daniel Lauß (Gast)


Angehängte Dateien:

Lesenswert?

Es ist ein Modellbauservo

Die Eingangsspannung ist 5V
und die Steuerspannung = auch 5V

Der Winkel ist 180°

mfg

von Rudolph (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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?

von Daniel Lauß (Gast)


Lesenswert?

Oke danke für die antwort

von Daniel Lauß (Gast)


Lesenswert?

Ich habe meine werte zwar etwas anders berechnet aber egal welche  wert 
ich einsetze der Motor lenkt immer nur in eine richtung aus

von Mike (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von -- (Gast)


Lesenswert?

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.

von Rudolph (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.