PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM rückwärts



Arne
18.01.2005, 13:52
Hallo,

ich möchte das Servo Signal auslesen. Wie kann das gehen?
Oder gibt es eine Möglichkeit ein ankommendes PWM Signal bei Bedarf "durchzuschleifen"?

RCO
18.01.2005, 14:58
"durchzuschleifen"?

Was meinst du damit?
Der einfachste Weg wäre vermutlich, einen Kondensator und ein par Widerstände dran zu hängen und das Signal über den Analog-Port einzulesen. Ob man die einzellnen Zeiten (An/Aus) bestimmen kann, hängt denke ich maßgeblich von der Frequenz des PWMs ab.
Am besten würde man das wohl über 2 Interrupts machen.
Allerdings einmal bei steigendeer und einmal bei fallender Flanke.
Ein Timer wird dann ausgelesesen. Im besten Fall brauchst du ja garnicht viel zu rechnen, sondern kann je nach Einstellung des PWMs und des Timers direkt den Timerwert übenehmen.
Wie genau muss das denn sein?

MFG Moritz

Hessibaby
18.01.2005, 15:38
Hi Arne,
Hi Moritz,
sicher kann man Servosignale auslesen. Da man zwei Eingänge bekanntlich parallel legen darf kannst Du direkt an einen digitalen Eingangsport gehen.

Gruß Hartmut

19.01.2005, 16:11
Hi Hessibaby
Wie meinst du das? Kannst du das bitte genauer erklären?

bhm
19.01.2005, 16:28
so:



Signalquelle o------------------o Servo
|
----------o µC

Mann oh mann, ASCII-Zeichnungen sind hier aber schwierig ...
ciao .. bernd

19.01.2005, 16:57
Hallo,
das ist schon klar, ich möchte das Signal aber nur bei Bedarf durchschleifen. Bitte jetzt kein Relais vorschlagen, dass über einen anderen Port gesteuert wird.

bhm
19.01.2005, 22:40
hmm, ich glaube jetzt verstehe ich:
Du hast eine Signalquelle für das Servosignal und das soll bei Bedarf an den Servo weitergegeben werden oder auch nicht. Ist das richtig?

Klaus_0168
20.01.2005, 09:02
Hi Arne,
für diese Art von Messaufgaben gibt es die Torschaltung (heißt wirklich so).
In diesem Fall müssen Pulsweiten von 0.9 bis 2.1 ms gemessen werden. Da empfehle ich eine Frequenz im Bereich von 100kHz dessen Pulse für die Dauer des Highpegels des Servosignals gezählt werden. Die Anzahl der gezählten Impulse ist ein Maß für die Impulsdauer.

Ich hoffe, das dies hilft
mfG Klaus

Hessibaby
20.01.2005, 09:46
Hi,

wenn Du das Signal nur bei Bedarf auslesen willst nimm doch eine UND-Schaltung (z.B. SN74xx00) lege an einen Eingang dein Signal und an den anderen das Enable .

Gruß Hartmut

bhm
20.01.2005, 15:55
Ich dachte Arne wollte das Signal nur bei Bedarf auf den Servo durchschleifen. Aber jetzt raten wir nur noch ... Mehr Input, bitte!
ciao .. bernd

Arne
21.01.2005, 12:33
Hallo,

danke für die Antworten.
Ich schildere das Problem mal genauer. Mein Roboter (eigentlich ein altes Modellauto) wird primär vom AVR gesteuert. Nun will ich meinen Roboter aber auch noch per Fernsteuerung steuern.

Was ich mir dazu überlegt habe:
Meine Fernsteuerung liefert ein 7 Kanal serielles PPM Signal (NE5044).
Sprich der Empfänger empfängt irgendwo das PPM Signal auch.
Das serielle Signal besteht nur aus zusammengesetzten PPM-Signalen ein "Komma" von 0.3 ms und einen Rest der den String auf 25ms Gesamtaussendung bringt.
Dieses wollte ich ursprünglich dekodieren.
Nun habe ich aber eine viel bessere Idee. Ich möchte selber einen seriellen PPM String erstellen und diesen dann statt des NE5044 anschliessen.
Versucht habe ich bereits die einzelnen PPM Signale des Mega16 an die einzelnen Eingänge des NE5044 zu schliessen. Das klappte leider nicht.

Kennt jemand vielleicht einen IC der genau dies macht, einzelne PPM Signale in einen String zu formen?
Oder hat jemand einen Code, dass der AVR dies macht?
Versuche schon selbst dergleichen zu programmieren, bin aber eher Anfänger in Bascom und die Timer-Funktion ist ... :-)

Vielleicht kann mir ja jemand Tipps geben, ,bin für alles dankbar.

bhm
29.01.2005, 02:25
sorry for delay ...
So ganz habe ich es noch nicht verstanden, insbesondere verstehe ich nicht den Zusammenhang von Strings und PPM (=PWM??). Wie sehen die einzelnen Zeichen im "String"/Datenfluss aus? Unterschidliche Pulsweite bei gleicher Frequenz? Und welche Frequenz? Wie lange ist jedes "Zeichen"?
Evtl ist es besser/einfacher das nicht über die PWm-Funktion der Timer zu machen, sondern nach Programm eine Port ein/ausschalten. Wenn der Rechner sonst nix zu tun hat sollte das bei nicht zu großer Frequenz gut und einfach gehen: Einen timer zur Zeitmessung benutzen (interrupt) und in einer Tabelle die Zeiten für Signalwechsel hinterlegen. Hauptprogramm vergleicht soll- mit ist-Zeit und schaltet dann den Port ein/aus. 20 Zeilen Quelltext, ohne Tabelle.
ciao .. bernd