Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM rückwärts
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"?
"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, 16: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
Hi Hessibaby
Wie meinst du das? Kannst du das bitte genauer erklären?
so:
Signalquelle o------------------o Servo
|
----------o µC
Mann oh mann, ASCII-Zeichnungen sind hier aber schwierig ...
ciao .. bernd
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.
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, 10: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, 10: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
Ich dachte Arne wollte das Signal nur bei Bedarf auf den Servo durchschleifen. Aber jetzt raten wir nur noch ... Mehr Input, bitte!
ciao .. bernd
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.
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.