www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RC-Auto per PWM Wie einstellen?


Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus R. (klaus2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@STK500-Besitzer: Ich versuche das nicht über Timer zu machen sondern 
über den PMW-Generator, den der AT91 eingebaut hat.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Graupner-"Standard" sind uebrigens 22.5ms, als ca. 45Hz.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, aber kann mir denn jemand sagen wie ich die Auflösung erhöhen kann?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR haben auch einen PWM-Generator eingebaut, der allerdinsg teil der 
Timer ist...

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.