RC-Auto per PWM Wie einstellen?

Gast #968745
Lesenswert?

Hallo nochmal,

hat einer von euch vielleicht Erfahrung im Erzeugen von PWM Signalen mit 
dem AT91sam7a3-ek oder ähnlichem?
Wahrscheinlich ist das hier eh eine eher allgemeine Frage:

Ich versuche ein RC-Auto per PWM Signal vom EK zu steuern. Leider kenn 
ich mich mit der RC-Technik noch nicht wirklich aus.

Für die Geschwindigkeitsregelung habe ich folgendes gemessen (per Oszi):

PWM Signal mit ca 19.3ms Periodendauer
Im Ruhezustand hat das Signal eine Pulsweite von 1.5ms
Ganz rechts sind es dann 1ms und ganz links 2ms.

Wenn ich also die Geschwindigkeit per PWM regeln will, müsste ich also 
das oben erwähnte Signal nachbauen mit dem PWMC und dann die Pulsweite 
von 1ms bis 2ms modulieren.

Ich weiss nur leider nicht, wie ich das jetzt auf dem AT91sam7a3-ek 
mache. Wie stelle ich die Periode ein? wie die Pulsweite?
Ich muss das ja alles irgendwie in Werte umrechnen mit denen der PWMC 
was anfangen kann.
Was nehm ich denn da für Werte?

Danke schonmal für eure Hilfe. Alle meine Rechenversuche sind bisher 
fehlgeschlagen und habe nur zu merkwürdigen Signalen geführt.

Gruß

Sebastian

P.S.: Bilder vom Oszilloskop in Ruhestellung hängt an.
Angehängte Dateien:
Gast #968828
Lesenswert?

>Ich weiss nur leider nicht, wie ich das jetzt auf dem AT91sam7a3-ek
>mache. Wie stelle ich die Periode ein? wie die Pulsweite?

Ich weiß leider nicht, wie der ARM arbeitet, aber auf dem AVR (und 
anderen 8bitter) lässt man einen Timer laufen, der nach 20ms von vorne 
anfängt zu zählen. Bei diesem Überlauf wird ein Ausgang auf 1 gesetzt 
und sobald ein bestimmter Wert, der die Pulslänge repräsentiert, 
erreicht wird, wird der Ausgang auf 0 gesetzt.
Diverse Beispiele findet man hier im Forum mit Hilfe der Suchfunktionen 
(es gibt davon zwei...)

Die Einhaltung 20ms ist übrigens egal. Die Pause kann beliebig lang 
sein.  Die Zeit ist historisch durch irgendeinen 
Funkfernsteuerhersteller geprägt. Ein komplettes Telegramm wird mit 
einer Wiederholfrequenz von 50Hz gesendet (das sind pi*Daumen 20ms 
Periodendauer...).

Ergo: auch ein ARM müsste irgendwie einen Timer laufen lassen können und 
auf bestimmte Werte dieses Timers reagieren können. Beim AVR kann man 
das sogar fast vollständig von der Hardware machen lassen.
Gast #968837
Lesenswert?

Danke schon mal für die Antwort. Habe das Signal jetzt soweit 
nachgebaut.

Mir ist schon klar wie ich die Werte letztenendes auf dem Board 
einstelle.
Nur nicht genau, welche Werte.

Per Trial-And-Error und ein bisschen rechnen bin ich jetzt auf folgende 
Werte gekommen.

Als Frequenz habe ich 52Hz eingestellt.
Damit komme ich in etwa auf eine Periodendauer von 20ms.

Wenn ich jetzt einen Dutycycle von 46 Einstelle komme ich auf das Signal 
für die Grundstellung.

Allerdings ist so die Auflösung extrem gering. Das Register für den 
Dutycycle nimmt nur ganzzahlig Werte an.

47 entspricht dann "VOLL RECHTS" und 45 "VOLL LINKS"

Damit wäre mir nur Vollgas oder Vollgas rückwärts möglich.
Gast #969553
Lesenswert?

>Wenn ich jetzt einen Dutycycle von 46 Einstelle komme ich auf das Signal
>für die Grundstellung.

>Allerdings ist so die Auflösung extrem gering. Das Register für den
>Dutycycle nimmt nur ganzzahlig Werte an.

>47 entspricht dann "VOLL RECHTS" und 45 "VOLL LINKS"

Dann scheint deine Grundfrequenz etwas zu niedrig zu sein...

Abschnitt 32.5 im (preliminary) Datenblatt sollte für dich interessant 
sein...
Gast #975689
Lesenswert?

Kommt es denn genau auf die 20ms Periodendauer an oder kann die auch 
kleiner sein? Denn wenn ich die Frequenz erhöhen - und damit die 
Periodendauer verkürzen - würde, dann steigt ja die Auflösung.
Gast #976020
Lesenswert?

>Kommt es denn genau auf die 20ms Periodendauer an oder kann die auch
>kleiner sein? Denn wenn ich die Frequenz erhöhen - und damit die
>Periodendauer verkürzen - würde, dann steigt ja die Auflösung.

Wie oben schon geschrieben: die 20ms sind nicht wirklich genau 
einzuhalten.
Wie groß (in Bit) ist denn deine Auflösung?
Wenn man 16bit und einen Takt von 1MHz hat/nimmt, dann geht das 
problemlos.
Gast #976208
Lesenswert?

Hi, ich habs jetzt geschafft die auflösung  zu erhöhen. Aber jetzt 
stellt sich mir ein neues Problem. Das ist aber was ganz anderes, 
deshalb poste ich es in einem neuen Thread.

Danke allen die mir geholfen haben. Ihr seit klasse!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren