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.
die pulsweite ist servosignalkonform. such mal bei google, ungefähr: periode 20ms, 0.8ms min, 2.2ms max wenn du den uC nicht programmieren kannst, bekommst du eh noch mehr probleme, vorkauen hilft da nicht -> tutorial datenblatt lernen Klaus.
>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.
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.
@STK500-Besitzer: Ich versuche das nicht über Timer zu machen sondern über den PMW-Generator, den der AT91 eingebaut hat.
Ja, aber kann mir denn jemand sagen wie ich die Auflösung erhöhen kann?
>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...
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.
>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.
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!
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.